RAIF FAQ > Programming IF > 4.4.1: Tier (i)
4.4.1: Tier (i)

The most popular and/or powerful, these are currently used by a large number of people; many posts to rec.arts.int-fiction concern these systems and their use; games produced with these systems are guaranteed a relatively large audience.

Hugo
/if-archive/programming/hugo/
Version/Release
2.5.03d and 3.0.01d
Author
Kent Tessman (general@generalcoffee.com).
Platforms
Acorn RISC OS, Amiga, BeOS, MS-DOS, Unix (i.e., Linux, SunOS, etc., with pre-built executables for Linux), OS/2, Win95/NT, and any Glk-supporting platform [What is Glk?: 4.5] including the Macintosh.
Support
The author intends to continue supporting Hugo indefinitely, and is developing further releases of the compiler/engine package. He will take e-mail and respond to posts. In his own words, he will contribute "anything I can offer" to the product. Messages specific to Hugo are posted to rec.arts.int-fiction from time to time.
Programming Knowledge
Owes its origins to Inform, C, and BASIC. It is thus object-oriented, has a straight-forward syntax, and an effort has been made to keep programming as free of punctuation and confusing formatting as much as possible. Much low-level (assembly) programming is done within the system itself (so the user needn't worry about it).
Features/Limitations
As of v2.4 Hugo supports graphics (in JPEG format) and multiple tiled windows. It also has music in MOD, S3M, MP3, MIDI, and XM format and sound in WAV format. The standard sound package (which the DOS and Windows ports use) allows 32 channels. Full multimedia support is available in the Windows/DOS, BeOS, and X Windows ports. As of v3.0, Hugo even supports movies in MPEG or AVI format. The compiler allows precompiled headers. Features include global events, object-linked events, object/character scripts, hierarchical inheritance and the ability to use objects as classes, dynamic run-time dictionary creation, multiple-turn undo, and (practically) unlimited game file size due to indexed addressing. Hugo allows the programmer to fully manipulate the interpretation of the input line prior to engine parsing.
Documentation and Game Sources
The "Hugo Programming Manual" covers many of Hugo's features and there is an extensively annotated tutorial game, "Vault of Hugo." Currently available game source code include ports of "Adventure" and "Pirate Adventure", and the author's own full-length games, "Spur", "Guilty Bastards", and "Down", and a shell-game to build on.
Online Documentation
N/A
Web Pages
Hugo - An Interactive Fiction Authoring System
<http://www.generalcoffee.com/>
Jerry's Hugo Site
<http://cub.kcnet.org/~jnichols/hugo/ifpage.html>
Debugging Features
The Hugo Debugger, HD, is a full-featured source(ish)-level debugger, which allows code search, watch expressions, breakpoints, and so on. The HugoFix library is a suite of debugging routines allowing the user to monitor, set, and check almost every aspect of a game at run-time.
Source
C.
License
Freeware, so long as it is distributed in an unmodified manner. Games produced by a user are the property of that author, and may be freely distributed. Only if the game (including any included libraries from Hugo) or the Hugo engine is intended for distribution in any commercial manner (shareware or otherwise) must Kent Tessman be contacted for permission.
Quick Pros and Cons
As it is slightly newer than Inform and TADS, less people are using it and the Glk-based port to Macintosh doesn't have all the graphics and sounds perks (yet). On the bright side, it is quite powerful and offers advanced sound and graphics capabilities. Mac users are very very grateful for the Glk port, which is quite nice in the non-multimedia areas.

Inform
/if-archive/infocom/compilers/inform6/
All-in-one downloads for Windows and Amiga at Inform for New Writers website: <http://www.iflibrary.org/ifnw/>
Version/Release
6.21. Library 6/10. (Also, 6.21(G0.32) for glulx is in beta.)
Author
Graham Nelson (graham@gnelson.demon.co.uk). Glulx features by Andrew Plotkin (erkyrath@eblong.com).
Platforms
Acorn RISC OS, BeOS, Macintosh, Atari ST (latest release 5.4, may be unsupported), Amiga, IBM PC (on pre-386, release 5.5 only), Linux, OS/2, UNIX, VMS (for DEC VAX or Alpha), and EPOC (the Psion 5/Revo/7 handhelds). The ZMachine interpreters needed to play Inform games compiled for the ZMachine (that is, those that don't use glulx) are available for these platforms and many more.
Support
The author fixes library bugs whenever they are reported, and issues updates about every three months. The compiler is updated approximately twice a year, and the documentation is now in its 3rd edition (with an update May 1997). Feedback from users is welcomed. There are a large number of relevant posts to rec.arts.int-fiction.
Programming Knowledge
Compiles a largely object oriented language, reminiscent of C. A quite sophisticated parser is supplied, which can be entirely invisible to the designer but is highly programmable if need be. The library is itself written in Inform and is relatively easy to modify.
Features/Limitations
Produces files in the `Z-machine' format, as used by Infocom. Thus Inform games can be played on any of the many publicly available `Z-machine' interpreters. A standard library is supplied; it is possible to replace library routines. The run-time format does now permit dynamic object creation. Low-level programming is provided for, including a full assembler.

The parser can be supplied with a language definition file allowing Inform games to be played in non-English languages. Translations of Inform have been made into German, Spanish, Italian and Renaissance English, with several others in development. These translations are linked from Graham Nelson's website (see below).

A system called "Blorb", for convenient attachment of sound effects and modern-quality graphics, has now been fully implemented by Kevin Bracey's "Zip2000" interpreter.

An alternate version can compile to the "Glulx" format, which allows advanced I/O capalities and removes many of the ZMachine's arbirtrary size restrictions.

Documentation and Game Sources
The main manual is the "Designer's Manual"; the "Technical Manual" documents very dry internals; the "Specification of the Z-Machine" defines the run-time format and the standard for interpreters (an alternative to this last document is "The Z-machine, and How To Emulate It"). A handful of game sources are available. The Inform Translator's Manual documents language definition files.

The latest (fourth) edition of the Designer's Manual in PDF can be downloaded from the IF Archive </if-archive/infocom/compilers/inform6/manuals/designers_manual_4.pdf>. An HTML version is also available (see next section 'Online Documentation'.)

(It may also be available as paperback book. Check <http://www.iflibrary.org/dm4> for the latest details.)

The Inform Beginners Guide is an excellent introduction to writing IF with Inform.<http://www.firthworks.com/roger/IBG.html>

Online Documentation
The Inform Designer's Manual
<http://www.inform-fiction.org/manual/html>
The Z-Machine Standards Document 1.0
<http://www.inform-fiction.org/zmachine/standards/z1point0/index.html>
Web Pages
Inform 6: A Compiler For Interactive Fiction
<http://www.inform-fiction.org>
The Inform FAQ
<http://www.firthworks.com/roger/informfaq/>
Inform Tricks
<http://www.eblong.com/zarf/inftricks/>
The Informary (and other much other helpful material) can be found at Roger Firth's website
<http://www.firthworks.com/roger/>
Inform for New Writers, David Cornelson
<http://www.iflibrary.org/ifnw/>
Inform for Beginners, Jeff Johnson
<http://www.geocities.com/SiliconValley/Heights/8200/contents.htm>
Glulx: A 32-Bit Virtual Machine for IF
<http://www.eblong.com/zarf/glulx/>
Gull - beginning with Glulx <http://adamcadre.ac/gull>
The Inform Library Patch Site
<http://www.inform-fiction.org/patches/index.html>
Inform Page (somewhat old)
<http://www.duke.edu/~srg3/IFprogramming/inform.html>
Inform Programming (old, outdated)
<http://www.doggysoft.co.uk/inform/>
Debugging Features
Can print tracing information for calls to routines and a suite of debugging verbs is included in the library: these monitor timers, daemons, actions, the object tree, messages between objects, the parser's internal workings and the like, and give the tester supernatural powers to travel and move things around. The library can also record and play back scripts of commands. Tools such as TXD (a disassembler) and Infodump (an inspector of objects, dictionary and grammar) are publicly available.

As of Inform 6.21, you can compile your games with "Infix" debugging mode. This allows the author to use a variety of debugging verbs to examine and change the game's state in a way similar to the programming of Inform itself. You can trace references to a routine or object.

Inform can also produce a file of information useful to any debugging tool, with, for example, Z-machine PC positions assigned to every statement of source code.

There are some help-tools to configure various text editors to Inform, too; the Technical Manual provides an algorithm for syntax-colouring Inform code which is used in several of these.

Source
ANSI C.
License
Freeware. The author retains copyright of the compiler in order to prevent commercial exploitation, but (subject only to mild restrictions) is prepared to let people sell games produced by Inform.
Quick Pros and Cons
It is the most highly ported authoring system, and is quite popular. It is very powerful; some of the very advanced techniques are difficult to understand, though. Though it has a few more ports than TADS, HTML-TADS' graphics and sound support are both more powerful and more usable (at the current time) than Inform's. Also, the ZMachine suffers from the fact that extraordinarily large (and I mean really really big) games do not fit in it. However, for a normal-sized, text-only game that doesn't do extraordinarily complicated hacks (most games fit this description), Inform's problems do not hurt at all, and the glulx virtual machine fixes some of these problems.

TADS (Text Adventure Development System)
/if-archive/programming/tads2/
Version/Release
Version 2.5.5.
Author
Michael Roberts (mjr_ at hotmail dot com).
Platforms
Acorn RISC OS (interpreter only), AmigaDOS, Atari ST/TT/Falcon, DECStation, Linux, Macintosh, MS-DOS (also GO32 DOS extender version for 386+), NeXT, OS/2, SGI Iris/Indigo, SunOS & Sun 3.
Support
Posts to rec.arts.int-fiction dealing with all manner of TADS queries are not uncommon, and there are many third-party programming examples and utilities, including WorldClass, Alt and Pianosa, complete replacement libraries.
Programming Knowledge
Uses a high-level, largely object-oriented language very reminiscent of Pascal or C.
Features/Limitations
Provides virtual memory support, permitting games much larger than your computer's physical memory. Full multiple inheritance is supported, and incremental changes can be made to library files so one can include the standard library and override bits of it piece by piece. Objects may be created at run-time (dynamic object creation). TADS also provides multiple UNDO, routines for general-purpose file I/O, and "user exits" that let one link in code compiled with other languages (such as C).

TADS allows you to write your game using HTML TADS, which allows you to add styled text, still graphics, sound, and MIDI music to your TADS games. Rather than relying on some proprietary markup language, HTML TADS uses standard HTML, the language used to mark up Web pages, for which documentation is readily available. (However, HTML TADS doesn't need a web browser or the Internet: it uses HTML but isn't a Web-based system.) HTML TADS also supports ISO Latin-1 character sets, so accented letters are easily added.

At the time of writing, HTML TADS interpreters are only available for Windows 95/98/NT and Macintosh. However, a game written in HTML TADS is still fully playable (minus graphics and sound, of course) with character-based TADS runtimes that have been updated to at least version 2.2.6.

The Windows port of TADS 2.5 and up comes with "Visual Workbench", an integrated development environment including the compiler, debugger, runtime, and an editor. It can even create self-enclosed executable installater programs for Windows for your TADS games.

Documentation and Game Sources
TADS' comprehensive manual is available in TeX, PDF and HTML formats, although the HTML version is the most current. At the moment, TADS documentation is a little scattered between the TADS manual (<http://www.tela.bc.ca/tela/tads-manual/>), the TADS Parser Manual in /if-archive/programming/tads2/manuals/tads_pm.zip , and the HTML TADS Revision Notes, available with HTML TADS. Neil K. Guy is working on updating the main TADS manual to include the information from the Parser Manual. Lastly, you might want to look at the slightly outdated but still useful TADS Tip Sheet at <http://www.tela.bc.ca/tela/tads-manual/tads-tip-sheet.html>.

In addition to the manual the full source for a medium-sized game, Ditch Day Drifter, is available from the usual sources. The source code for many other games, from small and simple to huge and complex, is also readily available.

Mark Engelberg has written a tutorial for TADS. It can be found on the IF-Archive as /if-archive/programming/tads2/manuals/TADSTutorial.zip .

Online Documentation
TADS Author's Manual
<http://www.tela.bc.ca/tela/tads-manual/>
TADS Manuals directory on the IF-Archive
/if-archive/programming/tads2/manuals/
Web Pages
The TADS Page
<http://www.tela.bc.ca/tela/tads/>
Official TADS homepage
<http://www.tads.org/>
The Apple Macintosh TADS Home Page
<http://www.umbar.com/MacintoshTADS/>
Debugging Features
TDB is a full-featured source-level debugger. It allows single-stepping through your source, the setting of breakpoints at specific lines, and the examination and alteration of variables in your program.
Source
C.
License
Freeware.
Quick Pros and Cons
It is very popular and powerful powerful. It has better graphics support than Inform/ZMachine, and HTML TADS is available on the Mac (which is not the case for graphical Hugo). Its library is very object-oriented, which may be a good or bad thing, depending on who you are. It has slightly less ports than Inform/ZMachine, especially to ancient computers like the C64 and small computers like the PalmPilot. On the other hand, the reason is can't run on the PalmPilot is that it allows games of any size whatsoever, which is good if your game needs to be huge.

ALAN (Adventure LANguage system)
/if-archive/programming/alan/
Version/Release
2.8, with various correction levels for different platforms.
Authors
Thomas Nilsson (thomas.nilsson@progindus.se) and Göran Forslund (gorfo@ida.liu.se).
Platforms
Amiga, Macintosh, MS-DOS (currently only 386+), sun4 (Solaris1, SunOS 4.1), sun4 (Solaris2, SunOS 5.x). A HP-UX version of 2.8 is upcoming, though a 2.7 version exists. There is also a Glk [What is Glk?: 4.5] version.
Support
As a non-profit project author support may vary, although the authors will endeavor to act on bug reports sent by e-mail. Most ALAN questions on raif will be answered by other ALAN users.
Programming Knowledge
Uses a very high-level language. With an easy-to-learn syntax and semantics, ALAN takes a descriptive view of the concepts of adventure authoring. There are no variables, subroutines or other traditional programming constructs. A general statement which describes the ALAN philosophy is that a game's author should not need to program, only describe, what the player will see.
Features/Limitations
Actors may be scripted and rules are evaluated between each actors turn which can trigger actions. Events can be triggered by objects, actors or locations. Expansion of the parser syntax is simple. ALAN lacks actor interaction and inheritance (although a prototype of v3.0 supports this). General verbs can be overridden both for locations and objects on which they are invoked. There is support for multinational character input.
Documentation and Game Sources
The manual, available separately in PostScript, HTML, and ASCII formats, contains a lot of detail on all aspects of IF authorship from a beginner's level upwards. A few examples of ALAN source are available, including the source to the games "Saviour" and "Skipping Breakfast".
Online Documentation
ALAN Adventure Language Manual & Beginners Tutorial
<http://welcome.to/alan-if/>
Web Pages
The Alan Home Pages
<http://welcome.to/alan-if/>
Using Alan on MS Windows PCs
<http://users.actrix.co.nz/stevgrif/>
Debugging Features
The debugger currently supports viewing (but not altering) of most data, tracing of significant parts of the execution and single-stepping though compiled code.
Source
The compiler and interpreter source code is written in C.
License
Freeware. The interpreter may be freely distributed with compiled games for commercial purposes (i.e., no fee or royalties are required if you start to sell games).
Quick Pros and Cons
It isn't as powerful as the other Tier (i) systems. However, it is apparently easier to learn.


RAIF FAQ > Programming IF > 4.4.1: Tier (i)