3 Interactive Fiction Authoring Tools
Last week I gave you a brief introduction to Interactive Fiction (IF). This week, I’m showing you three tools for creating IF for all of those peops whose interest was piqued. Each takes a unique approach, so read carefully to pick the one that is right for you.
Twine (Mac, Windows, Linux)
I’m writing about Twine first because it is the simplest, and therefore the easiest to use. Twine writers produce stories using a graphical interface. Each piece of text is represented within a box, and lines link each box, showing the routes the player might take through the story. The work is compiled in HTML format, and will work on any browser that supports javascript (and has it turned on. That’s practically everyone, by the way).
Twine is very easy to get to grips with.The graphical interface makes it immediately obvious what is going on. Editing is done by double-clicking a box and typing in the resulting form. Creating a new box is as simple as double-clicking in an empty space. Links within the text are defined by surrounding the word(s) in double square brackets [[like this]], and choices outside of the main text are the same, only with a * character in front. And that is seriously all you need to get going.
In addition, problems are automatically flagged by the system, and an exclamation point placed in the relevant box.Because the system is so simple, the only problem can be that you are trying to link to a box that does not exist.
For more information, there is a video tutorial series that explains everything you need to know and will definitely help you decide if this is the authoring tool for you.
If you want to “go deep” with Twine, you can add your own HTML and stylesheets. If you don’t know what I’m talking about, then you probably want to leave those features alone (you are basically editing web pages at that stage), but that’s fine, as they’re not necessary to write a story. Aside from this, the major problem with Twine is that it will be too simple for most purposes. Everything is generated in simple HTML, and there is no underlying structure – everything is text and links. What I mean by that is the system has no concept of what a door is, or what it can do; nor a room, object, or player-character for that matter.
Because of this a reader cannot pick up an object and use it elsewhere, for example, and even the simplest puzzle that affects the environment becomes difficult. These things can be “fudged”, but you will have to be strict about the specific route a reader takes through the story. This is more of a Choose Your Own Adventure style story than a text adventure.
Inform 7 (Mac, Windows, Linux)
Inform takes a more writerly approach. In the same way that Interactive Fiction uses a verb-based system to make it easy to play/read, Inform has tried to make its source code like writing English. The theory is that you simply describe what the player sees. The interface is split into two panes, each of which can show a variety of helpful tools and resources. The work that’s produced can be played on any interpreter.
Inform’s coding style is an intriguing concept. Rather than write code as such, you can get a lot done by writing a paragraph. Inform will then interpret what you have written and sort the various objects into types, which automagically have certain properties and available actions associated with them. Take this example from the documentation:
East of the Garden is the Gazebo. Above is the Treehouse. A billiards table is in the Gazebo. On it is a trophy cup. A starting pistol is in the cup.
There are three rooms there, and three objects, each of a different type. The language is very powerful, allowing for all sorts of interaction. And it’s extensible, so if there is something you need, you might be able to find an extension that includes it. You can always write your own of course, but we’re getting a bit hardcore there.
There is a caveat. Just like interactive fiction promises the world with its blinking cursor, writing source code with Inform is not as freeform as it first appears. Although there are many different ways to write the same thing, it is still source code, and beginners will run into problems because they haven’t written things in the “right” order, or they have left out some punctuation that didn’t seem strictly necessary. But once it’s written, the source code is incredibly easy to understand, meaning it’s easy to learn from the work of others.
Added to that, the documentation is excellent; full of examples, sensibly organised, and viewable alongside your source code, thanks to the two panes of the interface. It is also extremely well-written, managing to be both concise, thorough and informative. It is not often I enjoy reading a manual!
Other tools include a Skein (basically a visual representation of a reader’s journey through the story) a full transcript of any given playthrough, and an automatically generated map of your world. All powerful stuff, if a little intimidating to the beginner.
I have to come off the fence and say that overall Inform 7 is my favourite of the three. For a piece of free software (or any software), it’s impressively complete, and takes a professional look at useability that is missing from the others. The Mac version especially, is a joy to use.
TADS (Mac, Windows, Linux)
N.B. Mac and Linux versions are either old, or more difficult to run. See the download page for more info.
TADS stands for Text Adventure Development System, and is as techy as that sounds. This is a tool for programmers. It is written in a text editor (TADS Workbench is a specially designed text editor for this purpose), and each room, object, interaction, description is defined in a strict syntax. If you are used to code as simple as HTML upwards though, this should not pose a problem. The TADS 3 format that’s produced can be played on any interpreter.
Here is an example of the code (with comments removed), just for the sake of comparison:
entryway: Room ‘Entryway’
“This large, formal entryway is slightly intimidating:
the walls are lined with somber portraits of gray-haired
men from decades past; a medieval suit of armor<<describeAxe>>
towers over a single straight-backed wooden chair. The
front door leads back outside to the south. A hallway leads
north. ”describeAxe
{
if (axe.isIn(suitOfArmor))
“, posed with a battle axe at the ready,”;
}north = hallway
south = frontDoor
out = frontDoor
;+ frontDoor: Door ‘front door’ ‘front door’
“It’s a heavy wooden door, currently closed. ”initiallyOpen = nil
dobjFor(Open)
{
action() { “You’d rather stay in the house for now. “; }
}
;
If you can vaguely understand what’s going on here, you should be fine. If the sight of it sends you into waves of panic, TADS is probably not for you.
The manual is large, but I found it tended to waffle a bit. As the code is fairly easy to read, I recommend starting a new project on the “easiest” setting and opening the .t file within. This contains a basic structure for your story that you can edit. Most importantly though, it is very heavily commented, and explains each of the lines in the example above, and much more. It’s a great basis from which to start and is very instructive.
You are not restricted to one file of code. In fact you can have as many as you want, allowing you to organise your project how you like. The manual recommends splitting your project up one file per room, for example.
There are various debugging tools available that will be familiar to programmers. Break points will stop running the code at a specific point so that you can check on the status of watched variables. For simple stories, this won’t be necessary, but when it comes to testing complicated logic, they can be invaluable.
Overall, TADS is an inoffensive system for programmers, and you may well find that this suits your way of thinking more than the others.
In Conclusion
And that’s basically the way to choose – pick a system that suits the way you think and start writing with it; see how it feels. The exception is Twine because it is so restrictive that even if you like the graphical interface, it may not produce the stories you want to create. Still, if you are unsure at all if you want to write IF, Twine is an easy testing bed for the form.
As always, I’d like to hear your thoughts on the systems described above. And if I’ve missed one that you like using, please let me know. The comments section is below.
Still not interested? Next week I’ll be writing about some of the unique opportunities that Interactive Fiction has to offer writers, so stay tuned!