Inform is a
programming language and design system for
interactive fiction originally created in 1993 by
Graham Nelson. Inform can generate programs designed for the
Z-code or
Glulx virtual machines. Versions 1 through 5 were released between 1993 and 1996. Around 1996, Nelson rewrote Inform from
first principles to create version 6 (or Inform 6).
Over the following decade, version 6 became reasonably stable and a popular language for writing interactive fiction. In 2006, Nelson released Inform 7 (briefly known as Natural Inform), a completely new language
based on principles of natural language and a new set of tools based around a book-publishing metaphor.
Z-Machine and Glulx
The Inform compilers translate Inform code to story files for
Glulx or
Z-code, two
virtual machines designed specifically for interactive fiction. Glulx, which can support larger games, is the default.
The Z-machine was originally developed by
Infocom in 1979 for their interactive fiction titles. Because there is at least one such interpreter for nearly every major and minor platform, this means that the same Z-code file can be run on a multitude of platforms with no alterations. Originally Inform targeted the Z-machine only.
Andrew Plotkin created an unofficial version of Inform 6 that was also capable of generating files for
Glulx, a virtual machine he had designed to overcome many of the limitations of the several-decades-old Z-machine. Starting with Inform 6.3, released February 29, 2004, Inform 6 has included official support for both virtual machines, based on Andrew Plotkin's work. Early release of Inform 7 did not support Glulx, but in August 2006 Glulx support was released.
Inform 6
Inform was originally created by
Graham Nelson in 1993. In 1996 Nelson rewrote Inform from first principles to create version 6 (or Inform 6). Over the following decade, version 6 became reasonably stable and a popular language for writing interactive fiction.
The Inform 6 system consists of two major components: the Inform compiler, which generates story files from Inform source code, and the Inform library, a suite of software which handles most of the difficult work of
parsing the player's text input and keeping track of the world model. The name Inform also refers to the Inform programming language that the compiler understands.
Although Inform 6 and the Z-Machine were originally designed with interactive fiction in mind, many other programs have been developed, including a
BASIC
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
interpreter, a
LISP
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lispi ...
tutorial (complete with interpreter), a
Tetris game, and a version of the game
Snake
Snakes are elongated, limbless, carnivorous reptiles of the suborder Serpentes . Like all other squamates, snakes are ectothermic, amniote vertebrates covered in overlapping scales. Many species of snakes have skulls with several more j ...
.
The Inform 6 compiler
The Inform
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
generates files for the
Z-machine or
Glulx (also called story files) from Inform 6
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
.
The Inform 6 programming language
The Inform programming language is
object-oriented and
procedural
Procedural may refer to:
* Procedural generation, a term used in computer graphics applications
*Procedural knowledge, the knowledge exercised in the performance of some task
* Procedural law, a legal concept
*Procedural memory, a cognitive scienc ...
. A key element of the language is objects. Objects are maintained in an object tree which lists the parent–child relationships between objects. Since the parent–child relationship is often used to represent location, an object which is the parent of another object is often said to "hold" it. Objects can be moved throughout the tree. Typically, top level objects represent rooms and other locations within the game, which may hold objects representing the room's contents, be they physical items, non-player characters, the player's character, or background effects. All objects can hold other objects, so a
livingroom
object might hold an
insurancesaleman
object which is holding a
briefcase
object which contains the
insurancepaperwork
object.
In early versions of Inform, objects were different from the notion of objects from object-oriented programming, in that there was no such thing as a class. Later versions added support for class definitions and allowed objects to be members of classes. Objects and classes can inherit from multiple classes. Interactive fiction games typically contain many unique objects. Because of this, many objects in Inform do not inherit from any class, other than the "metaclass" Object. However, objects very frequently have attributes (boolean properties, such as
scenery
or
edible
) that are recognized by the Inform library. In other languages this would normally be implemented via inheritance.
Here is a simple example of Inform 6 source code.
Main;
print "Hello, World!^";
Inform 6 library
The Inform system also contains the Inform library, which automates nearly all the most difficult work involved in programming
interactive fiction; specifically, it includes a text
parser that makes sense of the player's input, and a world model that keeps track of such things as objects (and their properties), rooms, doors, the player's inventory, etc.
The Inform compiler does not require the use of the Inform library. There are several replacement libraries available, such as Platypus
and
InformATE, a library that codes Inform in Spanish.
Example game
Here is an example of Inform 6 source code that makes use of the Inform library. The Inform 6 code sample below is usable in Inform 7, but not without special demarcation indicating that it is embedded legacy code.
Constant Story "Hello Deductible";
Constant Headline "^An Interactive Example^";
Include "Parser";
Include "VerbLib";
Initialise;
location = Living_Room;
"Hello World";
Object Kitchen "Kitchen";
Object Front_Door "Front Door";
Object Living_Room "Living Room"
with
description "A comfortably furnished living room.",
n_to Kitchen,
s_to Front_Door,
has light;
Object -> Salesman "insurance salesman"
with
name 'insurance' 'salesman' 'man',
description "An insurance salesman in a tacky polyester
suit. He seems eager to speak to you.",
before [;
Listen:
move Insurance_Paperwork to player;
"The salesman bores you with a discussion
of life insurance policies. From his
briefcase he pulls some paperwork which he
hands to you.";
],
has animate;
Object -> -> Briefcase "briefcase"
with
name 'briefcase' 'case',
description "A slightly worn, black briefcase.",
has container;
Object -> -> -> Insurance_Paperwork "insurance paperwork"
with
name 'paperwork' 'papers' 'insurance' 'documents' 'forms',
description "Page after page of small legalese.";
Include "Grammar";
Notable games developed in Inform 6 or earlier versions
* ''
Curses'', by
Graham Nelson (1993), the first game ever written in the Inform programming language. Considered one of the first "modern" games to meet the high standards set by Infocom's best titles.
* ''
Zork: The Undiscovered Underground'' (1997), written by
Marc Blank &
Michael Berlyn, programmed by Gerry Kevin Wilson. Given away free by
Activision to promote the release of
Zork: Grand Inquisitor.
* ''
Anchorhead
''Anchorhead'' is a Lovecraftian horror interactive fiction game, originally written and published by Michael S. Gentry in 1998. The game is heavily inspired by the works and writing style of H.P. Lovecraft, particularly the Cthulhu mythos.
...
'', by Michael S. Gentry (1998) is a highly rated horror story inspired by
H. P. Lovecraft's
Cthulhu Mythos.
[Of the 1219 games rated at "Interactive Fiction Ratings", Anchorhead was the highest rated game as of January 4, 2007. ()]
* ''
Photopia'', by
Adam Cadre (1998), the first almost entirely puzzle-free game. Won the annual
Interactive Fiction Competition in 1998.
* ''
Varicella'' by Adam Cadre (1999). It won four
XYZZY Awards in 1999 including the XYZZY Award for Best Game, and had a scholarly essay written about it.
[
Published as ]
* ''
Galatea'', by
Emily Short (2000). Galatea is focused entirely on interaction with the animated statue of the same name. Galatea has one of the most complex interaction systems for a
non-player character in an interactive fiction game. Adam Cadre called Galatea "the best NPC ever".
* ''
Slouching Towards Bedlam'', by Star C. Foster and Daniel Ravipinto (2003). Set in a
steampunk setting, the game narratively integrates meta-game functionality (saving, restoring, restarting) into the game world itself. The game won two
XYZZY Awards and received the highest average score of any game in the
Interactive Fiction Competition as of 2006.
Inform 7
On April 30, 2006, Graham Nelson announced the beta release of Inform 7 to the rec.arts.int-fiction newsgroup.
Inform 7 consists of three primary parts: The Inform 7
IDE with development tools specialized for testing interactive fiction, the Inform 7 compiler for the new language, and "The Standard Rules" which form the core library for Inform 7. Inform 7 also relies on the Inform library and Inform compiler from Inform 6. The compiler compiles the Inform 7 source code into Inform 6 source code, which is then compiled separately by Inform 6 to generate a
Glulx or
Z-code story file. Inform 7 also defaults to writing
Blorb files, archives which include the Z-code together with optional "cover art" and metadata intended for indexing purposes. The full set of Inform 7 tools are currently available for
Mac OS X,
Microsoft Windows and
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
. The March 25, 2007 release added command line support for
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
, and new releases now include an IDE using the
GNOME desktop environment under the GNOME Inform 7
SourceForge project.
The language and tools remain under development;
[
Also archived at
]
the March 25, 2007 release included a number of changes to the language. In April 2022 the source code was made available on Github under an Open source license. the most up-to-date version of Inform 7 is available at https://github.com/ganelson/inform/releases
Inform 7 was named Natural Inform for a brief period of time, but was later renamed Inform 7. This old name is why the Inform 7 compiler is named "NI."
Inform 7 IDE

