Writing IF

Choosing a Tool

One of the first decisions you’ll need to make before you do serious work on your own piece of interactive fiction is what tools you will use to create it. While you could create IF in a general purpose programming language, most people choose to use a language or design system specially created for writing IF. This reduces the amount of work involved, and it often produces a more polished, more widely-portable product, as well.

Your choice may also be affected by the format you want your work to take. Some IF systems are better than others at running on small platforms such as handheld devices. Some are better at providing multimedia extras like graphics, sound effects, and hyperlinks. If you plan to develop for an unusual system or in an unusual format, be sure to consider that also when you select a coding language.

Writing in Collaboration with the Machine is an article I wrote on how your choice of system affects the way you write and the kind of content you can create.

Choice/Hypertext. For someone considering choice-based games, I’d look at Twine, ChoiceScript, inklewriter, Undum/Raconteur, or StoryNexus. Twine is the most widespread of these tools, but each of the others offers some features not available (or that you’d have to work to build yourself) in Twine. ChoiceScript, inklewriter, and StoryNexus are all versions of commercial tools that have been made available in a limited or partial-functionality way to amateur authors, and you can find manuals/tutorials on their respective websites.

Parser. Other tools do parsing and deeper world modeling — Inform and Quest are the most commonly used for parser interactive fiction, though TADS 3, with its rich simulation library, is another good choice. (For full disclosure: I have written almost all of my parser games in Inform, was involved in its development, and continue to help support it.) ADRIFT and Hugo also still have some users. Most of these tools assume that the user is willing to do some actual programming, though ADRIFT and Quest are the most code-light in this regard.

Multiplayer. Seltani and Guncho are systems that support multiplayer IF. Seltani is hypertextual, Guncho parser-based.

“Another Interactive Fiction Engine List” is a more comprehensive list of tools both commonly used and obscure/obsolete, with information on when they were last updated and what features they support. Alternatively, if you’d like to choose based on the appearance of the output, this Pinterest board tracks a variety of IF user interfaces, both old and recent.

It’s possible that no tool will exist that quite meets your needs. Last year I did some informal polling and put together a summary of community discussion on what people want most, which may at least shed some light on whether your requirements are common or unique.

Creation process

Depending on the kind of IF you want to write, planning might come in a variety of forms — notes about plot and character, a diagram of possible puzzle progress, a map of rooms. And naturally the process of writing the work will be heavily determined by the kind of language you choose to write in.

A number of “Making of IF” articles can be found on ifwiki, describing challenges that other authors have faced and how they resolved them. My article Idea to Implementation talks about some strategies I follow in general.

Learning the field

You may want to familiarize yourself with what is being written in IF at the moment.

You can look at IFDB to discover games that you’d like to play, especially games with particular features that interest you. Checking out the tag cloud on IFDB will give you a sampling of features that people have considered worth tagging. IFDB lists and pages of competition results can help you find particularly respected or prize-winning work, and you can also do your own searches to find games that have been written in particular time periods.

If there doesn’t seem to be information available about that feature, you can always run your own IFDB poll to collect information, or post a question about it in the general design portion of the intfiction forum.

The Planet-IF blog aggregator is a good place to find reviews, which can help with understanding how people talk about IF and what they consider good.

Choice of Games curates a list of text-based choice games on Steam, including but not limited to their own work.

Gaining Skills

Coding. If you’re working with code, you might find it useful to look at some source code for games that do things you find interesting — or just games written in your target language, to give you a feel for how other authors handle common issues. A search for “source code” on IFDB turns up quite a number of games with provided source in many common IF and all-purpose languages. Depending on your language of choice, you may also be interested in some of the tutorials and support books written over the years. For Inform, a list of support materials is kept pinned at the intfiction forum.

Puzzle and location design. Parser IF especially tends to focus on puzzles and geographical space. The IF Theory Reader contains a number of articles on related topics, and is available in both paperback and (free) PDF.

Branching narrative and alternatives. Structuring a branching narrative can be a significant challenge. Choice of Games has some useful material on how to structure a narrative with delayed results for early choices. Sam Ashwell’s writing on CYOA structures provides many examples and analysis. Even if you’re writing a parser game focused on puzzles, if you anticipate any points where the player can make a choice that affects later narrative, you may need to think about these issues.

