Fact-checked by Grok 2 weeks ago

Inform

Inform is a programming language and design system primarily used for creating (IF), a genre of text-based adventure games where players interact with a simulated world through commands. Developed by Graham Nelson, it emphasizes and linguistic principles to make coding accessible, particularly for writers and non-programmers, by allowing to resemble English prose. The system originated with Inform 6, released in 1993 as a procedural language that compiles to the Z-machine virtual machine format, enabling compatibility with classic IF interpreters. This version became one of the most popular tools for IF development in the 1990s and early 2000s, supporting features like object-oriented modeling of game worlds, parser integration for player input, and extensions for complex narratives. In 2006, Nelson introduced Inform 7, a revolutionary redesign that adopts a natural-language syntax, where rules and definitions are written in declarative English sentences, such as "The description of the is 'A dingy untidy kitchen.'". This shift drew from ideas in formal and object-oriented design, making it easier to prototype stories, simulate environments, and handle dynamic interactions without traditional syntax like brackets or semicolons. Inform has influenced , education, and beyond pure IF, appearing in university courses on narrative computing. The project was open-sourced in April 2022, fostering community contributions via , and continues to evolve with tools for testing, debugging, and exporting to or formats. Notable works created with Inform include award-winning IF titles and experimental literary projects that blend programming with storytelling.

Overview and History

Purpose and Core Concepts

Inform is a programming language and design system specialized for developing text-based (IF) games, enabling authors to create immersive, narrative-driven experiences where players explore worlds through textual commands and responses. Created by Graham Nelson, it emphasizes simplicity and expressiveness, allowing creators to model complex stories and interactions without requiring advanced programming expertise. The genre traces its origins to Will Crowther's in 1976, a pioneering text adventure that simulated cave exploration via parser-driven input, sparking the evolution of parser-based games in the late 1970s and 1980s. Following the decline of commercial IF publishers like in the 1990s, Inform revitalized the medium by offering free, open tools that democratized IF creation, sustaining and expanding the genre into the digital age. At its core, Inform revolves around parser-based interaction, where a natural-language parser interprets player commands to drive the story. It builds worlds through a structured model comprising objects (entities like rooms or items), actions (player intents such as "take" or "open"), and rules (logic governing outcomes), fostering dynamic simulations of environments. Compilers generate portable for virtual machines, ensuring games run across diverse platforms without modification. Beyond , Inform supports literary experimentation by blending with , as seen in works exploring nonlinear . In , it teaches programming fundamentals, design, and through hands-on IF projects in classrooms.

Development Timeline

Inform was founded by Graham Nelson in 1993 as a for , specifically to generate stories compatible with the virtual machine and address the scarcity of tools following Infocom's closure in 1989. This initial version enabled authors to create parser-based text adventures without needing , quickly becoming a cornerstone of the interactive fiction community. Early releases, from versions 1 through 5 between 1993 and 1996, focused on refining compatibility while introducing features. In 1996, Nelson undertook a complete rewrite of Inform from first principles, producing Inform 6 to enhance stability, portability, and extensibility. This version introduced a C-like syntax and became the standard for over a decade, with ongoing maintenance leading to major releases such as version 6.3 in February 2004, which added official support for the to overcome Z-machine size and feature limitations. Further updates continued, with the latest version, 6.44, released on September 11, 2025, incorporating bug fixes, performance improvements, and continued Glulx enhancements under community maintainers David Kinder and Andrew Plotkin. Inform 7 marked a when introduced on April 28, 2006, adopting a syntax inspired by to make programming more accessible and readable, akin to writing prose. Glulx integration followed shortly in August 2006, expanding multimedia and memory capabilities. The language's design also drew from principles, with its source code structured as interwoven documentation and implementation using the Inweb tool. In April 2022, Inform 7 was open-sourced on under the repository ganelson/inform, facilitating community contributions after years of proprietary development. The latest release, version 10.1.2, arrived on August 31, 2022, with no major updates since; as of November 2025, community efforts on continue with bug fixes and compatibility improvements, though no major version releases have occurred since 2022.

Virtual Machines

Z-Machine

The is a developed by in 1979 to enable the porting of their game from mainframe computers to early personal computers, allowing for portable execution across diverse hardware platforms. This design facilitated the creation of compact, self-contained story files that could run on resource-constrained systems without requiring platform-specific recompilation. The operates using Z-code, a form of executed by interpreters, with specifications defined across eight released between 1979 and the late 1980s. Each version introduced incremental improvements, such as expanded memory capacities: Version 3 supports up to 128 for the story file, Version 5 extends this to 256 , and Versions 6 and 8 reach 512 , though dynamic memory (for runtime variables and the ) is consistently limited to 64 across all versions. Addressing schemes include byte, word, and packed formats to optimize storage in low-memory environments, where packed addresses multiply the stored value (e.g., by 2 in Versions 1-3 or 4 in Versions 4-5) to reference high-memory locations efficiently. Inform 6, the procedural version of the Inform language, targets the by default during compilation, producing .z* files interpretable by platforms via emulators such as Frotz. Inform 7 optionally supports output alongside Glulx, preserving compatibility with legacy interpreters while enabling on modern systems. Key architectural features include an object-oriented structure for the file, organizing game elements like rooms, items, and actors in a hierarchical tree of up to objects (in later versions), which supports dynamic manipulation during play. Built-in mechanics for saving and undoing turns leverage the machine's stack and memory snapshots, allowing interpreters to restore prior states without external files in early versions, enhancing player interactivity in text-based adventures. These constraints, including the fixed 64 KB dynamic memory limit and absence of native support for or (beyond rudimentary text effects in Version 6), eventually prompted the development of successor virtual machines like Glulx to accommodate larger, -rich games.

