Advertisement
Roundups

Interactive Fiction: Text Adventures

by

Interactive fiction, also known as the text adventure game genre, has seen a major revival in the last few years. Between nostalgia for the past reborn on mobile systems and tools like Twine and Inform putting game development in the hands of anyone with a web browser, the time has never been better to find, play, or even develop an interactive fiction game.

In this article, we're going to start with an introduction to the genre, examine the tools used to create these kinds of games, consider the best techniques used for their design, and list a few competitions you may like to check out.


Introduction

You begin to read an article on Interactive Fiction.
You soon come to realize more information lies ahead -- and downwards.
You can see a Text Adventure, Gamebook and Visual Novel here.
>

A very general definition of interactive fiction might consist of two main ideas. The first of which would be a parser, some code that accepts a type of input and acts on it. And the second would be a world model, some rules that define a simulation and the relationships between objects within it.

That's a rather broad definition, but its one that is agreed upon for talking about anything from a text adventure where a player types detailed commands to a hypertext-based game where clicking on links progresses the game. In fact, those two, along with visual novels, are the most popular current genres within interactive fiction.

>examine Text Adventure

A Mind Forever Voyaging

A Mind Forever Voyaging

When the term interactive fiction is used, often the idea of typing commands or directives into a computer and reading its replies comes to mind. Things like get lamp from Zork (1979) or lie down in The Hitchhiker's Guide to the Galaxy (1984), for example. Usually, this is where another term, text adventure, also comes into usage to describe such games: ones that revolve around trying to understand a simulated world and its textual grammar to progress in a game.

Just for fun, here's an example game you can play that will give you a good idea what a text adventure game looks like in action.

The term itself, and birth of the genre, dates back to 1975 and the work done by Will Crowther to create a game called Adventure. Mixing elements from fantasy literature and a reproduction of the layout of the neighboring Mammoth-Flint Ridge Cave System, he created a game for his children to play. However, because it was on a public mainframe system, many others found and played it too.


Adventure

Adventure

In 1976, Don Woods got official permission to expand the source code and Adventure eventually became renamed Colossal Cave. Once the source code was released to the ARPAnet (forerunner of the Internet) in 1977, many others began to make their own versions, including Adventureland by Scott Adams in 1978 and the first use of the term interactive fiction as a description of such games.

Around the same time, and inspired by Colossal Cave themselves, four students at MIT - Tim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling - started work on their own interactive fiction game. They named it Zork and founded the company Infocom the same year it was released.


Zork

Zork

Wanting to port Zork from the mainframe system it was created on to the market of smaller personal computers, they created the Zork Implementation Language and virtual machine software for other platforms called Z-machine. After being compiled, each game became bytecode - called Z-code - and was runnable on any operating system or platform that had its own Z-machine software.

The Z-code format was the standard for all Infocom games during its run from 1979 to 1989. And even after the company was bought and ultimately shut down, Infocom games remained popular. Because of this, work was done to reverse engineer the format specifications starting in 1989 and extending into the early 1990s. That work, started directly by fans of Infocom games, lead to the development of the many current tools used to create text adventure games today.

>examine Gamebook


Fighting Fantasy: Blood of the Zombies

Fighting Fantasy: Blood of the Zombie

While text adventures were coming into their own, so too was the Choose Your Own Adventure (CYOA) genre. Started in 1976 by Edward Packard as a book called Sugarcane Island, the later named series from Bantam Books from 1979 to 1998 solidified the use of branching paths and second-person narration. It also lead to the use of the term gamebooks.

At the same time in the 1980s, different hypertext systems were developed including ENQUIRE, Tim Berners-Lee's precursor to the World Wide Web. And by 1987, Storyspace, a tool for creating hypertext-based fiction which displayed visual nodes between content, and Apple's HyperCard system, which reduced the barrier between interface and storage layers and embedded a much more naturalized programming language, HyperTalk, become available to personal computer users.

It was these tools, Storyspace and HyperCard especially, that allowed many to create works with branching paths, mirroring CYOA, but with a greater emphasis on nonlinearity. The user could not only choose their path through preexisting story nodes, but also often create new and unexpected ones by following the links between context with the hypertext itself.