Quality-based narrative is Failbetter’s term for an alternative to branching narrative, one in which storylets become available in response to different qualities tracked within the narrative. In theory, you could implement a story like this using any of a number of different tools, but StoryNexus is the only one of the tools listed above that provides this functionality out of the box.

Reviews and articles of mine that particularly focus on narrative structure can be listed here, and I also tag posts specifically about procedural narrative (which in some way go beyond having a pre-authored branch structure).

Conversation and character behavior. This is an interest of mine, so I’ve written quite a bit about it over the years. Here is an article about why I think conversation modeling is important.

Polishing your work

You should expect to spend some time beta-testing your IF after it is written: that is, having some people other than yourself play the game and alert you to problems. They may find outright errors of coding and bugs; they may find places where the game logic is not clear enough; they may find typos and writing problems. All of these things are good to have checked by someone else. Generally speaking, it is a good idea to have at least two people look at your game, and sometimes quite a few more, depending on how large the work is and how complicated it is.

It is also usually a good idea to make sure that you’ve got someone on your beta-testing team who represents what you think of as your target audience. If you’re writing IF that you hope will interest seasoned players of traditional IF, you may want to look for a tester or two from the community. If you’re writing for novice players, you might want to share your work with someone who has never played IF before. (That’s not to say you can’t mix and match the skill levels of your beta-testers, of course.)

A time-honored tradition is to rope in friends, roommates, and family members to look at your IF, but you may recruit by posting requests for beta-testers on the intfiction forum or at game-testing.org. Here is an article I wrote about tester/author interactions, if you’d like more suggestions about how to go about this.

Live Meetings and Training

Having cheerleaders and friends interested in your work can help you stay motivated to finish a large project. In addition to the forums I’ve mentioned on this page, you may want to investigate one of the in-person interactive fiction meetups that happen in some cities (mostly in the US and UK at the moment, though there are occasional exceptions). The sidebar of this blog contains links to related live meetups — the list changes, but I try to keep that sidebar updated.

I do some public talks and workshops on IF. My Contact page should list anything upcoming that might be of interest here. Twine tutorial sessions also happen from time to time in various cities — @twinethreads on Twitter or the Twinery forum may help with finding these.

Publishing

Listing. A very common way to distribute interactive fiction is to upload the file to the Interactive Fiction Archive. You may want to create an entry for it at IFDB, where you will be able to upload cover art, create a description, and give players a link to the game file and any peripheral websites you might have made. An IFDB entry is also the requirement to be eligible for the XYZZY Awards each year; these awards celebrate interactive fiction that excels in various categories.

You will probably also want to announce your new work on forums and social media, probably more than once. One approach is to run teasers for a game in advance of its release, to encourage curiosity before it is released. Good cover art and an exciting game blurb can help a lot in getting games played.

Hosting. Twine authors may want to make use of philome.la, a hosting service for Twine works so that you don’t need your own website for distribution. The IF Archive also accepts uploads of interactive fiction of all kinds, and ties into IFDB. Archiving your work can help make sure it remains available even if your own website goes down.

Some formats of game can also be hosted at http://textadventures.co.uk/. This site presents a smaller number of works on the front page and may get you some additional audience beyond the one that tracks new work on IFDB.

Selling commissioned work. Sub-Q and the Interactive Fiction Fund commission new works of interactive fiction, usually short works equivalent to short stories. Choice of Games hires authors to create longer ChoiceScript works (often in the 60-150K word range) and offers several tiers of distribution and pay options.

Competitions. Another publishing approach is to enter your work into a competition, in which case there may be special rules about how and when your work may be released (but, on the other hand, it may receive more immediate attention than a game released on its own). The annual IF Comp and Spring Thing are large events for computer-based interactive fiction, while the Windhammer Prize invites participants to submit paper gamebooks. There are often other, shorter IF competitions and jams. Checking out the Twinery and intfiction forums may turn up more. If you want to know more about the history of IF competitions or are considering running your own, this page puts together information from many comp-runners.

Self-publishing. Finally, some people self-publish freestanding works of interactive fiction for Kindle, on iOS/Android, on Steam, or through itch.io. Twine, Quest, and Inform have licenses that allow use in commercial projects of this kind without remuneration; inklewriter allows authors to have their work converted to a Kindle format for a small fee, but without recurring royalties.