Last year, I taught myself the basics of writing Interactive Fiction using Inform 7. I did it to create one of the pieces of bonus content for Azrael's Stop, a short game called Dreamscape. A couple weeks ago, Sara Thacher and Lorraine Hopping expressed interest in the process of doing so, so I thought I'd write a little post. What is Inform 7?
For those who don't know, Interactive Fiction is the term used to describe story/games like the classic old text adventure games, like Zork. Rather than using a graphic interface to play a video game, it was all text based -- the game would say "You find yourself in a room. A door leads north." and you would type in "go north" (or just "n" for those who knew the shortcuts). And you would type "examine sword" and "use sword on troll" and "attack troll" and "tie rope to railing" and "climb down rope" and things.
Inform 7 is a natural language programming language for creating Interactive Fiction. That is, it's a tool specifically designed for people like me to use to write games/stories like Zork. It's incredibly intuitive, though still requires a lengthy guidebook, and that guidebook is very comprehensive and well-laid-out. The fact that it uses so-called natural language means that I can type a line of code that says "The Pantry is a room west of The Kitchen." and it will know to create two rooms, one called The Pantry and one called The Kitchen, and make it so that if I'm in the Kitchen and type "go west" I will end up in the Pantry.
So basically, it's pretty cool.
Creating Interactive Fiction with Inform 7
Sara was most interested in the actual process of learning Inform 7 and how it shaped what I made. It's an incredibly versatile language, from what I saw of it. Anything you could want to do in an interactive fiction game, you can figure out a way to make it happen using Inform 7. The documentation is extensive -- there's both a guidebook, Writing With Inform, which teaches you from basics to advanced functions how to use Inform 7. The Recipe Book is organized by what the author wants to accomplish, making it a good reference in the middle of programming.
It does make for a learning curve, though. You certainly can't just jump in and expect everything to work -- or expect to know how to do everything you want. There are a lot of possibilities, and a lot to learn.
When I wrote with it, I was trying to create something pretty specific, but pretty small. I learned the basics, and then any advanced function I needed, I figured out as I worked. The resulting game certainly isn't very complex as far as Interactive Fiction goes, and it made for some very frustrating moments for me as I tried to figure out how to do something I thought should be simple, but overall worked pretty well.
I would recommend spending as much time as possible learning the language and practising with simple test games before launching into the main thing. You know, that structure and patience that I don't have. (I just wanna make it!)
It's important to remember that even if Inform 7 uses natural language, it is still a programming language. It is not a human. It requires a very specific syntax to understand what the hell you're talking about, and yes, a misplaced semicolon can cause a huge error that leaves you searching through lines of code for an hour until you realize how stupid it was that you missed a semicolon just there.
Inform 7 made me appreciate my programming friends a little more.
So it's nice, and it's pretty easy to figure out for all its natural languageness, but it's still a programming language.
Shaping What I Made
Most of the interactive fiction I had experience with going into it was Zork, so I think that influenced what I made more than anything. But I know there's a ton of amazing Interactive Fiction out there that completely turns those kinds of expectations on their heads -- and they can be made with Inform 7. Nothing inherent in the language made me do things a certain way, I don't think, unless it was simply that to do something more required learning a new part of the language that I didn't have the time for.
Using Inform 7 With Transmedia
I wrote a post back then about how Interactive Fiction is like transmedia in some ways, and how it could be used, but I want to look at that a bit more. IF is a great tool, and can make for some cool storytelling or gaming for sure. It can add a level of interactivity to a project that doesn't exist otherwise. One of the things I see some neat potential with is just exploration -- create a textual version of your world and let the player explore it to discover the places and the people and the history and all that in a way that doesn't come naturally in the story itself. A sort of interactive wiki.
The problem, I think, is this: Interactive Fiction is a very niche form, and people with no experience with IF may have a hard time understanding what they're supposed to do -- even if you explicitly explain how the game works. And they don't know the standard conventions of phrasing, which can lead to them trying things that should logically work but which the program doesn't understand. (Another issue with Inform 7 -- it has a lot of built-in commands (go, pick up, etc.) but inevitably there will be ones that seem perfectly natural to the player, which you'll have to write a specific response for.)
For use in an ARG or something, it would have to be completely natural for IF to appear in the story -- it can't be abstracted that I did with Azrael's Stop ("This is a new way to access the story! Have fun!"). For Perplex City, Andrea Phillips et al created a live performance IF game (two actually: Receda's Revenge and Receda's Revenge 2: The Revenge) in which the players thought they were playing IF but were actually getting live responses from the writers -- the point there, though, was that there was a reason the players were engaging with Interactive Fiction: "In the game, it was a sort of subterfuge for agents of a secret society to get information, as I recall," Andrea tells me. (Check out a chat log here!)
They probably also had a benefit wherein ARG types are likely the kinds of people who know Interactive Fiction and how to interact with it. Non-gamers, and non-oldschool-gamers, have (in my experience) a much more difficult time understanding how to understand Interactive Fiction and what they're supposed to do, even with explicit instructions.
So that would be my final thought on it. I think Interactive Fiction is fantastic, and Inform 7 an amazing tool to create it. But make sure you design what you're doing for your audience -- are they going to inherently know what to do? How resistant will they be to even taking the time to figure it out? How can you make it as natural as possible?
Otherwise, the possibilities are endless.
I'd be happy to answer any specific questions about my experience with Inform 7 as a total newb in the comments!