For the current version, 6M62:
- Writing with Inform
- The Recipe Book
- General Index to Inform Documentation
- Writing with Inform/The Recipe Book epub
Except for the epub, those are available through the IDE. The epub is included among the IDE’s files but you have to hunt for it. (“IDE” means “integrated development environment”, a term for the kind of tool that the main Inform 7 application is.)
These are excellent – start here.
- Allison Parrish’s Inform 7 Concepts and Strategies (6M62)
- Carolyn VanEseltine’s Welcome to Adventure: A Quick-Start Guide to Inform (6L38)
- Jason Boyd’s Inform 7 Introductory Guide (6M62)
Juhana Leinonen’s Borogove is a free web app to edit and run I7 online, perfect for experimentation without installing anything; Borogove’s snippets feature allows sharing code examples. Borogove.io offers free on-line game hosting.
The official packages mentioned below are available on the Inform 7 downloads page.
MacOSUse the package on the I7 site; don't try using the one from the App store (despite the assurance that "the current version of Inform is always available from the Mac App Store.") There are known issues with [url=https://intfiction.org/t/inform7-ide-slow-editing/49086/26]slowness on machines with TouchBars[/url] and [url=https://intfiction.org/t/inform-on-mac-no-cursor/44491/2]the cursor disappearing in Dark Mode[/url]. An [url=https://github.com/angstsmurf/Inform/releases/tag/v.1.68.unofficial]unofficial MacOS IDE release[/url] addresses these. Both the official and unofficial versions allow compiling for 6L02 and 6L38 as well as 6M62.
WindowsUse the package on the I7 site (said to work with any version of Windows from XP SP 3 on). Or there's a current [url=https://intfiction.org/t/update-to-windows-inform-7/44541]beta release of a new Windows version[/url] that allows compiling for 6L02 and 6L38 as well as 6M62. It's 64-bit-only, and has been tested only on Windows 10, but may work with older versions. Be warned that there have been multiple reports of security/antivirus programs causing problems with it: [url=https://intfiction.org/t/error-warning-on-startup-started-happening-suddenly-a-couple-days-ago/46657/3]Avast[/url], [url=https://intfiction.org/t/suddenly-getting-compiler-error-2/52338/2]AVG[/url], [url=https://intfiction.org/t/inform7-slow-compiling-windows-10-windows-defender-problem/10165]Windows Defender[/url].
Linuxit's complicated. The versions of Linux for which there's an official IDE package have long since ceased to be supported, and it was built with GTK 2, making it hard to build in a modern GTK 3 env.. A GTK 3 update is in development; the [url=https://flathub.org/apps/details/com.inform7.IDE]Flatpak release of I7 6M62 for Linux[/url] is the easiest way to get it. For known issues or build notes, see the [url=https://intfiction.org/t/gnome-inform7-6l38-6m62-ide-now-running-on-modern-ubuntu-fedora-os/43329]Gnome-inform7 6L38/6M62 IDE thread[/url].
The download page also offers a CLI-only version for Linux, which comes with “the cheesy Perl interface”. Or consult How to use ni, inform6, and cBlorb by CLI for info on using those commands directly. Some projects to help are Vimform7, the Inform 7 extension for VS code, Spaceformacs, and inf7. There’s no easy way to build for 6L38 or 6L02 on a modern Linux: an old Linux in a VM or Windows Inform in WINE are the options.
All of the official packages include some components for which there are more recent versions. Some updates can be found here:
- Inform 6 6.35; Inform 6 6.35 for Windows. 6.35 is stable; Inform 6 6.36 is the development version.
- Glulx Entry Points and Glulx Text Effects by Emily Short
- the Quixe, Parchment, and Vorple templates
Each release had at least minor changes to the language, but version 6L02 brought many backwards-incompatible changes: code written for 6G60 or earlier is unlikely to compile in 6L02 or later. For discussion of differences, see Emily Short’s Working notes on updating extensions for Inform 6L02, intfiction forum thread Compilation problems with 6L02, and Ron Newcomb’s Inform 7 Substitutions, Substituted. This document usually notes the version as of which something was current. The Change Log has exhaustive details:
- The Change Log (comprehensive)
- Change Logs per release
- Change log in Mantis (the former bug tracker)
- Using the I7 Windows IDE with NVDA (a screenreader)
A new version is under development, planned to be open source on release. No schedule has been announced.
Graham Nelson's talks on the future of Inform 7
Aaron Reed’s book, Creating Interactive Fiction with Inform 7. It was for 6E72; Creating Interactive Fiction with Inform 7’s errata provide updates for 6G60. Creating Interactive Fiction’s publisher lists the physical book as available to order and B&N sells an epub of Creating Interactive Fiction for the Nook. (There hasn’t been a legitimate PDF version; if you see someone offering such for sale, it’s… not legitimate.) Aaron plans to update Creating Interactive Fiction at some point.
Compilation produces a Project Index that can be browsed in the IDE which offers an enormous amount of detail about Inform 7. It includes information you won’t find in the documentation: it’s the closest thing to a reference manual.
In particular, the Project Index’s Phrasebook Index section (Phrases, Lexicon, Relations, Verbs) is good to check (along with the documentation’s General Index) when you half-remember something you’ve heard of and need to find the right term to look up.
The actual syntax the I7 compiler uses to parse Inform 7 code can be found in Languages/English/Syntax.preform in your installation’s Internal directory. The Backus-Naur Form syntax provided isn’t accurate. See the Syntax.preform documentation PDF (6L02). Syntax.preform also lets you see what irregular verbs and plurals Inform 7 handles and how.
- The Friends of I7 Extensions Github repo is the closest thing to a canonical extension collection. But any number of things are never-finished works in progress, outdated, or otherwise not working; frequently, this is not indicated.
- The Friends of I7 Extension Archive should be your first stop if you’re looking for old extensions; for a deeper dive try the Wayback Machine archive of extensions that used to be on Inform7.com or this more raw Wayback Machine search of old extensions
- The Public Library discussed in the documentation is officially disconnected, but the Public Library extensions are still available (but these are older versions in many cases; check the Friends of I7 extensions for updates)
- Andrew Plotkin’s I7 extensions
- Counterfeit Monkey’s Extensions. Beyond the many unique extensions, many other extensions included here are modified from their original versions.
- The I7 Extension Library on Heroku is not maintained and has been superseded by the Friends of I7 Extension repo
- Separate from the Authoring > Inform 7 category here, there is a Technical Development > Inform Extensions category chiefly discussing issues with existing published extensions
- Glulx/Glk extensions ecosystem
I7 includes the Standard Rules with every game. They’re well-commented and the authority on the I7 World Model and Inform 7’s default (they used to be labeled Appendix A of the documentation). They can be browsed in the IDE.
Note the warning in Writing in Inform 27.14: things in the SR that look modifiable may not really be; they could be interdependent with something hard-coded in the compiler. And beware that all of the past three versions’ Standard Rules (6L02, 6L38, 6M62) are marked Version 3/120430, but each is different. (Likewise, 6E59 through 6G60’s Standard Rules are all marked Version 2/090402 but each is different.)
- Chin Kee Yong’s The Weight of a Soul (6M62)
- Victor Gijsbers’ Kerkerkruip (6M62)
- Alex Proudfoot’s ports of The I7 Standard Examples, including Emily Short’s Bronze (6M62)
- Daniel Stelzer’s Scroll Thief, Scroll Thief Bitbucket repo (6L38)
- Jack Welch’s re: Dragon, a Vorple I7 game with a non-standard interface (6M62)
- Wade Clarke’s Ghosterington Night (6L38)
- Crowther and Woods’ Adventure (6M62)
- Ryan Veeder Expo for Good IF Event 1: Beautiful Source Code (6M62)
- IFDB search for well-rated I7 games from 2016 on with source code (6L38 and 6M62)
- Many Inform games’ source code on the IF archive. Not labeled with versions – some are old; some are recent.
- Emily Short’s Counterfeit Monkey (6M62) Especially worth examining if you’re writing a large game or concerned with performance: it’s one of the larger I7 games and has been extensively optimized. Don’t deprive yourself of the pleasure of playing it without spoilers first, though.
I7 compiles to Inform 6 before that gets compiled to Glulx or z-code. The Inform 6 Standard Library isn’t involved; I7 uses the I6 Template layer that every Inform installation has under Internal/I6T. The (well-commented) template files used to be labeled Appendix B of the documentation. There are places where the best or only way to do something is by interacting directly with the I6 layer (many extensions do so) and other places where I7 behaviors can be better understood by understanding how they’re an artifact of I6 representations or where reading your project’s auto.inf, the I6 code that I7 generated, is useful to investigate problems.
- Emily Short’s Translation of Inform 6 Entry Points into Inform 7 (4X60)
- Much more at The List of Inform 6 Documentation
- Scope and visibility and more on scope and visibility
- Spatial and other relations between objects and Spatial relations addendum
- The Hidden Secrets of Inform 7
- Command-line Inform 7: how to use ni, inform6, and cBlorb by CLI
- Checklist for authors of IF and Inform 7 IF in particular
- Performance Best Practices (Spoiler: there are a couple of expensive things to avoid, but there’s no substitute for profiling to see where your game in particular is spending its time)
- Good Coding Style in Inform 7
- Grammar Token reference (for Understand assertions)
- If you’re encountering memory limits in compilation, see Memory Limit and Storage Variable Limit settings or try Inform 6 6.36, which uses dynamic allocation and does away with these limits.
Mantis, the bug tracker mentioned in the documentation, is no longer available and there is no news about when a replacement may be operational. In the meanwhile, bug reports on the Inform 7 IDEs could be made at:
There are known bugs in 6M62. The 6M62 Patches by Friends of I7 extension provides fixes for a few known issues. The unofficial I7 Bug tracker provides a place to search for them or share your own bug report. As an unofficial bug tracker, it’s just for information’s sake: to search for and discuss issues and workarounds. It has only been around since June but already has useful content.
Inform 6 bugs can be reported at the Inform 6 github repo (but you would likely be advised to upgrade to the current version, 6.35; the IDE packages include 6.33N.) There isn’t a way to search for known issues in cBlorb or to report them.
The old Inform 7 suggestion forum and some Mantis bugs are accessible via the Wayback Machine. The highest numbered bug mentioned in 6M62’s change log is 0001800; 0002217 from 2019-11-26 appears to be the latest bug the Wayback Machine has a reference to.
- glulxe, the reference implementation (C)
- git (C). It had that name before the version control system existed.
- Zag (Java)
- Emacs-glulx (Elisp)
There are many Glulx interpreter applications built for particular systems that include Glulxe, Git, or Quixe. These interpreters make their I/O calls to the Glk API and must be accompanied by a Glk library to actually be useful (Emacs-glulx and Zag’s Glk imprementations are built-in). Some significant implementations:
- cheapglk (no window, no status line, just streams of input and output; of interest largely for testing and development)
- glkterm (uses the curses library, widely available in any UNIX-like environment)
- glktermw (glkterm with “wide char” support, i.e., it can handle Unicode non-ASCII characters)
- remglk (doesn’t directly receive user input or display output to the user; it receives and emits JSON objects, allowing use by other applications potentially across a network)
- garglk (the Gargoyle multi-system interpreter uses its own)
- Andrew Plotkin’s The Game Author’s Guide to Glulx Inform
- Andrew Plotkin’s Glulx Inform Technical Reference
- Adam Cadre’s Gull: an introduction to Glulx Inform
There are countless implementations of Z-code interpreters, including:
- the venerable Frotz
- Bocfel, which uses Glk and offers a lot of interesting comand-line flags; see Bocfel’s man page
- entertaining ones: Z-machine in hardware, Z-machine on a pen
By Andrew Plotkin:
- blorbtool.py – manipulate blorbs
- ifsitegen.py – go from a zcode file, glulx file (.ulx), or blorb to a playable website; processes images from blorbs better than Inform 7 itself
- Inform 7 source highlighter with Inform 7 to HTML and Inform 7 to rtf options
- regtest – regression testing for IF running on any interpreter that uses simple input and output streams for I/O, like Frotz’ dfrotz variant or anything built with CheapGlk, or with anything using RemGlk; Nils Fagerburg wrote a regtest bash completion script
- profile-analyze.py – parse profiling data from glulxe (when it’s compiled with the VM_PROFILING flag)
- Jacques Frechet’s glulx-strings extracts all strings from zcode or glulx (including when in blorbs)
- Nathanaël Marion’s Inform 7 Text Extractor – extracts strings from Inform 7 source (for ease of proofreading)
- Blaze Alan Marshall’s mrifk Glulx reverse compiler and disassembler
- ztools: the Infocom toolkit, including txd, a zcode disassembler
- Allen Garvin’s ztool, a python port of ztools
- Brady Garvin’s i7grip Glulx debugger
- Dannii Willis’ glulx to C decompiler (glulxtoc)
- Juhana Leinonen’s IF recorder is a Parchment plugin to save transcripts (see recording_url in GlkOte’s docs for an alternative)
- Gren Drake’s glulx-assemble (a glulx assembler)
- zzo38’s glasm (a glulx assembler)
For outdated versions of I7 …but interesting enough to warrant mention
- Ron Newcomb’s Inform 7 port of the I7 parser (6G60) There have been changes to the parser since this was current, but the documentation section at the bottom constitutes the best documentation of the I7 parser extant.
- Ron Newcomb’s Naga (zip archive) which strips away nearly all of the Standard Library (6G60)
- Textfyre used a modified version of Glulx with different I/O abstractions from GLK
- Guncho, the multiplayer Inform 7 April Fool’s Day joke that wasn’t
- Manifesto for the translation of Inform 7 PDF (6G60) by Graham Nelson
- Swedish (6G60) by Felix Larsson
- Italian (6M62) by Massimo Stella, maintained by Leonardo Boselli
- French (6L38) by Nathanaël Marion
- Spanish (6M62) by Sebastian Arg (see also centro de documentación Inform 7)
- German (6G60) by Team GerX
The Imitable Process of Ryan Veeder:
- "How to Write the Way I Write, in Inform 7”
- Basic Autosaving, Advanced Autosaving, Additional Autosaving Techniques
Emily Short’s I7 FAQ (6G60)
Jeff Nyman’s articles:
- The Hitchhiker’s Guide to Inform 7: All About Rules (c. 5U92)
- The Hitchhiker’s Guide to Inform 7: Relations (c. 5U92)
- The Well-Versed Informer (PDF) (5Z71)
- The Well-Versed Informer: Foundations (PDF) (5Z71)
- The Well-Versed Informer: Descriptions and Locale (PDF) (5Z71)
- Introduction to Inform 7 (c. 6L02)
- The Rules of Inform 7 (c. 6L02)
- The Actions of Inform 7 (c. 6L02)
Nathanael Nerode’s Cookbook has a useful reference on Inform 7 line break output behavior.
MathBrush’s 77 Verbs serves as a trainer in default available commands.
An Inform 7 quine by Juhana Leinonen
See Rewriting old code that uses Plurality by Emily Short for one salient issue regarding updating code to 6M62.
Outdated PDF versions of Appendix A annotating 6F95’s Standard Rules and Appendix B annotating 6F95’s Inform 6 Template Layer.
Playfic is similar to Borogove, but you can create an account and save and host games there; you must create an account to use it; it doesn’t give you access to your projects’ Project Index; it’s running version 6G60.
The inform7tips twitter account regularly posts short items of interest to I7 users.
Many of these links in this post are to Wayback Machine copies of information no longer on the Inform 7 website. Here’s an archived version of the Inform 7 sitemap.
IF Resource Links has much more of interest to IF authors in general, not specific to I7.