Glulx

Glulx is a 32-bit designed by Andrew Plotkin and first released in 1999 to address the limitations of the Z-machine, such as restricted memory capacity and absence of native support for modern features like . Developed as a portable platform for , it enables larger, more complex games by expanding the architectural possibilities beyond the 16-bit constraints of its predecessor. The core architecture of Glulx employs 32-bit addressing and data types, permitting story files up to four gigabytes in size (2^{32} bytes), which vastly exceeds the Z-machine's maximum of around 512 kilobytes. It includes built-in support for encoding to handle international characters and integrates with the Glk library for operations, facilitating features like graphics rendering (e.g., inline images and windows) and sound playback (e.g., AIFF or Ogg Vorbis files). Key enhancements include the Blorb format for bundling external resources such as images and audio into a single , streamlining distribution, and the ability to embed inline opcodes for custom low-level operations not covered by standard instructions. Within the Inform ecosystem, Glulx serves as the default target for Inform 7 compilations, producing .ulx or .gblorb story files optimized for its capabilities, while Inform 6 users can opt into Glulx via the -G directive for enhanced functionality in projects. Notable interpreters include Glulxe, the reference C-based implementation maintained for desktop platforms; Quixe, a JavaScript version for web browsers that supports modern features; and various mobile ports, such as iFrotz for and Lectrote for , ensuring broad accessibility as of 2025.

Inform 6

Compiler and Build Process

The , invoked via the inform , is a command-line that processes files with the .inf extension to generate story files in Z-machine Z-code or Glulx bytecode formats. It accepts input via the syntax inform [options] infile [outfile], where options control aspects like target format and debugging output, and the outfile defaults to a name derived from the input if unspecified. The build process involves several key steps: the compiler first parses the source code, interpreting directives such as Constant, Array, Include for library integration, and Abbreviate for string optimization. It then links the standard library, resolving references to predefined routines, objects, and verbs, while applying settings like memory allocation limits via $-prefixed directives (e.g., $MAX_STATIC_DATA). Finally, it assembles the code into a binary output file, such as .z8 for Z-machine version 8 or .ulx for Glulx, incorporating any specified metadata like serial numbers or header expansions. Error handling occurs throughout, with the compiler issuing warnings for issues like unused routines or deprecated syntax, and halting on fatal errors; debugging is facilitated by flags such as -a for assembly traces, -s for symbol tables, and -k for generating an XML debug file (gameinfo.dbg) that details compilation artifacts. Platform support emphasizes portability, with precompiled binaries available for Windows and source code that builds on Unix-like systems including and macOS using a standard C like . The tool enables cross-compilation, producing platform-agnostic story files runnable on any compatible interpreter regardless of the host build environment. Integration with build automation is straightforward, as its allows embedding in Makefiles or scripts for iterative during . Version 6.44, released on September 11, 2025, builds on prior enhancements like support for parenthesized expressions in switch cases (e.g., switch (CONST+1)), arbitrary-length identifiers and dictionary words, and new assembly statements such as @ -> BYTE for direct data compilation (introduced in 6.42). It also improves abbreviation handling via the -u option and tracing options (e.g., --trace PROPS), while fixing bugs in Glulx random number generation, error reporting for unclosed quotes, dynamic memory reallocation, line numbers in errors, and Z-machine globals with $ZCODE_COMPACT_GLOBALS. For Unicode, the compiler processes UTF-8 source files when the -Cu option is specified and uses the Zcharacter directive to extend the Z-machine alphabet for characters beyond ASCII, though full Unicode rendering depends on interpreter capabilities. Testing in the development workflow typically involves compiling the story file and executing it in interpreters such as Frotz or Bocfel for Z-code or Quixe for Glulx, allowing authors to interactively verify game logic, responses, and edge cases before final release. Tools like inform6-test can automate by scripting interpreter interactions against expected outputs.

Procedural Language Syntax

Inform 6 employs a procedural syntax inspired by C, enabling imperative programming for interactive fiction through directives and routines that model game worlds and handle player interactions. The language is object-oriented in a prototype-based manner, where objects serve as the primary building blocks, organized in a hierarchical tree structure with parent-child-sibling relationships to represent spatial and logical connections, such as rooms containing objects. Core keywords include Object for defining entities, Action for processing player commands, and Routine for encapsulating reusable code blocks. Key constructs emphasize development, such as property declarations using the with keyword for behavioral attributes (e.g., description, before, after routines that trigger at specific stages) and the has keyword for flags (e.g., openable, light). is defined via the Verb directive or ## notation, allowing up to 256 verbs with flexible lines to interpret input, such as Verb 'take' * noun -> Take;. Room and object hierarchies are established through the Object directive, forming a containment model where child objects inherit from parents, facilitating navigation and scoping in the game world. Control structures adapt C-like syntax for IF needs, including if, switch, while, for, and arrays, with specialized additions like objectloop for iterating over object classes (e.g., objectloop (x ofclass Room) { ... };) and meta-actions for debugging or introspection, such as ##Scope to list visible objects. Unlike standard C, Inform 6 omits pointers to simplify memory handling within Z-machine constraints, enforces a stricter type system with limited local variables (up to 15 per routine), prohibits goto statements, and integrates a built-in multi-level parser for natural language command processing without external libraries. The standard library provides foundational world modeling support, such as initial object placement and event handling. The syntax evolved from its 1993 debut in version 6.0, which introduced the basic C-inspired framework and object model, to the 1996 Third Edition (versions 6.10–6.20), featuring refinements like dynamic object creation, enhanced grammar flexibility, for properties, and improved debugging tools to streamline IF authoring.