Today though, the difference between a gamebook and a work made in hypertext is often contested, with both terms coming to encompass both more and less than their original usage. A work might be considered a hypertext if it is primarily in HTML (HyperText Markup Language), although many gamebook software systems use the file format as well for its simplicity in adding programming via JavaScript and styling via CSS.

>examine Visual Novel

Katawa

Katawa Shoujo

Outside of East Asia, the term visual novel is not as well known. However, within the region, it has come to be used as one empassing most interactive fiction works and especially those which use frequent static images or small amounts of video. Even graphical adventure games can sometimes be known as visual novels depending on their degree of interactivity.

The roots of visual novels coincide with that of gamebooks and text adventures, with progress in the game often dependent on the player choosing one branch among many or typing information learned while playing. And many of the most popular visual novels are those based on anime or manga.

If a typical visual novel can be said to exist, it would have narration from a character on screen with a static image of the narrator on top of another image establishing the location of the scene. However, the placement of text and even the interface used to select options can vary dramatically between companies and developers.

>go down

Tools

You are in the middle of an article, 
with paragraphs surrounding you on all sides.
You see Inform, Quest, Twine, and Ren'Py here.
>

While there are, of course, numerous ways to make an interactive fiction game, like coding your own natural language processing engine or writing a story accessible through interconnected web pages, there are also tools created to make the process much easier. To that end, I've picked out four that highlight the current genres in interactive fiction.

>examine Inform

Inform_Example

Inform 7 editor

Example Inform7 Source Code

"A Simple Game" by "Ann Author"

The World is a room.

When play begins, say "Simple, eh?"

Released first in 1993 by Graham Nelson, Inform has faithfully continued the tradition of text adventures games stretching back to Zork. Capable of producing games in an updated version of the Z-code format, it remains the best tool for creating text adventure games with both an integrated development environment and a specially designed object-oriented, procedural programming language created to in order to write code that approximates natural sentences.

However, while statements like "The World is a room" can seem straightforward enough, Inform often hides much of its complex semantic underpinnings away from the casual user too. Its natural language parser can often frustrate first time users unfamiliar with its many built-in keywords and extensive default verb list.

With its decade long history, Inform has seen a number of updates and expansions. One of these is the ability to output files in the Glulx format created by Andrew Plotkin for use with the virtual machine of the same name. With double the memory size of Z-code, text effects, and support for sounds and images, it introduces many more options for text adventure developers. However, its usage stills lags behind the traditional Z-machine.


Galatea

Galatea

Examples of games created with Inform include Galatea, by Emily Short, as one of the best examples of non-player character interactivity and Shade, by Andrew Plotkin, for the deep exploration of a single room and life.

>examine Quest 5


Quest_Example

Quest 5

Example Quest XML Source Code

<asl version="540">
  <include ref="English.aslx" />
  <include ref="Core.aslx" />
  <game name="A Simple Game">
    <author>Ann Author</author>
    <pov type="object">player</pov>
  </game>
  <object name="room">
    <object name="player">
    </object>
  </object>
</asl>

Developed by Alex Warren, Quest is an open source editor, language, and player published and maintained by Text Adventures Ltd. It supports game creation in either text adventure or gamebook mode through interfaces designed for each. Using drop-down menus and buttons, objects and rooms can be added or removed from a game with very little programming involved.

This ease comes at the cost of currently only running on Windows and, to make a game public, requiring other users to have a copy of Quest on their machines or, to play online, uploading it to the Text Adventures Ltd website.

Written in C# and with the ability for users to add libraries, both in its specialized XML format or written in JavaScript, games developed for Quest can be developed externally and imported too, allowing for the quick sharing of code and template usage for faster development.


FirstTimes

First Time

Currently, First Times by Hero Robb is the most popular work created using Quest, appearing not only on the tool's website but as an Android and iOS app too.

>examine Twine


Twine_Example

Twine

Example Twine Source Code

:: Start
A simple game with
a beginning and..
[[an end]]

:: an end
...an end.

:: StoryAuthor
Ann Author

:: StoryTitle
A Simple Game

Twine combines HTML and JavaScript with a simple Wiki syntax to create hypertext works. Created by Chris Kilmas to allow others to make "interactive stories," it has a growing following. Its simple interface and editor has helped many first-time writers and developers make games and compose stories with very little programming knowledge.

