Architecture

How the Inform software fits together

To most users, Inform is a black box, or a black box with a green button on it. That's fine: it's meant to be easy to install and use, and it tries not to distract writers by giving them low-level chores to do. But inside the box, Inform is more like a committee of cooperating programs, some large, some small.

Diagram of Inform architecture

The user interface applications

What the user sees is the user interface application, which handles the source text editor, the display of HTML pages of documentation, problems and index, the management of the Skein and Transcript panels, and so on. If Inform is a committee of programs then this is the chairman, deciding when to call on the others.

To play, the user interface calls on an interpreter. There will be at least two of these, a Z-machine interpreter and a Glulx interpreter, for the two different story file formats which Inform can generate. These are standard interactive fiction tools, with their own open-source licences, and they have their own web pages elsewhere. (The interface source distributions include copies of the necessary interpreters.)

Where to look. The user interface applications are different projects for each platform, and all have open source. See the Interfaces page for details and links.

The core software

When Go! (or Replay) is clicked, the user interface calls a chain of programs in succession. The I7 compiler, sometimes called ni, translates the source text into Inform 6 code. In the process, the source text is merged with material from the Standard Rules, a suite of built-in Inform source text setting up the language and the world model; at a much lower level, the output is merged with standard I6 material called the I6 template. The I6 compiler translates this code in turn into a story file. That can then either be played in the Game panel, or released.

To release, the user interface calls on cBlorb, the "releasing agent". This wraps the story file up with its associated images, sound effects and so on, producing a single binary file for the user to post online, email to friends, or what have you.

The Inform project uses a number of tools not included in downloads for end users: inweb, a literate programming tool; indoc, which generates documentation in various formats from a single lightly-marked-up original; intest, which runs test cases through the I7 and I6 compilers and checks the outcome; inprob, which manages test cases for problem messages; inrtps, which generates run-time problem message HTML pages, and so on.

Where to look. The form of the I6 compiler used here is sometimes called I6N or I6 for I7, and is nearly but not quite the same as other versions of Inform 6 used elsewhere. This is open source; see the I6N page for details.

The remaining core software - the I7 layer, so to speak - is written in web form. A web is a program for a literate programming tool, and the one we use is inweb - see the Inweb page.

Resources other than programs

Besides the programs themselves, Inform contains various other odds and ends.

As noted above, documentation is generated by indoc, a tool not yet published. But the text of the documentation is available in plain text and HTML form already, of course. We will publish the original marked-up text alongside indoc when the time comes.

The test suite - a collection of, currently, around 1380 source texts and a record of what they should produce - will be published alongside intest when that tool is itself published. Right now this is a moving target, with test cases being added almost daily as we work on Inform.

Image files for icons, pictures in the documentation, and so on are all included with the Interface sources.

Built-in extensions other than the Standard Rules are all available from the Extensions page of this website. In any case, they're also included verbatim in the final application, of course.