Inform 7 comes with an integrated development environment (IDE) for Mac OS X, Microsoft Windows and Linux. The Mac OS X IDE was developed by Andrew Hunter. The Microsoft Windows IDE was developed by David Kinder. The Linux IDE (known as GNOME Inform) was developed by Philip Chimento.
The Inform 7 IDE includes a text editor for editing Inform 7 source code. Like many other programming editors it features syntax highlighting. It marks quoted strings in one color. Headings of organizational sections (Volumes, Books, Chapters, Parts, and Sections) are bolded and made larger. Comments are set in a different color and made slightly smaller.
The IDE includes a built-in
Z-code interpreter. The Mac OS X IDE's interpreter is based on the Zoom interpreter by Andrew Hunter, with contributions from Jesse McGrew. The Microsoft Windows IDE's interpreter is based on
WinFrotz
The Z-machine is a virtual machine that was developed by Joel Berez and Marc Blank in 1979 and used by Infocom for its text adventure games. Infocom compiled game code to files containing Z-machine instructions (called story files or Z-code f ...
.
As a developer tests the game in the built-in interpreter, progress is tracked in the "skein" and "transcript" views of the IDE. The skein tracks player commands as a tree of branching possibilities. Any branch of the tree can be quickly re-followed, making it possible to retry different paths in a game under development without replaying the same portions of the game. Paths can also be annotated with notes and marked as solutions, which can be exported as text walkthroughs. The transcript, on the other hand, tracks both player commands and the game's responses. Correct responses from the game can be marked as "blessed." On replaying a transcript or a branch of the skein, variations from the blessed version will be highlighted, which can help the developer find errors.
The IDE also provides various indices into the program under development. The code is shown as a class hierarchy, a traditional IF map, a book-like table of contents, and in other forms. Clicking items in the index jumps to the relevant source code.
The IDE presents two side-by-side panes for working in. Each pane can contain the source code being worked on, the current status of compilation, the skein, the transcript, the indices of the source code, a running version of the game, documentation for Inform 7 or any installed extensions to it, or settings. The concept is to imitate an author's manuscript book by presenting two "facing pages" instead of a multitude of separate windows.
Inform 7 programming language
Notable features include strong bias towards declarative rule-based style of programming and ability to infer types and properties of objects from the way they are used. For example, the statement "John wears a hat." creates a "person" called "John" (since only people are capable of wearing things), creates a "thing" with the "wearable" property (since only objects marked "wearable" are capable of being worn), and sets John as wearing the hat.
Another notable aspect of the language is direct support for relations which track associations between objects. This includes automatically provided relations, like one object containing another or an object being worn, but the developer can add his/her own relations. A developer might add relations indicating love or hatred between beings, or to track which characters in a game have met each other.
Inform 7 is a highly
domain-specific programming language, providing the writer/programmer with a much higher level of abstraction than Inform 6, and highly readable resulting source code.
Example game
Statements in Inform 7 take the form of complete sentences. Blank lines and indentation are in some places structurally significant. The basic form of an Inform 7 program is as follows:
"Hello, World!" by "I.F. Author"
The world is a room.
When play begins, say "Hello, World!"
The following is a reimplementation of the above "Hello Deductible" example written in Inform 7. It relies on the library known as "The Standard Rules" which are automatically included in all Inform 7 compilations.
"Hello Deductible" by "I.F. Author"
The story headline is "An Interactive Example".
The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.
The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.
A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase.
The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.
Instead of listening to the insurance salesman:
say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
move the insurance paperwork to the player.
Notable games written in Inform 7
''Mystery House Possessed'' (2005), by
Emily Short,
was the first Inform 7 game released to be public. It was released as part of the "Mystery House Taken Over" project.
On March 1, 2006, Short announced the release of three further games:
''Bronze''
(an example of a traditional puzzle-intensive game) and ''Damnatio Memoriae''
(a follow-up to her award-winning Inform 6 game ''
Savoir-Faire
''Savoir-Faire'' is a piece of interactive fiction written by Emily Short, about a magician in 18th-century France searching his aristocratic adoptive father's house. It won the Best Game, Best Story, Best Individual Player Character and Best ...
'') were joined by Graham Nelson's ''The Reliques of Tolti-Aph''
(2006). When the Inform 7 public beta was announced on April 30, 2006, six "worked examples" of medium to large scale works were made available along with their source code, including the three games previously released on March 1.
Emily Short's ''
Floatpoint'' was the first Inform 7 game to take first place in the
Interactive Fiction Competition.
It also won 2006
XYZZY Awards for Best Setting and Best NPCs. ''
Rendition'', by nespresso (2007), is a
political art experiment in the form of a text adventure game. Its approach to
tragedy
Tragedy (from the grc-gre, τραγῳδία, ''tragōidia'', ''tragōidia'') is a genre of drama based on human suffering and, mainly, the terrible or sorrowful events that befall a main character. Traditionally, the intention of tragedy ...
has been discussed academically by both the
Association for Computing Machinery and
Cambridge University
, mottoeng = Literal: From here, light and sacred draughts.
Non literal: From this place, we gain enlightenment and precious knowledge.
, established =
, other_name = The Chancellor, Masters and Schola ...
.
See also
*
Inform version history
The history of releases of the Inform programming language for interactive fiction
''
Interactive fiction, often abbreviated IF, is software simulating environments in which players use text commands to control characters and influence the envi ...
* lists software similar to Inform
*
TADS The Text Adventure Development System (TADS), another leading IF development system
Further reading
; Inform 6
* The official manual of Inform is
Graham Nelson's ''Inform Designer's Manual'': it is a tutorial, a manual, and a technical document rolled into one. It is available online for free at Inform's official website,
and two printed editions are available: a softcover () and a hardcover ().
* The ''Inform Beginner's Guide'' by Roger Firth and Sonja Kesserich () attempts to provide a more gentle introduction to Inform. It is available for free at Inform's official website.
[
]
;Inform 7
* The SPAG Interview - An interview with designers
Graham Nelson and
Emily Short about the development of Inform 7. This interview was made shortly before its release and published on the same day as the initial release.
* "Natural Language, Semantic Analysis and Interactive Fiction" - A paper on the design of Inform 7 by designer
Graham Nelson.
References
External links
Cloak of Darkness: Informpresents the same, short game implemented in both Inform 6 and Inform 7, as well as other languages for comparison.
- Official web site
at Roger Firth's IF Pages provides details on programming in Inform 6.
Inform 7- Official web site.
* {{curlie, Games/Video_Games/Adventure/Text_Adventures/Design_and_Development/Authoring_Systems/Inform
The Interactive Fiction Archiveprovides many Inform tools, examples, and library files.
Playficis a web-based interface for creating and sharing new games using Inform 7.
Gunchois a multiplayer interactive fiction system based on Inform 7 with a combination of
MUD-like and web-based interfaces.
1993 software
Domain-specific programming languages
History of computing in the United Kingdom
Interactive fiction
Formerly proprietary software
Free game engines
Programming languages created in 1993
Software using the Artistic license
Text adventure game engines
Video game development software