Because it outputs to a single HTML file with its interpreter and code all written in JavaScript, it has been expanded by many to include extras like sound and advanced text effects. However, the Twine editor itself has limited support in understanding this scripting and the macros created by its community must be copied and pasted into the editor before using them.


DepressionQuest

Depression Quest

Howling dogs by Porpentine and Depression Quest by Zoe Quinn, Patrick Lindsey and Isaac Schankler are two of the most well-known works, although more are constantly being created. Because of its simplicity and ease of use, it has grown tremendously in popularity during the last couple of years.

>examine Ren'Py


RenPy_Launcher

Ren'Py

Example Ren'Py Python Source Code

define A = Character('Ann Author', color="#c8ffc8")

label start:
	A "This is rather simple, right?"
	return

The Ren'Py launcher and environment is completely designed around creating visual novels. Using the Python scripting language and built on the Pygame library, development is broken into different files for the options, screens, and the game's scripting with the ability to check for errors or build the game from inside the launcher program.

The one major feature missing though is an integrated editor for coding in Python. While Ren'Py can use a system's default associated program for editing Python files, it also allows for downloading jEdit, which requires Java support, or Editra and linking either program from inside the launcher itself. Development then takes place across different programs for coding, and then building and playing a game.


Analogue

Analogue: A Hate Story

Writer and indie developer Christine Love's series of games Digital: A Love Story, don't take it personally, babe, it just ain't your story, and Analogue: A Hate Story all use the Ren'Py engine, as does Katawa Shoujo, created by a team of people from 4chan and other online communities.

>go down

Technique

Armed with the tool of your choice, 
you make your way deeper into the article.
You can see Step 1, Step 2, Step 3, Step 4 and Step 5 here.
>

Writing about interactive fiction is a lot like writing about, well, writing itself. It can be a highly personal thing. Like the writing process itself, really. Full of pulling teeth and burning the midnight oil sometimes. It's never an easy task and making a game as part of it just adds to the troubles.

Begin, though, by taking a lesson from The Hitchhiker's Guide to the Galaxy: Don't panic. Seriously, don't. I mean it. DON'T PANIC. You can do this!

There are a few simple things to follow when making an interactive fiction game. These aren't hard and fast rules per se, but those that people wanting to get into making interactive fiction can use as a starting point. Not laws, but suggestions that will help you get into the spirit of making games.

>examine Step 1

Start with a story. Something as simple as "An old man steals a blue box and goes off on an adventure" or even "One day, all the cats were stolen from the kingdom" will get you generating ideas about places, people, and their problems.

Usually, this story is one you write yourself, but it might not necessary be that way. Perhaps you are trying to make something brand new, or maybe you are remaking something old. It's all a matter of having some events and characters that you can work with to use as a framework for the game you plan to make with it.

>examine Step 2

From your story, pull out the characters. (Be gentle with them.) Make a list of who or what is doing things in the story. Is RASL trying to hide Tesla's notebooks? Is Floyd "Oh, boy! Are we gonna try something dangerous now?" the robot in the Bio-lab? Is Perry Simm working on the Plan for Renewed National Purpose?

Keep track of the other nouns too. These are the locations where the story takes place and any other objects doing things. Once the characters start interacting, these are going to be where, when, and with what they act upon, near, and other prepositions in relation to each other.

>examine Step 3

Since you now have a list of who and what is doing what to who, start to pair them with their actions. These are the verbs. Now, depending on whether you are making a text adventure, gamebook, or visual novel, the instructions get a bit different.

For a text adventure, you will want a list of common actions. Less than a dozen to start off with that cover most of the story. These can be simple things like asking, telling, or getting. And, depending on the tool, they might already be built-in and ready for use too.

For gamebooks and visual novels, the actual verbs are less important than the choices that are associated with and how that may change (or not) the story as experienced by the player. The action of asking, for example, is not important unless it pertains to a certain person or about a topic. And while a visual novel might want to supply the written responses for all choices, a gamebook could list only the action taking place with the result shown depending on the choice or link followed.

>examine Step 4

Now that we have the doers and their doings, we need a when to start to plot scenes and what happens within them. Pairing up characters and locations can often help with this, if the story did not already exist. If it did though, usually the original plot can provide a basis for the connections between how and when characters moved between places.

