- What is adv3Lite?
- November 29th, 2012
TADS 3 is a system for writing Interactive Fiction (also known as Text Adventures). It comes in two main components: the language (and the bits of the system that directly support it) and a library. The TADS 3 language is a powerful C-like programming language that has been designed with writing Interactive Fiction in mind, but it is the library that provides the world model needed to actually write a work of Interactive Fiction. Here 'world model' refers to the means of defining the simulated space and objects in which an IF game takes place, the standard ways in which these interact (e.g. when the protagonist moves from place to place or attempts to take and drop things), the parser for interpreting the commands the player types at the keyboard, and a set of standard commands such as LOOK, GO NORTH, TAKE, DROP and all the rest that the library knows how to handle. The library that comes standard with TADS 3 is called adv3.
The adv3 library is one of the most sophisticated and complete that have been provided for any IF authoring system, and has been successfully used to write a number of high-quality games. Many IF authors greatly appreciate its power and sophistication, and the ways in which it allows them to implement a richly-detailed and deeply-implemented simulated world in which their IF story can take place. It also offers one of the best systems on offer for writing relatively life-like non-player characters that can be conversed with and also pursue their own agendas. In many ways, the adv3 library is superb.
For many IF authors (or prospective IF authors) the adv3 library can be just a bit too much of a good thing, however. It is a superb tool for those prepared to master its complexity, but many people find its complexity just a bit too daunting, and this can sometimes put them off using TADS 3 altogether. Enter adv3Lite.
The adv3Lite library is an alternative library for use with TADS 3 that retains many of the strengths of adv3 but in greatly simplified form. Adv3 has a vast hierarchy of classes that can seem quite daunting to the newcomer; adv3Lite cuts down on this drastically so that there are far fewer classes to learn. Much of the complexity of adv3 comes from its highly sophisticated world model, which includes features such as postures, room parts, varying light levels and complicated sense-passing, which may be very valuable in games that need them, but which most games can do perfectly well without; adv3Lite leaves out complicating features such as these, resulting in a rather simpler world model that is easier to master. The adv3 library is also rather tightly coupled; it all works together in a highly integrated way, which can be marvellous if that's what you want, but a bit inconvenient if it isn't. The adv3Lite aims to be more modular, to make it easier to leave out the bits you don't need for your particular game, or replace them with alternatives of your own design. In some respects the adv3Lite world model is a bit similar to that of Inform 7.
As its name suggests, adv3Lite nevertheless retains several similarities to adv3. While it is by no means a slavish copy, and code written for the adv3Lite library will not work unaltered in adv3, adv3Lite retains (or at least closely adapts) many of the adv3 ways of doing things. This means that any effort put into learning adv3Lite would be far from wasted if you subsequently decided you wanted to go on to master the adv3 library. You'd certainly find differences, but you'd also find a lot that was quite familiar. Learning adv3Lite could therefore be a bridge to learning adv3 at some point in the future; someone who had previously mastered adv3Lite should find the notorious adv3 learning curve far less steep than someone coming to adv3 from scratch or from another IF authoring system.
Finally, adv3Lite is not simply a subset of adv3, or just adv3 with all the fancier bits taken out. For one thing, adv3Lite takes advantage of Mike Roberts's work on the (as yet incomplete) Mercury library to make some things easier. For another, adv3Lite adds some features like Scenes, Regions and a built-in GO TO command that can be useful in modern IF but aren't in the adv3 library. These features should be easy to use — but easy enough not to use if you don't want them — so they contribute functionality without significantly increasing complexity.
The adv3Lite library won't be for everyone. If you've already mastered the full adv3 library, it probably isn't for you (unless you want to try it out of curiosity or because one of its additional features appeals). If you've definitely decided you prefer the Inform 7 natural-language like approach (or the approaches of systems like Adrift and Quest) to the more traditional programming language approach of systems like TADS 3, then adv3Lite probably isn't for you either. But if other aspects of TADS 3 (such as its more traditional programming syntax and the power and elegance of the language) appeal to you, but you have been put off by the complexity of the adv3 libary and the difficultly of learning it all, then adv3Lite might be just what you're looking for.