TADS Technical Articles

This is a small collection of technical articles that might be helpful to authors working on TADS games. Note that many of these articles are now included in the TADS 3 Technical Manual, available as part of the documentation set.

TADS 3 Bookshelf. This is the full TADS 3 documentation set on-line. The books include two tutorials and extensive reference material.

How to include Bibliographic Metadata in your game. TADS has a way of bundling a set of bibliographic information directly in your game - a sort of "card catalog" entry that's attached directly to your .gam or .t3 file. This lets tools like the IF Archive, TADS Game Chest, and others automatically identify things like the title and author just by looking at the compiled game file. Updated January 2007

Creating your first TADS 3 project. If you're new to TADS 3, and you're trying to figure out how to get your first game off the ground, things can look a little scary. Fortunately, it's really not that bad, once you know a few basics. This article is designed to help you get started. Updated September 2006

Separate compilation in TADS 3. TADS 2 authors are used to using #include to build up a game out of multiple source files. TADS 3 has a better way, which this article describes. Updated March 2004

Using build configurations in TADS 3. It's often useful to be able to include a source module in one type of build (the debugging version, say), but not in others. This article describes a simple technique for doing this. March 2004

Automatic "open" and "closed" adjectives in TADS 3. It's often handy to be able to refer to objects by their current open/closed state ("go through the open door" or "look in the closed jar"). This is a small extension module that adds this handling automatically: the player can refer to any BasicOpenable object with the adjctive "open" or "closed", according to the object's current state, and the parser can ask disambiguation questions based on the open/closed state when all else fails ("Which do you mean, the open jar or one of the closed jars?").

Using the Past Tense in TADS 3. Interactive fiction has traditionally used the present-tense second-person voice ("You are standing in front of a white house..."). TADS 3 has always made it easy to change all of the standard library messages to first-person ("I am standing...") or third-person ("He is standing..."), but up until recently the library has been hard-wired for present tense. That changed in version 3.0.9, when Michel Nizette integrated his Past Tense system into the standard library. You can now easily change all of the library messages to past tense ("You were standing..."), and you can even switch tenses on the fly - perfect for things like flashbacks. Michel wrote this helpful article explaining how to switch tenses, and how to write your own messages that adapt to the current tense setting. August 2005

Creating dynamic characters in TADS 3. Creating convincing non-player characters has always been one of the most difficult technical challenges in writing IF. This article explores why it's so hard to create good NPCs, and describes the TADS 3 library features that can help. Updated January 2007

NPC Travel in TADS 3. There are a few tricks you need to know to move your NPCs around in TADS 3, first among which is that you should never use moveInto() on actors. NPC travel isn't all that difficult once you know which methods to call, though; this brief article explains what to call when. January 2004

Nested Rooms as Staging Locations in TADS 3. Traveling from one location to another sometimes involves figuring out how to reach an exit: standing on a chair to get to a high window, for example. TADS 3 handles this with its "staging location" mechanism. This article by Eric Eve explains how to use staging locations, and shows you how to avoid some of the subtle pitfalls in their use. November 2005

Creating verbs in TADS 3. The TADS 3 parser is completely different from TADS 2's. This article gives examples of how to create various kinds of verbs using the new TADS 3 scheme. March 2003

Handling odd nouns in TADS 3. TADS 3's built-in English grammar handles a wide range of object names with almost no work - you just have to provide the "adjective" and "noun" vocabulary words. But what about oddball names, such as a name containing the word "and"? This article shows you how to handle names that would normally cause all sorts of parser confusion. August 2004

TADS 3 action results. Command handlers in TADS 3 can relay a lot of information back to the parser about how the command processing is going. The library makes it easy to indicate command status, but it helps to understand some of the finer points of the model, which this article tries to illuminate. Updated January 2006

TADS 3 message substitution parameters. The TADS 3 library makes it easy to write generalized response messages that automatically adapt to different actors and objects. This article explains how to use the library's parameter substitution system to write your own adaptable messages. March 2003

TADS 3 Action Messages 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

On good usage of verify() and check() in TADS 3. TADS 3 has two distinct stages in command processing where you can check conditions for the command's validity: the "verify" phase and the "check" phase. The differences between the two are subtle, and it can sometimes take a little thinking to figure out which one is better for a particular rule. Steve Breslin distilled some rec.arts.int-fiction discussions on the subject into this helpful article. March 2003

TADS Media Types. Web servers, email, and other internet applications use "media type" codes, also known as MIME types, to keep track of what kind of information is in a file, to help ensure that the right things happen in file transfers and other operations. This article by Andreas Sewe explains the internet media type system, and lists the media type codes that TADS uses. This article will be especially helpful if you run a web site where you post TADS-related files. Updated August 2004