Standard Library Components

The in Inform 6 consists of a collection of precompiled source files that implement core interactive fiction functionality, enabling developers to build efficiently without implementing basic mechanics from scratch. These files form a monolithic , typically included via the Include directive, and cover input handling, world simulation, and output generation. By providing standardized routines and data structures, the library enforces a consistent model of the game world while allowing extension through overrides. The library's structure revolves around three primary files: Parser, which processes and tokenizes player commands into meaningful actions; Verblib, which defines verb libraries and action execution logic; and Grammar, which specifies the syntactic patterns for English-language input using token-based rules. Parser internals manage disambiguation, multiple object selection, and error recovery, converting raw text into action tokens that Verblib then routes to appropriate handlers. Grammar, in particular, uses a declarative format to map verb phrases (e.g., <direction>, <noun>) to actions, supporting flexible command variations like "get the lamp" or "take lamp". Central to the library is the world model, a hierarchical system of objects organized by classes and properties that simulate spatial and relational dynamics. Classes such as Container enable objects to hold items internally, governed by properties like open (default closed state), openable (allowing manual opening), capacity (maximum child objects, default 100), and transparent (visibility of contents when closed). For example, a backpack defined as Class Backpack with name 'backpack' has container open openable; can store items via the PutIn routine, but requires explicit opening for access. Similarly, the Supporter class manages surface placement, with properties like supports listing supported items and no inherent openness, as in a table where Class Table has supporter; allows commands like "put book on table". These classes inherit from a base Object template, using parent-child relationships to track location (e.g., an item "in" a container or "on" a supporter), with routines like Move updating the hierarchy dynamically. Action processing integrates seamlessly with the world model, where Verblib routines handle standard verbs through before/after/action stages. For instance, the Take action checks if the target is movable (not static), not already held, and within scope, then executes Move to the player's inventory while awarding points if scored is set; failure triggers disambiguation or error messages. The Examine action, conversely, prints the object's description property if defined, or a default "You see nothing special" response, respecting visibility rules like light and scenery. Response printing relies on the library's print system, including PrintMessage for dynamic strings and the LibraryMessages array for overriding defaults (e.g., changing "Taken." to a custom phrase via LibraryMessages action Take = "You pick it up.";). Customization of the library occurs primarily through overriding routines with the Replace directive, which substitutes developer code for library functions (e.g., Replace TakeSub;), or by extending classes with new properties (e.g., Class MagicContainer has container ... with magic: 1;). Adding properties requires careful memory management, as each increases object overhead, potentially inflating story file size—especially in formats limited to 256K or 512K—while overrides can bloat code if not selective. This approach preserves the library's integrity, allowing targeted modifications like altering parsing logic in Parser without full rewrites. The library's design inherently reduces boilerplate by encapsulating repetitive tasks, such as scope checking (via ScopeToken in Parser) or inventory listing (in Verblib's InventorySub), freeing developers to define unique game elements atop a robust foundation. For example, including these files automatically provides over 50 standard actions and a full English parser, minimizing the need for custom input handling in simple games. Updates in Inform 6.44 (released September 2025) and the corresponding 6.12.7 enhanced error reporting, such as flagging self-referential class definitions during compilation, and improved compatibility for library extensions through refined module linking. These changes build on prior versions, like 6.21's strict mode, to aid and modular development.

Code Example

To illustrate the procedural syntax of Inform 6, consider a basic interactive scenario: a room containing a takeable apple on a table. This example demonstrates object and room definitions using directives, properties, and the for handling actions like taking and examining.
inform6
Constant Story "Kitchen Example";
Include "Parser";
Include "VerbLib";
Include "Grammar";

[ Initialise;
    location = kitchen;
    "Kitchen Example\n";
];

Object kitchen "Kitchen"
    with  description
        "You are in a cozy [kitchen](/page/Kitchen) with wooden counters. A table is here.",
    has  [light](/page/Light);

Object table "table" kitchen
    with  description "A sturdy wooden table.",
    has  static supporter;

Object -> apple "apple" table
    with  name 'apple' 'fruit' 'red' 'thing',
         description "A ripe, tempting fruit.",
    has  static;

[ TakeSub;
    if (noun == apple) {
        give player ~has apple;
        move apple to player;
        "You pick up the apple.";
        rtrue;
    }
    rfalse;
];

[ ExamineSub;
    if (noun has description) {
        print (noun.description);
        ".";
    } else
        "You see nothing special about it.";
    rtrue;
];
This code creates a simple room where the starts in the . The kitchen object defines the with a and light attribute for visibility. The table is a static supporter, and the apple is a object with synonyms via the name . Custom routines TakeSub and ExamineSub override library actions: taking moves the apple to the player's and prints a , while examining prints the . The includes provide the parser and standard actions. Player inputs like "take apple" or "examine fruit" are handled by the built-in parser matching to actions, updating the model via move and checks. In execution, Inform 6 compiles this to Z-code or Glulx, runnable on interpreters. Compared to Inform 7's declarative style, Inform 6 requires explicit routine definitions for custom behaviors but offers fine-grained control over the procedural flow. This example can be extended with more objects, routines, or grammar lines for complex interactions.

Notable Games

Inform 6 has been used to create many influential titles since its 1993 release, showcasing its procedural capabilities for intricate puzzles, narratives, and world modeling. One classic example is Photopia (1998) by Adam Cadre, a poignant blending multiple perspectives and time periods, which won multiple Awards including Best Game. Another standout is Spider and Web (1998) by Andrew Plotkin, an espionage thriller featuring interrogation mechanics and non-linear storytelling, also a multiple winner for Best Game and Best Writing. Savoir-Faire (2002) by explores alchemy and intrigue in an alternate , with innovative inventory-based puzzles that manipulate object properties, earning praise for its elegant design. For humor, Lost Pig (2007) by Admiral Jota (as ) follows an orc's quest to retrieve a mischievous pig, using comedic dialogue and exploration; it won the 2007 Interactive Fiction Competition. Inform 6 remains relevant for compact games targeting retro platforms or limits, with ongoing community use. In 2024, A Train to by Marco Innocenti won the IFDB Outstanding Inform 6 Game award for its atmospheric mystery set in Victorian . As of November 2025, the Interactive Fiction Database (IFDB) lists thousands of games built with Inform 6, many archived on the IF Archive. These works highlight Inform 6's enduring flexibility for both classic parser adventures and modern experiments.

Inform 7

Integrated Development Environment

The Inform 7 (IDE) is a standalone graphical application designed to facilitate the creation of through an intuitive interface that integrates editing, compilation, testing, and debugging tools. It provides a self-contained workspace where authors can write in , access embedded documentation, and iteratively refine their projects without relying on external command-line tools. The IDE contrasts with earlier command-line-based predecessors by offering a visual, interactive that lowers the barrier to entry for non-programmers while supporting advanced features for experienced users. At its core, the IDE features a built-in source text editor that supports by organizing files into dedicated folders (typically with a .inform extension), enabling authors to maintain structured projects with multiple source files if needed. The editor includes to distinguish keywords, rules, and other elements, aiding readability and error spotting during development. Real-time source indexing automatically parses the to generate dynamic , such as the World Index, which visualizes the game's model world—including a stylized of rooms and their connections, a of kinds with default values, and lists of actions, rules, and relations—updating as the source evolves to provide conceptual overviews without manual intervention. Key testing and debugging tools streamline the development cycle. The prominent "Go" button compiles the source text into an executable story file and launches it directly in an embedded panel, allowing immediate playtesting; shortcuts like F5 (Windows) or Command-R (macOS) accelerate this process, and the discards prior versions automatically for seamless iteration. If compilation fails, an Errors panel displays detailed diagnostics, highlighting problematic lines with explanatory messages derived from the compiler's analysis, such as syntax ambiguities or undefined relations. For final releases, the supports building polished versions, including the generation of Blorb packages (.gblorb files) that bundle the story file with resources like images or , ensuring across interpreters. This workflow transforms source (.ni files) into intermediate Inform 6 code and ultimately into Glulx or story files, with the handling packaging for distribution. The is cross-platform, available for Windows, macOS, and (via RPM, DEB, or packages), ensuring accessibility across operating systems. Version 10.1.2, released on August 31, 2022, introduced stability improvements, such as enhanced error handling and better , making it the current standard distribution. Following the open-sourcing of Inform 7 in April 2022, the IDE's is hosted on , allowing community contributions to features like UI enhancements and bug fixes, which are integrated into subsequent releases.

Natural Language Programming

Inform 7 introduces a in interactive fiction authoring by employing a that allows developers to define game rules and structures using English-like statements, making the source code highly readable and accessible to non-programmers. This approach contrasts with traditional programming languages by prioritizing declarative descriptions of intent over imperative instructions, enabling authors to model complex worlds through intuitive prose. The syntax principles of Inform 7 revolve around declarative rules, kinds, and phrases, which form the foundation for expressing game logic. Declarative rules specify behaviors in response to actions or conditions, such as "Instead of taking the cake, say 'You can’t take the cake – it’s too hot!'" to override default interactions. Kinds define hierarchical categories for objects and values, promoting an object-oriented structure; for instance, "A is a kind of thing" establishes doors as subclasses of general objects, inheriting properties while allowing specialization. Phrases serve as reusable building blocks for actions, conditions, or values, written in natural prose like "To decide what number is the of (N - a number): ..." to encapsulate logic that can be invoked across the game. Core elements extend this natural language framework with tools for data management and computation. Tables organize structured information in a tabular format, akin to spreadsheets, for storing inventories, dialogues, or statistics; an example might declare "Table of Elements" with columns for name, symbol, and , populated row by row with text and numerical entries. Equations handle calculations and properties declaratively, such as "The capacity of a backpack is usually 3" to set default limits that can vary by instance, supporting numerical kinds like distances or volumes for realistic simulations. The activity system provides a mechanism for overriding and customizing Inform's built-in processes, using rules like "Before printing the name of a : say ' ';" to modify output generation without altering core actions. Drawing inspiration from , Inform 7 treats programming as an object-oriented modeling exercise in , which significantly reduces verbosity compared to procedural by focusing on high-level descriptions rather than granular details. In contrast to Inform 6, which relies on low-level routines resembling for direct control, Inform 7 eliminates such imperatives, emphasizing author intent through rule-based declarations that abstract away machine-level concerns. This relational, paradigm fosters a more narrative-driven development process. Version 10.1.2, released in August 2022, includes refinements to the language's parsing capabilities, improving the handling of complex constructs for greater robustness in interpretation.

Extensions System

Inform 7's Extensions System enables authors to incorporate reusable modules that enhance the core functionality of projects, such as adding custom rules for navigation, conversation, or user interfaces. These extensions function as modular add-ons, written entirely in Inform 7's syntax, allowing developers to import predefined behaviors without rewriting common features from scratch. For instance, the extension Facing by introduces actions for characters to face specific directions or peer through doors, facilitating more nuanced spatial interactions in games. Installation occurs seamlessly within the Inform IDE, where authors can select "Install Extension..." from the to download and integrate files directly, or browse the Public Library tab in the Extensions panel for an online index of vetted options. This built-in directory simplifies access to community-contributed extensions, which are stored in the project's Extensions folder for easy management and removal. As of 2025, the primary of I7 collection hosts over 130 extensions, with additional ones available from independent repositories, providing a rich ecosystem for customization. Extensions follow a standardized structure to ensure portability and reliability: each begins with a titling heading specifying the name, author, and version (e.g., "Version 11 of Facing by Emily Short"), followed by an optional rubric for documentation and examples. Compatibility is declared via headers that indicate support for specific Inform versions (such as 10.1) and output formats like Glulx or Z-code, helping to avoid runtime conflicts during compilation. Versioning employs a dotted numeric scheme (e.g., 5.2.1) to track updates, allowing authors to specify dependencies and resolve overlaps by overriding rules or using conditional inclusions. Among notable extensions, Basic Help Menu by (updated by Wade Clarke) implements a comprehensive HELP command that presents players with instructional options via tables, improving accessibility for newcomers to . For wordplay mechanics, extensions like Text Capture and custom modules in games such as Counterfeit Monkey by enable dynamic letter manipulation and object transformation, supporting intricate linguistic puzzles. These tools exemplify how extensions promote reusable, sophisticated features without altering the language's natural syntax. The community's role in extension development expanded significantly following Inform 7's open-sourcing in 2022 under the 2.0, which facilitated collaborative updates on platforms like . Repositories such as Friends of I7 saw increased contributions, including compatibility patches for version 10.1 and new experimental modules, fostering a more vibrant and maintainable ecosystem.

Code Example

To illustrate the natural language programming paradigm of Inform 7, consider a basic interactive scenario: a kitchen containing an apple that the player can take or eat, with customized responses stored in a table for modularity. This example demonstrates declarative rules that define world behavior in English-like syntax.
inform7
"The Kitchen Puzzle" by Anonymous

The Kitchen is a room. "You are in a cozy kitchen with wooden counters. A shiny red apple rests on the table."

The apple is a thing on the table in the [Kitchen](/page/Kitchen). The description of the apple is "A ripe, tempting [fruit](/page/Fruit)." Understand "fruit" or "red thing" as the apple.

Table of Apple Responses
action (text)    response (text)
taking          "You pick up the shiny red apple."
[eating](/page/Eating)          "You take a bite—it's crisp and sweet!"

Check taking the apple:
    if the apple is not visible:
        say "There's no apple in sight.";
        stop the [action](/page/Action).

Instead of eating the apple:
    choose row with action of "[eating](/page/Eating)" in the Table of Apple Responses;
    say "[response entry].";
    now the apple is nowhere.

Carry out taking the apple:
    choose row with action of "taking" in the Table of Apple Responses;
    say "[response entry]."
This code creates a self-contained puzzle room where player inputs like "take apple," "take fruit," or "eat red thing" are parsed and handled. The Understand phrase extends the parser to recognize synonyms, allowing flexible command entry without rigid keywords. Rule phases structure interactions: the Check phase validates preconditions (e.g., visibility) and halts invalid actions; Instead overrides defaults for custom outcomes (e.g., eating removes the apple via the now ... is nowhere phrase, updating the world state); and Carry out executes post-validation effects, such as printing table-driven messages. The table provides a simple, extensible way to associate actions with responses, enabling easy addition of rows for new behaviors without altering core rules. In execution, Inform 7 models the world state as a : objects have locations and properties that change based on rules, while input is tokenized and matched against defined understandings to trigger appropriate actions. For instance, "take fruit" resolves to the apple via , checks , carries out the take (printing the response), and updates the . This source compiles via an intermediate Inform 6 layer into Glulx bytecode, a 32-bit format supporting larger stories, , and multimedia beyond the older limits. Compared to equivalent Inform 6 code, which requires procedural imperatives like explicit object creation and low-level handling in a C-like , Inform 7's declarative style enhances readability, allowing authors to focus on narrative logic rather than boilerplate implementation. This basic example can be enhanced with extensions for more sophisticated parsing or object behaviors.

Notable Games

Since its release in 2006, Inform 7 has enabled the creation of numerous innovative titles that leverage its to craft intricate narratives and mechanics. One standout example is Counterfeit Monkey (2012), authored by , which features a unique letter-removal device allowing players to transform objects and solve espionage-themed puzzles in a linguistically playful world. Another influential work is Hadean Lands (2014) by Andrew Plotkin, a sophisticated simulation set aboard a damaged , where players perform rituals combining elements to progress through interlinked challenges. For a lighter tone, The Wizard Sniffer (2009) by Brian Fitzgerald humorously casts the player as a hapless dog tasked with detecting a wizard, emphasizing comedic interactions and parser-driven exploration. The adoption of Inform 7 post-2006 has fostered greater accessibility for authors, resulting in a surge of narrative-driven games that prioritize and emotional depth over traditional puzzle-heavy designs. This shift is evident in the XYZZY Awards, where Inform 7 titles have frequently excelled; for instance, Counterfeit Monkey secured multiple categories in 2012, including Best Game, Best Puzzles, and Best Writing. Similarly, Hadean Lands won Best Game and other honors in 2014, highlighting the system's capacity for complex simulations. As of 2025, the Database (IFDB) catalogs over 300 games explicitly tagged as built with Inform 7, with many more integrated into community platforms like IFDB for discovery and play. This body of work demonstrates Inform 7's enduring role in the genre, supported by its integration with repositories such as the IF Archive. Recent community efforts continue to showcase Inform 7's versatility through open-source extensions, as seen in 2024 releases like Moondrop Isle, a collaborative puzzle adventure by multiple authors including Ryan Veeder, and by Marina Diagourta, which explores introspective themes. These titles, often shared via and IFDB, reflect ongoing experimentation with the system's extensions for multimedia and branching narratives.

References

  1. [1]
    Inform 7 | Inform is a natural-language-based programming ...
    Inform is a programming language for creating interactive fiction, using natural language syntax. Using natural language and drawing on ideas from linguistics.
  2. [2]
    Inform 6
    Inform is a design system for interactive fiction, created in 1993. This home page is a central clearing-house for Inform resources.
  3. [3]
    Inform - IFWiki
    Inform is an interactive fiction programming language, created by Graham Nelson in 1993 and now one of the most popular IF development systems.
  4. [4]
    "Adventure," or "Colossal Cave Adventure," is the First Computer ...
    The popularity of Adventure led to the wide success of interactive fiction during the late 1970s and the 1980s, when home computers had little, if any, graphics ...
  5. [5]
    DM4 §46: A short history of interactive fiction - Inform 6
    The history of interactive fiction in the twentieth century has yet to be written. One outline might be as follows: an age of precursors and university games, ...
  6. [6]
    DM4 §24: The world model described - Inform 6
    The Inform parser will not generate actions concerning objects of which the player is unaware. Thus there is only one action requiring you to both see and ...Missing: core | Show results with:core
  7. [7]
    [PDF] The History and Nature of Interactive Fiction - DSpace@MIT
    The instructions for the first interactive fiction, Adventure, declared "I will be your eyes and ... released to the world by Crowther and Woods in 1976.<|control11|><|separator|>
  8. [8]
    Interactive Fiction in the Classroom | Edutopia
    Apr 14, 2015 · Interactive Fiction as a Teaching Tool​​ Inform games are typically single-player—the player types after a command prompt. For example, one might ...
  9. [9]
    The 100 Top Programming Languages in 2025 - BairesDev
    Jun 2, 2025 · We'll list the top 100 programming languages in no particular order, meaning that the fact we discuss C first doesn't mean that it's better than Java or Python.
  10. [10]
    Inform Programming Language Information & Resources
    Inform is a programming language and design system for interactive fiction originally created in 1993 by Graham Nelson ... Timeline • Language Types • Programming ...
  11. [11]
    Inform - Wikipedia
    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 ...Inform 6 · The Inform 6 programming... · Inform 7 · Inform 7 programming language
  12. [12]
    Release Inform 6.42 · DavidKinder/Inform6
    ### Release Notes for Inform 6.42 (Released 10 Feb 2024)
  13. [13]
    Inform 7 v10.1.0 is now open-source
    Apr 28, 2022 · This software had been used extensively since 28 April 2006, but by 2016 its source code was in considerable need of modernisation. In part that ...
  14. [14]
    The core software distribution for the Inform 7 programming language.
    Inform is a programming language for creating interactive fiction, using natural language syntax. Using natural language and drawing on ideas from ...
  15. [15]
    Appendix D. A short history of the Z-machine - Inform 6
    The original purpose of the Z-machine was simply to implement as much as possible of the mainframe game "Zork" on the first popular wave of home computers.
  16. [16]
    ZIL and the Z-Machine - The Digital Antiquarian
    Jan 7, 2012 · Marc Blank and Joel Berez were considering how to bring Zork to the microcomputer. Really, they were trying to solve three interrelated problems.Missing: structure | Show results with:structure
  17. [17]
    The Z-Machine Standards Document - Inform 6
    Note that the total of dynamic plus static memory must not exceed 64K. (In fact, 64K minus 2 bytes.) This is the most serious limitation on the Z-machine.
  18. [18]
    Summary of Z‑Machine Version Differences - Hans Prestige
    Summary of Z‑Machine Version Differences · Contents · Memory Limits · Text Encoding · I/O · Screen Model · Header Fields · Routines & Instructions · Footnotes.
  19. [19]
    Compiling for the Z-machine version 3 - Zarf Updates
    May 22, 2020 · Graham Nelson releases Inform, a compiler which can generate Z-machine game files. Inform let you write games for any version, but in practice, your choice was ...Missing: founding | Show results with:founding<|separator|>
  20. [20]
    2.14. Limits and the Settings panel - GitHub Pages
    This is only likely to happen with the Z-machine format, since Glulx has a huge capacity; so the cure here is to switch to Glulx in the Settings.
  21. [21]
    6. The game state: storage and routine calls - Inform 6
    6.1. 2. On a "restore" or "undo" (which restores a game saved into internal memory), the entire state of play is written back except that 'Flags 2' in the ...Missing: mechanics | Show results with:mechanics
  22. [22]
    Glulx: A 32-Bit Virtual Machine for IF - E BLONG
    We want a virtual machine which the Inform compiler can compile to, without the increasingly annoying restrictions of the Z-machine. Glulx does this, without ...
  23. [23]
    Glulx - Inform - ZMachine
    Apr 16, 2013 · However, it does have limitations, mostly because of its 16-bit rather than 32-bit architecture, and because its sound and graphics support ...
  24. [24]
  25. [25]
    Glulx - E BLONG
    Glulx. A 32-Bit Virtual Machine for IF. VM specification version 3.1.2. Andrew Plotkin <erkyrath@eblong.com>. Copyright 1999-2014 by Andrew Plotkin.
  26. [26]
    Blorb: An IF Resource Collection Format Standard - E BLONG
    The Glk portable I/O library uses Blorb as a resource format, and therefore so does the Glulx virtual machine. (See http://eblong.com/zarf/glk/ and http:// ...<|control11|><|separator|>
  27. [27]
    What is the Z-code? - The Interactive Fiction Community Forum
    Aug 17, 2020 · Normally in Inform7 the default output format is Glulx and not Z8. So if you just open Inform7 and make a new project, start typing code, and ...
  28. [28]
    DavidKinder/Glulxe: The Glulx VM reference interpreter - GitHub
    The source code in this package is copyright 1999-2023 by Andrew Plotkin. It is distributed under the MIT license; see the "LICENSE" file.Missing: machine | Show results with:machine
  29. [29]
    Quixe: a Glulx VM interpreter written in Javascript - E BLONG
    Jun 2, 2025 · Quixe is a pure-Javascript interpreter for the Glulx IF virtual machine. It can play any Glulx game file (.ulx or .gblorb) in a web browser.Missing: Glulxe mobile
  30. [30]
    Glulx interpreters - IFWiki
    Feb 12, 2022 · This page shows stable interpreters for the Glulx format. They are listed in date order (latest release first). Click to download the interpreter, or to play ...Missing: Quixe mobile
  31. [31]
    inform(1) — inform6-compiler — Debian testing
    inform compiles an Inform version 6 story file ( ... Source file: inform.1.en.gz (from inform6-compiler 6.42-1). Source last updated: 2017-01-11T15:43:20Z.
  32. [32]
    Inform 6 Reference Addendum
    This addendum covers updates to the Inform 6 language and compiler. A few errata are also included. The changes described here are mostly to DM4 chapters 1-7, ...
  33. [33]
    DavidKinder/Inform6: The latest version of the Inform 6 ... - GitHub
    A compiler for interactive fiction (text adventure games). Release notes, manuals, executables and more are available from https://ifarchive.org/indexes/if- ...
  34. [34]
    Inform 6 - IFWiki
    Oct 2, 2025 · Inform 6 is version 6 of Inform, an interactive fiction programming language created by Graham Nelson, now maintained by David Kinder and Andrew Plotkin.Missing: 6.42 | Show results with:6.42<|separator|>
  35. [35]
    Step-by-step guide to setting up inform6-test (MacOS) - Inform 6
    Mar 15, 2021 · Does anyone feel inclined to post a step-by-step guide (i.e. showing terminal commands) to setting up zarf's inform6-test environment (see ...Missing: development workflow
  36. [36]
    [PDF] The Inform Designer's Manual
    The Inform Designer's Manual, by Graham Nelson, is the fourth edition of the manual for the Inform program, which includes its source code and documentation.
  37. [37]
    [PDF] Using the Compiler - Inform 6
    Inform has a number of directives for controlling which pieces of source code are compiled: for instance, you can divide your source.<|control11|><|separator|>
  38. [38]
    None
    Summary of each segment:
  39. [39]
    Inform 6 package for Unix version 6.42 Release 1 is ready
    Apr 11, 2024 · Inform 6 version 6.42 is finalized with commit e528e48. Updated inform.1 manpage. Updated Standard Inform Library to 6.12.7 commit a0d3e3d.Inform 6.42 - Inform 6 - The Interactive Fiction Community ForumBroken grammar in Inform 6.42More results from intfiction.org
  40. [40]
    3.1. Descriptions
    ### Extracted Code Example and Summary
  41. [41]
    1.1. Preface
    ### Summary of Initial Simple Code Example from https://ganelson.github.io/inform-website/book/WI_1_1.html
  42. [42]
    Search for Games
    ### Summary
  43. [43]
    Counterfeit Monkey - Details - The Interactive Fiction Database
    Dec 30, 2012 · Or download CounterfeitMonkey-11.gblorb and run the game in a Glulx interpreter. Counterfeit Monkey.gblorb on the IF Archive (may not be the ...
  44. [44]
    Hadean Lands - Details - The Interactive Fiction Database
    Jan 7, 2015 · Hadean Lands. by Andrew Plotkin profile. 2014. Fantasy Inform 7. Web Site | External Links. (based on 68 ratings) Estimated play time: 30 hours ...
  45. [45]
  46. [46]
    IFComp - History
    Eileen Mullin launched the XYZZY Awards, an annual online gala ... By 2013, Inform 7 and Twine had become the dominant tools for creating IFComp entries.
  47. [47]
    Narrative role-playing adventure game: Counterfeit Monkey
    Oct 1, 2022 · Counterfeit Monkey, by Emily Short. A text parser game built in Inform 7 and first released December 30th, 2012, with some improvements ...
  48. [48]
    Hadean Lands (Andrew Plotkin) - Emily Short's Interactive Storytelling
    Oct 30, 2014 · Hadean Lands is a massive, alchemy-driven parser IF game with a shift to meta-commands, fractured time, and a focus on exploration and systems ...
  49. [49]
    Index: if-archive/games/source/inform
    Adventure aka Colossal Cave, by William Crowther. This is Will Crowther's original, pre-Woods 1976 game, ported to Inform 7 by Chris Conley. Release 4 / Serial ...
  50. [50]
  51. [51]
  52. [52]
    Best Inform 7 Games for New Authors
    Apr 11, 2025 · I'll suggest Sting as a well-made natural language game with commented source. IFDB · Sting. Six bees. Five bags of groceries. A four-pound ...What are some particularly huge RPG-like projects made in i7?Original Adventure Game ported to Inform 7 - Project AnnouncementsMore results from intfiction.orgMissing: notable written
  53. [53]
    3.4. Regions and the index map - GitHub Pages
    In the World Index, Inform draws a map - or at least a stylised attempt at a diagram of the rooms and their connections: this will not always correspond to how ...Missing: features | Show results with:features
  54. [54]
    4.1. New kinds - GitHub Pages
    Browsing the Kinds index shows that Inform builds its model world out of "objects". (That's really what objects are: "object" is a kind of value used to ...<|control11|><|separator|>
  55. [55]
    Regions - The Inform 7 Handbook - Read the Docs
    Once you've created a region, the Inform IDE will color the rooms of the region to match one another in the Index Map. This is one of several features in the ...
  56. [56]
    1.4. The Go! button - GitHub Pages
    If the Source is empty of text, Inform will be unable to create anything: it needs at least one name of a location where the drama can unfold. For reasons of ...Missing: IDE Index error diagnostics
  57. [57]
    Inform 7 documentation and resources
    Dec 19, 2011 · Inform 7 10.1.2 (current, 2022-08-31). Official Inform website · Docs for I7 10.1 and IDE (integrated development environment).
  58. [58]
  59. [59]
    Downloads | Inform 7 - GitHub Pages
    A full version history of Inform is here, and this links to release notes showing the development of the language back to 2006. Archive of old releases. The ...
  60. [60]
    11.1. What are phrases?
    ### Summary of Reusable Actions (Phrases) in Inform 7
  61. [61]
    16.1. Laying out tables
    ### Summary of Tables in Inform 7 (Section 16.1)
  62. [62]
    15.1. How do we measure things?
    ### Summary of Equations and Calculations in Inform 7 (Section 15.1)
  63. [63]
    18.1. What are activities?
    ### Summary of Activity System for Overrides in Inform 7
  64. [64]
    27.14. Using Inform 6 within Inform 7 - GitHub Pages
    What made Inform 6 low-level was that its style of coding was much more like traditional programming: it reads as a simple form of C, or an elaborate form of ...<|control11|><|separator|>
  65. [65]
    Inform 7: A relational DSL for interactive fiction with natural language ...
    Jun 10, 2006 · Graham Nelson. Natural Language, Semantic Analysis and Interactive Fiction. 2005. The Inform 7 implementation comes with a slick graphical ...<|separator|>
  66. [66]
    Friends of I7 Extensions for v10.1
    Requires version 5 of Neutral Standard Responses. Requires a patch to Parser.i6t as of 21 May 2022. Tested with a patched version of Inform 10.1.0.
  67. [67]
    Extensions
    This version of the library is intended for projects using version 10 of Inform. More extensions and newer versions of some extensions here may be found at the ...
  68. [68]
    2.10. Installing extensions - GitHub Pages
    In fact, though, Inform can automatically install extensions for us: we need only select the "Install Extension..." item on the File menu. The actual extension ...
  69. [69]
    Extensions for Inform - I7 Handbook
    something that's not included in the standard version of Inform.Missing: system | Show results with:system
  70. [70]
    27.6. Version numbering - GitHub Pages
    Version numbers should consist of one to three whole numbers divided by dots, with no negative numbers allowed. Thus "5", "3.3" and "2.1.71652" are all ...
  71. [71]
    27.7. Extensions and story file formats - GitHub Pages
    Inform therefore provides a way for extensions to declare the formats they are compatible with. All that is required is to add a proviso in brackets after the ...Missing: structure | Show results with:structure
  72. [72]
    [PDF] INFORM 7
    Inform is a natural-language design system for interactive fiction, first created in 1993. To most users it seems a single unified tool, but in fact is made ...
  73. [73]
    Inform 7 extensions -- some may be ready for public use ... - GitHub
    This git branch of the Friends of I7 Extensions is for Inform 7 version 10.1 (the current version, released in 2022). The extensions here are believed to work ...Missing: system | Show results with:system
  74. [74]
    Narrascope 2022 talk | Inform 7 - GitHub Pages
    Jul 31, 2022 · This enables Inform to take advantage of an existing feature of the “blorb” packaging format in which binary data files can be packaged up with ...Missing: IDE | Show results with:IDE