TADS is a programming system for creating interactive fiction games. The name is an acronym for "Text Adventure Development System".
The original TADS 1 was released by High Energy Software
in the late 1980s, and was followed by TADS 2 not long after. In the early 1990s, TADS established itself as the number one development tool for interactive fiction
, in place of simpler systems like AGT (Adventure Game Toolkit
Graham Nelson's Inform has, since its release in 1993, slowly gained popularity. Nevertheless, TADS 2 has been maintained and updated at regular intervals by its creator, Michael J. Roberts, even after it became freeware in July 1996. Graham Nelson describes Inform and TADS as the "only two systems... widely used" in the last half of the 1990s, and TADS has been called "The second most commonly used IF programming language today". Multimedia TADS, introduced in 1998, allows games to display graphics, animation and play sounds, if the platform supports it.
Recently, TADS received a major overhaul with the release of TADS 3, which is a complete rewrite of the TADS engine, only retaining the platform-dependent code to ease porting. TADS 3 has many new features, such as efficient dynamic objects (with automatic garbage collection), structured exceptions, native UTF-8 strings, and many useful function classes.
The TADS 3 compiler and interpreter are stable and they have been ported to the Unix, Macintosh and DOS platforms. Several TADS 3 games have already appeared in the 2002, 2003, 2004, and 2005 IF Competitions.
Compared with Inform 7
A recent informal poll of the Interactive Fiction newsgroup (rec.arts.int-fiction) showed general agreement on the differences between TADS 3 and Inform 7:
- TADS 3 is widely considered the more powerful system. A full object-oriented programming language, it features multiple inheritance, meaning that the user can create an object inheriting methods from more than one class. As one writer put it, "You can even implement Inform 7 in TADS 3."
- TADS 3 is stable, and essentially a finished product, whereas while Inform 7 is functional, and has been used to write popular and critically well-received games, is still (Jan 08) technically in Beta-testing.
- The Inform 7 programming language is a near-English computer idiom. Fans of Inform 7 consider this a great improvement over the mathy symbolism of a traditional programming language (like Inform 6 or TADS 3), while others find Inform 7's similarity to English confusing.
- Adding non-English language support is naturally easier in TADS 3 than in Inform 7 which has English as part of its grammar.
- The comparative maturity of the TADS 3 project mean that the language is far more thoroughly documented, both in its syntax and in numerous tutorials and teaching examples. On the other hand, those seeking to influence or participate in the formation of an interactive fiction authorship system may find the Inform 7 project more amenable.
- While TADS 3 is available for many platforms, the TADS 3 Workbench (a development environment) is available only for Windows.
- Inform 7 has a graphical development environment for Windows, Linux, and Mac OS X.
- Each system has fans who prefer it to the exclusion of others, and there are fans of both systems equally.
- Each system has produced high-quality interactive fiction.
Games written in TADS are compiled to a platform-independent format that can be played on any computer for which a suitable virtual machine
(VM) exists. Such virtual machines exist for most platforms, and in this respect, TADS closely follows the example of the original Infocom Z-machine
, as well as modern languages such as Java
Whereas the TADS 1 and 2 VMs had to parse the commands entered by the player, before sending the results on to the game, TADS 3 employs a more general-purpose virtual machine, where the command-parsing is done by the game code itself, akin to Inform. The rationale for this is that it is easier to customize the parser.
Notable games developed in TADS 2
Notable games developed in TADS 3
The programming language
TADS 2 syntax is based on C
, with bits of Pascal
. TADS 3 uses a language with a syntax that resembles C++