New in 3.1.3

TADS 3.1 added over 100 new features, enhancements, and bug fixes. 3.1.3 is the third minor update, mostly to fix bugs. Below are some highlights of 3.1. For the full list of changes in each release, see the change history in the documentation.

Web Play and networking

You can now design your game to be played over the Internet. The game runs on a server machine, and players use an ordinary Web browser to play - there's nothing to install on the player's machine, since the game UI is built on HTML and Javascript.
See the Web Play overview »

The ability to play over the Web is actually just one way of using the new suite of network capabilities in 3.1. Games can now act as network servers, clients, or both. 3.1 has a powerful, high-level HTTP engine that makes it easy to use and create Web services. This has potential for multi-user gaming and more.

Dynamic compiler

TADS 3.1 adds dynamic compilation, which lets you create new program code on the fly. This will be particularly useful for libraries, and can greatly expand the scope of what add-on libraries can do.

   local f = Compiler.compile('function(x) { return x*x; }');
   local x = f(2);

Reflection capabilities have also been expanded. For example, you can now get the names and values of local variables at any stack level, and you can get information on built-in functions and methods in a stack trace.

Language enhancements

The language has bunch of new convenience features that make it easier and faster to write IF. A few examples:

  • New string embedding ("<< >>") syntax streamlines conditional text, cycling lists, random selections, and other common types of "live" text.
       "The door is <<if isOpen>>open<<else>>closed<<end>>. "
       "You feel <<one of>>starving<<or>>famished<<or>>hungry<<at random>>. "
       
  • The embedding syntax can now also be used in single-quoted strings, making complex string construction a lot more readable.
  • A new "triple quote" string syntax makes it easier to write long passages of text by letting you embed quote marks without backslashes.
       desc = """The sign reads "Beware of Frog". """
       
  • Operator overloading lets you create objects that act like built-in types.



Overview Main | Next: TADS 2 vs TADS 3