CMPS148, Winter 2013, Section 01: Interactive Fiction

Interactive Fiction

Inform 7 is a development environment for text-based interactive fiction. In this environment you define your world by defining objects, rooms, characters and rules for manipulating them, using an English-like declarative programming language. The download page for Inform 7 is here.

Inform 7, as well as earlier versions of the development environment, target a virtual machine called the Z-Machine (similar in concept to other language virtual machines such as the Java virtual machine). So to play Inform 7 worlds you need a Z-Machine interpreter. A common interpreter is Frotz, which is available for many platforms, including Windows and Mac. Many other interpreters are available as well, but Frotz has always worked well for me.

In addition to the Z-Machine, there's an extended version of the Z-Machine called Glulx. Glulx provides support for larger Z-Machine files, external file access, and images. For your own projects, you won't need Glulx unless you'd like to include images in your own game. However, you'll need a Glulx interpreter to play some of the IF you find online, such as the excellent Alabaster by Emily Short.

Finally, some IF you encounter will be written using TADS (The Adventure Game System), an alternative IF authoring framework. To play a work written in TADS, you'll need a TADS interpreter.

Here are some example interactive fiction pieces to play:

  • Zork. The first commercial work of interactive fiction, with ideas drawn from the very first work of IF, Collosal Cave Adventure. A great example of what early IF was like. If you play this for any length of time, you'll probably want some hints.
  • 9:05 by Adam Cadre (scroll down to 9:05). A good intro piece if you're new to interactive fiction. Short. Features an unreliable narrator.
  • Alabaster by Emily Short. Features short play time with many endings - variations of a classic fairy tale.
  • Bad Machine by Dan Shiovitz. You play as a machine. The game uses unusual textual presentation to represent this unusual point of view. Figuring out how to understand the text is a big part of the game. Written in TADS. The page links to TADS interpreters for Windows and MacOS.
  • For a Change by Dan Schmidt. Makes use of made-up language to describe a poetic world. 
  • Galatea by Emily Short (download version 3). Based entirely on NPC conversation, features many endings and demonstrates possibiliites for Inform-based conversation. 
  • Photopia by Adam Cadre (scroll down to Photopia). Both Photophia and Shrapnel are examples of "puzzleless IF" in which story takes precedence.
  • Shade by Andrew Plotkin. A work of psychological horror making use of a shifting, surreal environment. 
  • Shrapnel by Adam Cadre (scroll down to Shrapnel). Features (sometimes extreme) manipulations of the story timeline, a Faulknerian Southern family drama (with disturbing theme), a player character with a split personality, and a formal breakdown of the experience at the end.

Examples of student projects from previous classes:

Submission Instructions

Due Friday, March 15th (by 11:59pm).


The interactive fiction project submission requires four components:

  1. A .blorb file containing a complete version of your interactive fiction
  2. The source code in Inform 7, if this is multiple files include those. DO NOT include source for extensions used unless group members authored those extensions.
  3. An updated project description. This is simply resubmitting assignment 3 but modified to reflect the interactive fiction submitted.
  4. A walkthrough to the interactive fiction. (Please submit this as a Microsoft Word .doc file)

These files must be submitted in a .zip file. No rars, gz or other compressed formats will be accepted. 

148 Students:

Email the final compressed file to the TA, ( with the file heading: CMPS 148 Winter 2013 - Final Project

Use the filename: {your_ucsc_login_id}

248 Students:

Email the final compressed file to the TA, ( with the file heading: CMPS 248 Winter 2013 - Final Project

Use the filename: {your_ucsc_login_id}

If the project is an Inform7 project, follow the above guidelines. If, however, you are doing work in a totally different format, use the same email header and compress whatever is needed to run your work into the zip file. If you have questions or very specific requirements feel free to email Professor Mateas or the TA.