Important questions to begin to answer are where the story starts and maybe even where it will end up. Knowing, for example, that a character must go from Bag End to Rivendell can help shape both the physical journey of moving from one place to another as well as the emotional tension such a move might bring.

>examine Step 5

Do it. Make something. Start with the beginning, middle, or even end and start to build in a direction. Use the plot as guidance. Write the characters into a place try to imagine what they might do to or with each other.

The most important thing to remember above all is to play your own game too. Test how it works and what the replies look like. Maybe even read the text out loud to yourself. Pretend you know nothing about your story and see, as you add pieces, what they teach about your world, story, and mechanics. And then keep going.

>go down

Competitions

Confronted with a creation of your own making, your heart swells with pride. 
It is time to show the world what you have made.

You can see IF Archive, IF Comp, IFDB and XYZZY Awards here.
>examine IF Archive

IF_Archive

Interactive Fiction Archive

The Interactive Fiction Archive is exactly what its title read as: an archive of interactive fiction both past and present. It maintains copies of materials, tools, art, solutions, examples, and even articles about and pertaining to interactive fiction. Of note to those just starting out, it also offers access, and ability to upload too, games and materials of historical importance. And recent works too.

>examine IF Comp


IF_Comp

Interactive Fiction Competition

The Interactive Fiction Competition is just that, an annual competition. Generally, its for "short text adventures," those that might be started and finished in under two hours total and are original works. And while it was started for games made in either Inform or TADS, it now accepts those made in any language or from any system as long as play happens within two hours and the work is freely available.

>examine IFDB


IFDB

Interactive Fiction Database

Similar in approach to the IF Archive, the Interactive Fiction Database is maintained as a "Wiki-style community project" where "members can add new game listings, write reviews, exchange game recommendations, and more." It allow its members to create new listings, review those already in the system, and create lists of those games.

>examine XYZZY Awards


XYZZY

XYZZY Award

Designed to promote "extraordinary interactive fiction works," XYZZY Awards accepts nominations from the community and, given sufficient interest, a selection of those become finalists. Games then receiving a plurality of votes become winners for their category. With Best Puzzle, Best NPCs and Best Setting as just some of the categories, the XYZZY Awards celebrates both whole works and parts within them.


Conclusion

>go down

No More Content
There is nothing. It is pitch black.

Oh no! A lurking grue slithered into the article and devoured you!

Restart? Y/N
>
Related Posts
  • Code
    HTML5
    HTML5: Vibration APIPdl54 preview image@2x
    HTML5 has been a breath of fresh air for the web, which hasn't only affected the web as we know it. HTML5 provides a number of APIs that enable developers to create interactive websites and improve the user experience on mobile devices. In this article, we'll take a closer look at the Vibration API.Read More…
  • Code
    ASP.NET
    Code Generation Using T4Dotnet wide retina preview
    Learn the advantages and disadvantages of using code generation via T4 templates.Read More…
  • Game Development
    Implementation
    Write Once, Publish Everywhere With HaxePunk: Making a GamePreviewretinaimage
    You've probably had this experience before: you hear about an awesome game, but then you find out that it's only coming out on the one platform that you don't own. It doesn't have to be this way. In this tutorial, you will learn how to use Haxe to make a game in one development platform that can target multiple gaming platforms, including Linux, Mac, Windows, iOS, Android, and Flash.Read More…
  • Web Design
    Case Studies
    How They Did It: Typekit's New HomepageTypekit retina
    Typekit recently redesigned their homepage with some new services in mind. When Typekit joined Adobe, they set out to bring us a new way to handle fonts on the web. Not only did they create a fairly simple way to embed fonts on the web, but they have now officially launched a desktop sync option, which allows Creative Cloud subscribers to sync fonts to their computer directly from Typekit. This has been in a beta form for a while now, and provides a much easier route to local fonts than finding them elsewhere!Read More…
  • Web Design
    UX
    Walk Users Through Your Website With Bootstrap TourTour retina
    When you have a web application which requires some getting used to from your users, a walkthrough of the interface is in order. Creating a walkthrough directly on top of the interface makes things very clear, so that's what we're going to build, using Bootstrap Tour.Read More…
  • Code
    Android SDK
    Android SDK: User Interface DesignAndroid preview@2x
    In this series we're learning about Android SDK development from scratch! In this tutorial, we will build a simple user interface layout with a few visual elements.Read More…