An interactive fiction programming language, created by Graham Nelson in 1993 and now one of the most popular IF development systems. Inform is particularly notable in that it compiles to code for the Z-machine, the same virtual machine used by Infocom. More recent versions of the Inform compiler optionally produce code for the more powerful and flexible virtual machine Glulx.
Inform is portable across many hardware platforms. Interpreters for z-code exist for nearly every computer system ever designed and Glulx interpreters exist for most major operating systems currently in use.
Early History (versions 1 to 5)
Graham Nelson announced the first release of Inform (with no version number, but considered "Inform 1" in retrospect) on RAIF in May 1993:
Subject: Announcement: INFORM From: Graham Nelson Date: Sun, 9 May 1993 18:20:53 GMT Message-ID: <1993May9.firstname.lastname@example.org> Infocom game story files are as near to a universal format as we have for interactive fiction games, but until now it has been very difficult to construct them, and I am not aware that anyone has previously created them outside of Infocom itself. I have written such a compiler, called "Inform", the ANSI C source of which is public domain. It is not a marvellously well-written program, but it does work, and it is documented. ... (Usenet post via Google)
This version generated only Z-code V3 game files. Nelson also released the first version of Curses on this day, as Inform's first game.
Inform release 2 was announced in June:
Subject: Second release of Inform From: Volker Blasius Date: Fri, 11 Jun 1993 20:51:29 GMT Message-ID: <email@example.com> I am posting this for Graham Nelson, who can't post to the net... ... My game "Curses", plodding along in the footsteps of the classics, has now picked up one more Infocom trait: the original has been superseded, after mere months have passed, by Release 8, serial number 930603. The old Release 7 thus becomes a collector's item. (I wouldn't hold your breath waiting for it to become valuable, though.) ... In addition, "Inform", the compiler which produced "Curses" and which is freely available to anyone who wants to write an Infocom story-file for themselves, has been re-released in a much more usable and efficient form. Although there are only a few new features (see the manual), many little bugs have been corrected and the code has been made more portable (it is in ANSI C) and much more efficient. It used to require about 1M of workspace, and now consumes 75K, for instance. The source code contains commentary to help anyone porting the program to their own machines. It should be quite feasible to run Inform on a modest PC. ... (Usenet post via Google)
Inform release 3 appeared in November:
Subject: New Releases of Inform and Curses From: Graham Nelson Date: 19 Nov 93 11:03:02 GMT Message-ID: <1993Nov19.firstname.lastname@example.org> ... Inform has been heavily re-written and improved. Many bugs have been fixed; it is now 3 to 6 times faster; there are numerous new features. (See the modification history in the source code, and the new edition of the manual, for details.) The main problem with using Inform has always been that ANSI C is portable in the same way that America is crime-free, i.e., despite everyone's best intentions... The code has been reorganised, and much more carefully written as regards size of integers, pointer arithmetic, file naming conventions, order of bytes and so on. It has an option to make all its old huge global arrays (a problem on IBM PCs, for instance) allocate dynamically. ... (Usenet post via Google)
Release 3 included source code for three demo games: dejavu.inf (toy game), hellow.inf (hello-world), and shell.inf (a minimal game template).
Inform release 4 was January of 1994, and added V5 support and modernized syntax:
From: Graham Nelson Subject: Major new release of Inform Date: 24 Jan 94 12:08:39 GMT Message-ID: <1994Jan24.120839.19630@oxvax> 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. ... (Usenet post via Google)
Inform 5 (now explicitly called that) was announced in June, although it was released slightly earlier:
From: Graham Nelson Subject: Inform 5: An Open Secret Date: 13 Jun 94 15:16:02 BST Message-ID: <1994Jun13.151602.23671@oxvaxd> It's an increasingly open secret that the new release of Inform, Inform 5 [fanfare, flourish of trumpets, etc.] has been sitting in the incoming/if-archive directory of ftp.gmd.de for a fortnight or so. Many people have already discovered it and sent me objections, as a result of which I've today posted an updated version. So, having already lost the element of surprise, can I encourage porters and other interested Inform people to take a look, and see if the code can be compiled properly on different machines? ... (Usenet post via Google)
Inform 5 was a sufficiently major advance that subsequent releases were called "Inform 5.1", "Inform 5.2", etc. -- until the release of Inform 6.
Summary of Inform Variations
- Inform 6
- Inform 7
- PunyInform - alternate Inform library
- Triform - alternate Inform library (still in beta as of January 2005).
Tips and Tutorials
- Informary by Roger Firth. Latest news and developments concerning all aspects of Inform. (Last updated in 2008.)
- Inform at Wikipedia.