These are "fake Infocom" programs - games which run under Infocom
interpreters, and a compiler which produces them. They aren't
shareware: they're free (but see the legal notes they contain).
The point of this is not nostalgia (or not entirely, anyway). It's
that the Infocom game format is completely portable across a very
wide range of machines. If you compile a game with Inform once,
anybody with an Infocom interpreter can run it. You need not
prepare versions for different machines, you need not worry about
how to save games on a TI 99/4a, and so on. Also, the Infocom
format is quite well constructed, and makes compact game files.
The directory if-archive/infocom/compilers/inform at the anonymous
FTP site FTP.GMD.DE now includes the binary files:
curses.z3 Release 10 of "Curses" - a substantial game
(compiled by Inform)
dejavu.z3 Release 2 of a toy game which demonstrates Inform
hellow.z3 Hello Cruel World - a trivial Inform program
shell.z3 A shell of a game to build on
(These should not be downloaded in ASCII mode. They are binary files
which are not compressed in any way: the ".z3" means they run under
the "Z-machine version 3".)
There are also text files:
manual.txt Fourth (greatly enlarged) edition of the Inform manual
dejavu.inf Inform source for DejaVu (should compile to dejavu.z3)
hellow.inf ...and Hello Cruel World
shell.inf ...and the Shell (minimum source code for a proper game)
parser.h Inform header files used by DejaVu and Shell, which contain
verblib.h a full parser and library of standard game routines
(These should be downloaded in ASCII mode.)
The .z3 games can be run on almost any Infocom-standard interpreter: for
example, on the InfoTaskForce one (which has been very widely ported) or
Mark Howell's (usually faster) Zip. These are also available from the
The directory also includes some (binary) executables of Inform compiled
for various machines. At present, these are of course of Release 3 (but
watch this space): however I have myself added an Acorn Archimedes
arch_inform4 (which should be downloaded in binary mode and filetyped
Inform, Release 4
Once again Inform has been heavily re-written and improved. The compiler
offers very many new features, chief among which is the ability to produce
Advanced story files as well as standard ones. These can be much larger
("Trinity"-sized rather than "Zork 1"-sized) and accommodate graphical
effects (boxes of text, character-graphic maps and so on). Inform offers
commands to make using these new features easy, but apart from those can
cross-compile the same source to either format.
There are much more sophisticated loop constructs and assignments;
conditions can now be rather more complicated; various new operators and
commands make printing, array handling and object alteration easier. Inform
is now quite close to C in some respects, and its syntax is much less
clumsy (for instance, braces which obviously ought to be optional now are).
There are also debugging and memory-mapping options.
(See the modification history in the source code, and the fourth edition of
the manual, for details.)
The source code has at long last been divided into eight pieces: a header
file, slightly regrettably called
and seven blocks of code,
asm.c files.c inform.c inputs.c symbols.c tables.c zcode.c
(a map of the program may be found in header.h, along with the modification
history and much of the commentary). The code is written in ANSI C in a
hopefully-portable way, with suitable extern and static declarations.
The version in the archive compiles under gcc, with options such as
gcc -O2 -fwritable-strings -finline-functions -fomit-frame-pointer
and should work on any reasonable Unix machine.
Inform has also been ported successfully to VAX C, to the Amiga, to large
PCs (using djgpp or Microsoft Visual C/C++) and to the Acorn Archimedes; a
Macintosh version may hopefully follow soon, and there is some loose talk of
an Apple IIe one. Help for porters, and detailed release notes, can be found
in the comments in the header file.
Bear in mind, however, that I have only updated the source code: executables
in the directory are currently from Release 3, as the porters concerned have
not yet got their fingers on the new release. Watch this space...
Fourth Edition of the Manual
The Inform manual has also been greatly enlarged, to cover new features
of Inform, give more examples and warnings, and expand a little on some of
the more concise passages of the original. It comprises four main elements:
The Inform language;
Specification of the version 3 Z-machine (the Infocom file format)
(and, newly added, the specifications of later Z-machines, notably
Three articles on game design in general, which are not specific to
the Inform language, including my notorious (well, all right, it
started an argument at the time) "Bill of Players' Rights";
Description of the library of standard routines, and examples.
Three header files contain all the routines needed to manage a parser
and basic game routines: in effect, including these in your Inform source
means you get a full implementation of Zork (without the puzzles), without
having to write any code.
It manages rooms, objects, containers, things on top of other things, light
and dark, scoring, switching things on and off, opening, closing and locking
things, entering things, travelling about in them and so forth: it
implements about 80 actions.
The parser it uses (which can be entirely invisible to the designer, or can
be altered if necessary) is about as good as anything Infocom ever had: it
has inferences, context, multiple objects, plural nouns, vagueness, asking
questions of the player to clarify things, giving instructions to other
people, multiple commands and so on. It recognises about 140 constructions,
which are easily added to.
The library source is very heavily commented, and its algorithms may be of
interest even to non-Informers. The source code has been updated to
"new-style" Inform, making it somewhat more legible.
Deja Vu, Release 3
The toy game DejaVu has been tidied up (in new-style Inform code), and a
couple of unfortunate mistakes corrected.
The "shell" game is a bare-minimum file using the library (only about
one page long): modify this to begin writing a new game. In effect, this
is a kind of "hello world" universe.
Hello Cruel World
This was a trivial demonstration - printing "hello world" in Inform. It
has not been updated. It's useful for testing the compiler.
Curses, Release 10
The (I'm glad to say) increasingly popular "Curses" is also re-released,
with an edition which incorporates some 44 minor improvements: fixes for
rare bugs, a couple of minor new things which can be done, some more
rude responses and so forth. I emphasize, though, that there are no
new locations, objects or puzzles (and only two new solutions for old
ones). So don't feel you have to throw away your old saved games to
play the new version if you're currently buried in Release 9.
If you still have Release 7 or 8, though, and missed Release 9, you
might like to know that "Curses" has substantially improved since then.
A fairly hefty enlargement of "Curses" is in progress, and there will
one day be a beautiful Advanced-story-file edition, replete with
annoying quotations and much extra material: today is not that day,
and it will take a while.
Those who have written to me with bug reports will be pleased,
ashamed or simply indifferent to notice their names in the credits.
I particularly welcome bug reports and suggested extensions from people
whose surnames begin with E I J L O Q U X Y or Z, as I'm trying to get
a full alphabetical set. D, H, K, M, R and W seem to be the popular
letters just now. But I seem to have strayed from the point somewhat...
The "public" history (yes, people really do write and ask!) of "Curses" is
Release 7 / Serial number 930428 (the original and still the worst)
Release 8 / Serial number 930603 (much enhanced, and slightly larger)
Release 9 / Serial number 931111 (the "Director's Cut": bigger again)
Release 10 / Serial number 940120 (tidied up a little)
All comments, bug reports and the like are welcome. I'd be glad to hear
from anyone who has had to alter Inform in order to run it on different
machines: so that future releases can include their ports.
Finally, as always, I'd like to express my gratitude to the many people
who have written to me and contributed to these projects.
Oxford University, UK
January 20th, 1994