(Here are some additional items that might be of interest to the same audience.)
All of the library extensions listed in the references sections of the DM4 are available at the IF Archive. Note that most of them were produced prior to the invention of Glulx, so they are targeted to the Z-machine (but can usually be adapted with a little work):
Those working in languages other than English (or who wish to include special Unicode characters in their game/story) may particularly appreciate Roger Firth’s primer on using the -C compiler switch and the Zcharacter
directive, which has illustrative tables of the various character sets. While out-of-date with respect to Glulx, it covers the core concepts well:
- online version (via Internet Archive): Inform 6 FAQ: Advanced aspects
- PDF version: included in PDF version of main FAQ, see above
dump.h
library extension mentioned in the primer (for printing out ZSCII/Unicode map): https://www.ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/dump.h
Roger Firth also published a table about Inform character sets that seems useful but is not easy to find from the main FAQ. It cross-indexes escape codes, Unicode values, Z-machine (ZSCII) and Glulx (ASCII) character set values for many accented and special characters.
- online (via Internet Archive): Inform character sets
- PDF version (via IF Archive): https://ifarchive.org/if-archive/infocom/compilers/inform6/manuals/firthworks-character-sets.pdf
In addition, Graham Nelson wrote “The Inform Translator’s Manual,” a guide specifically for use by those trying to create non-English adaptations of Inform 6. Some of the same information is covered in the DM4, but this document is useful in that it attempts to more rigorously define what constitutes “Informese,” i.e. the language as understood by the Standard Library’s parser and provides specific guidance about writing a language definition file.
- text file (via IF Archive): https://ifarchive.org/if-archive/infocom/compilers/inform6/manuals/old/translators_manual.txt
Emily Short published a handy list of well-considered generic abbreviations for use in saving memory in a large game written in English. (I couldn’t find any current version of this page, but if you know of one, please pass the word.)
- Internet Archive version: Abbreviations List
Henrik Åsman has created a tool to allow optimized calculation of abbreviations for maximum memory savings within Z-Machine games.
- source code: GitHub - heasm66/ZAbbrevMaker
Some alternative libraries (i.e. replacements for the Standard Library) have been developed that offer interesting modifications to (and expansions of) the default functionality. These don’t strictly qualify as documentation, but they are of potentially significant educational value and may be well-suited to use in specific types of projects:
- Anson Turner’s Platypus (offering among other things a finer degree of control in action processing and an
adjective
property for objects that allows specification of words that qualify object names without defining them, e.g. allowing >X RED APPLE to match ared_apple
object while preventing >X RED from doing so): https://www.ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/platypus.zip - Nathan Schwartzman’s Triform (offering among other things expanded physical modeling of position and light): https://www.ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/Triform.zip
- Dave Bernazzani’s mInform (targeting use on microcomputer platforms, with a minimum memory footprint circa 19K): https://ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/minform.zip [archived project web page with known bug list: mInform - A Miniaturized Inform Library]
- Stefan Vogt’s Metrocenter '84 (a revitalization of mInform with more features, last updated early 2020): GitHub - ByteProject/Metrocenter84: Inform 6 library optimized for 8-bit systems
- PunyInform (a group effort under active development, targeting low-memory retrocomputing environments like the C64): GitHub - johanberntsson/PunyInform: A fast and compact library for writing text adventure games for the Z-machine running on 8-bit computers as well as other platforms.
Andrew Plotkin has put together a testing architecture for use in development of Inform 6’s Standard Library, but it may also be useful for automated testing of one’s own libraries. (Note that setting this up requires compilation from source, with multiple dependencies.)
- GitHub page: GitHub - erkyrath/Inform6Lib-Testing: Collection of unit tests for the Inform 6 library
- MacOS setup help (completed, needs validation): Step-by-step guide to setting up inform6-test (MacOS)
- Ubuntu setup help (completed, needs third party confirmation): Step-by-step guide to setting up inform6-test (Ubuntu Linux)
- Windows setup help (partially completed, needs validation): Step-by-step guide to setting up inform6-test (Windows)
Those who install the above may be inclined to assist in Andrew Plotkin’s project to build a proper test suite for I6 Standard Library development:
- announcement thread: Help wanted writing I6 library tests
Andrew Plotkin published a tool called PlotEx, which is intended for use during the puzzle design phase of development. It requires crafting of a special file holding a description of puzzle dependencies, but for planning of complex games it can be used to automatically identify problematic play states that are unlikely to be reached in normal alpha or beta testing:
- overview: PlotEx: a tool for exploring puzzle plot constraints
- GithHub repository: GitHub - erkyrath/plotex: The PlotEx and RegTest tools for IF development
Andrew Plotkin has also developed RegTest, a tool for regression testing of interactive fiction during the development phase, which uses a test file syntax much like that used by inform6-test. Its big advantages are the ability to use regular expressions for evaluating output and (if using a RemGlk-enabled interpreter) the ability to emulate keypress interaction such as that found in a built-in help menu. RegTest is included as part of the same distribution as PlotEx, and it can can use the same RemGlk-enabled interpreters (for both Glulx and Z-machine) that are required to make use of inform6-test.
- documentation: RegTest: Simple IF Regression Tester
- GitHub repository: (same as PlotEx above)
- RemGlk-enabled interpreters: (see build instructions for inform6-test above)