TADS 3 Examples and Resources

Library extensions. The TADS 3 library has a lot of built-in functionality, but no library can anticipate every need. That's where extensions come in. Extensions are add-on modules that handle tasks beyond what's in the library. The IF Archive has a collection of extensions contributed by TADS 3 authors who ran into special situations in their own games and were generous enough to generalize their solutions into extension modules that other authors can use.

Return to Ditch Day is a game I wrote partly as an example for TADS 3 authors, but mostly as a game for its own sake. It's a medium-size game (reported playtime is about six to twelve hours); it's a bit of a puzzle-fest, but it's a story-oriented puzzle-fest. The complete source code is available on the IF Archive, so if you play the game and wonder how a particular bit works, you can go straight to the code and find out.

Eric Eve's TADS 3 page. Eric is the author of much of the official TADS 3 documentation, and his site has even more resources. Offerings include a collection of sample games, translations of some well-known Inform examples, and pointers to Eric's own games.

Path finder (Dijkstra's Algorithm) - included in the lib/extensions folder in the Adv3 distribution and Author's Kits. This module implements Dijkstra's Algorithm, a well-known path-finding algorithm. The implementation here is abstracted so that it can be used with any sort of "graph" data structure, but the module also includes a ready-to-use subclass for the most obvious IF application: finding the best path from one location to another in a game's map of rooms. I used this in Return to Ditch Day to implement the campus map (an object found within the game that can be consulted for step-by-step directions to any building on campus).

Subjective-time clock - included in the lib/extensions folder in the Adv3 distribution and Author's Kits. Implementing a plausible form of wall-clock time in IF has always been notoriously difficult. This module follows the modern approach of linking the passage of story time to the occurrence of key plot points, but tries to build on this "narrative time" approach by also allowing for in-game timepieces that show an exact "objective" time. I used this in Return to Ditch Day, and it seems to produce a pretty good effect.

Template Quick Reference. Eric Eve created this quick-reference guide to the object "templates" defined in the library. Templates are a short-hand notation for defining object properties that save you the trouble of typing the names of the most commonly-used properties. Templates can save you a lot of typing while you're creating a game, but you have to know where to look up the definitions to know what they mean. This quick reference can help a lot. (PDF)

Action Messages Quick Reference. TADS 3 makes it easy to customize the default messages that the library uses to handle commands. To take advantage of this feature, though, you have to know the property name that the library uses for the message you want to change. Eric Eve put together this concise listing that cross-references the library messages by class and verb. PDF format. Updated October 2005

Library Reference generator program. This is the source code for the program that we use to generate the Library Reference Manual from the Adv3 library sources. Edward Stauff originally wrote this program and was kind enough to contribute it. We offer it for download for anyone who wants to customize the way it generates the library, or for use in generating documentation for their own libraries. Please note that this is UNSUPPORTED - we might be able to answer questions about it as time permits, but we probably won't be able to offer help fixing bugs or making customizations. This program is written in C# (with an optional C++ component), so to build it you need the Microsoft C# compiler, and Windows is probably the only option for that. [April 10, 2008]

Technical Manual Wish List. The Technical Manual is designed to be a work in progress, with new articles added over time as users find things they'd like to know more about. This page has a "wish list" of topics for future editions.

TADS IFID Generator. Every TADS game should have its own "IFID" - an Interactive Fiction Identifier, which gives archivists and players a way of uniquely identifying your game. It's the same idea as the ISBN for a book. This page is an on-line application that will generate a new IFID for you. You can use it to create an IFID when you start a new game project.