More Interactive Storytelling Today

A while back I wrote about InkleWriter, which is a web-based editor for Choose-Your-Own-Adventure stories. Since then I have tried out some other software such as Undum, Twine, and some IF languages such as Inform 7. I would like to just give a brief overview of the different options for writers interested in interactive storytelling, taking into account the ease-of-use and feature set.


Undum is like the big brother of InkleWriter. It is a JavaScript library that helps the user write CYOAs that are similar to Inkle, but also more advanced since you have the power of JavaScript and any JS libraries you would like to use. I encourage you to visit the website and play through at least some of the tutorial game. It explains what exactly Undum is and some of what it can do.

My main dislike of Undum is the fact that it uses JavaScript. I understand that this allows Undum to run fully in the browser, and JavaScript was probably a great language back in 1995, but I’ve done enough programming to know that JavaScript has a terribly painful syntax. All those braces, parenthesis, and semicolons everywhere just cause suffering for the average programmer. I suppose you could use something like CoffeeScript, which I would highly recommend, but because of this I would have to say that Undum is not for the writer who wants to make interactive stories easily. For that, use InkleWriter; it has most of the useful features, and it’s a million times easier.

Now that I’ve scared off all the script kiddies, if you’re some tough-as-perl programmer who eats regexes for breakfast, then you’ll probably love Undum. It does give the user a lot of control over how their story is formatted and printed, and you can use JavaScript to customize anything you desire. The documentation isn’t great, and there aren’t any beginner tutorials, but the source code is out there for you to peruse.

A good example of what’s possible with Undum, a little creativity, and some JavaScript know-how, is The Matter of the Monster by Andrew Plotkin. Take a look at the source code, and I guarantee you’ll learn something about Undum and JavaScript in the process.


Now, for those of you who were offended by the rampant use of JavaScript in Undum, you’ll probably love Twine. It’s a great little program that allows you to graphically create CYOAs similar to Undum, but without all the coding. The final product is compiled into a single HTML file that can be uploaded to the web and played by anyone. It doesn’t give as much control as Undum, and by default it doesn’t look quite as good, but the editor is simple (and dare I say fun?) to use, and can be learned in less than 5 minutes. Don’t believe me? Skim this tutorial and tell me you don’t know everything about Twine. Besides using over 50 exclamation points, that tutorial covers most of the basic and advanced features of Twine.

There are quite a few games that have been made with Twine, so I encourage you to check them out.

Inform 7

Inform 7 is a programming language specifically for writing Interactive Fiction (IF, aka text adventures). But it isn’t like your daddy’s programming languages; Inform 7 uses natural language to define how your game works. It is almost ludicrous how easy it is to get started with Inform 7; however, mastering it is another matter. Inform 7 may be easy to start with, but using it for something even remotely complicated takes some willpower.

I have to say, in the time I’ve spent using Inform 7, most of it was spent just writing. Whenever you want Inform to do something, most of the time you can just write what you want it to do, and it works! Magic! But when it doesn’t work, it can be…frustrating to figure out why. The IDE that comes with Inform is pretty nice, but debugging is a thing of the past. If there’s an error in your source, Inform will inform you of where it is, but you still have to figure out how to fix it.

Despite the (few) downsides of Inform 7, it is currently the most popular IF programming language, and has been used by many authors to write many games. The documentation is very detailed, and there is no shortage of tutorials for getting started. There are also forums where you can ask any n00b questions.

Other IF Languages

If you’re interested in interactive fiction, but don’t fancy the natural language syntax of Inform 7, there are other options. Inform 6, for example, is an entirely different beast than Inform 7. 6 has syntax similar (or so they say) to C/C++, with all the fun brackets and semicolons. It gives you more control than I7, which can make debugging easier. Since it is older, you’ll have to do a little digging to find all the software you might need to develop in Inform 6. Start with the old Inform 6 website, then use Google if you need anything else.

TADS 3 and Hugo are other options. I’ve used Hugo a little bit, and from what I’ve seen, it’s incredibly easy to learn and it also has a pretty nice syntax. I haven’t used TADS 3 at all, so I will hold any comments, but I have heard that it’s nice too.

The Choice

To me, the advantage interactive fiction has over CYOAs is the simulation aspect. Interactive fiction games create a whole world model, which includes not only the location of objects, but how they interact with each other, and how the player can interact with the world. CYOAs have basically no world model; they are simply text. In this scenario, print this text; in this other scenario, print this different text. There are no characters, no rooms, no objects; just text and links between text. The advantage of CYOAs is that they are usually easier to write, and easier to play/read. The user just clicks on a link and the next part of the story appears, whereas with IF the player has to actually use their brain and type something. I think a lot of the decision between IF and CYOAs is the intended audience. If you want your story to be accessible to pretty much everyone, then a CYOA tech such as InkleWriter is probably a better choice than an IF system.

In the end, the decision is up to you. I wrote this in the hopes of exposing some systems that otherwise might have gone unnoticed. If you are really interested in creating some type of interactive story, then check out each of the programs I talked about and see which one strikes your fancy. You can always start with something simple like Twine, and move on to more complicated things later.

One thought on “More Interactive Storytelling Today

  1. This is an excellent overview of IF languages. I haven’t looked into Undum at all — I’ll have to check it out. And, for the record, I think Javascript hardly ever *requires* semicolons…

Leave a Comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s