Game Development Reference
In-Depth Information
6 became popular, and for most of the 1990s and the early 2000s there was roughly equiva-
lent popularity between the two languages, with great games being written in both. Recently,
Michael J. Roberts released his next-generation update, TADS 3, comprising a workbench de-
velopment application (on Windows only), the most extensive world model and library ever
developed for IF authoring, a compiler, and an extensive suite of language reference manu-
als and documentation. TADS games will run on many different platforms but compile to
their own “virtual machine” rather than the Infocom Z-machine format. This makes them
playable on all modern computers and on Java applets running on websites but unavailable on
platforms such as mobile phones. The TADS language is indisputably a C-like programming
language, and programmers find themselves more comfortable with it than writers might,
but the richness of the world model is a strong selling point. For more about TADS, see
http://www.tads.org/ .
G.2 Coding Examples
Speaking personally, I am still a fan of Inform 6 and TADS 2, since I know them fluently and
have written XYZZY Award-winning IF games with each of them. I then entered a period
of indecision as regards making the jump to one or another of the next-generation versions
of these languages that I have not emerged from. I have been experimenting with each, but
only you can decide whether you like Inform 7 or TADS 3 better. Or, like me, perhaps you'll
find the older versions worth a look. Inform 6 and TADS 2 are still supported, and they have
accrued extensive collections of library extensions and game source code for study—all still
freely available in the IF Archive.
Here's an example of TADS 2 code containing a variable room description (the ldesc ,
or long description, in TADS 2 syntax). It makes use of a switch statement whose outcome
depends on the value of the variable future.state .
SouthOfHouse: room
sdesc = "South of house"
ldesc =
{
if ( future.state < 4 )
"This is not your house as you expected to find it, but
a scene of devastation.";
switch( future.state )
{
case 1: /* no rod, no tree, yes roof */
"The house has been damaged by fire. Though the roof
remains intact, the insides have been burnt out,
leaving a brittle, soot-stained shell that you can
hear wind whistling through.";
if ( tinyTree.location = self )
{
"Beside the house is a scrawny, dead tree.";
}
Search Nedrilad ::




Custom Search