TADS 3.1.1

The new 3.1.1 release is now available for Windows (and in source code format) on tads.org.  This release has a few significant bug fixes, and a number of minor new features that I've been meaning to add for a while.  The biggest new features are a full-featured Date class for manipulating date/time values, integer overflow handling (with automatic promotion of results to BigNumbers when they overflow the integer type), new syntax for creating static regular expression objects, and an upgrade of the Unicode implementation to include complex case conversions involving one-to-N foldings (the canonical example is the German "sharp S" or ess-zed, but there are a number of other ligatures and accented characters that require similar handling).  There's also a handy new string embedding << >> feature that lets you use a sprintf format code inline with an embedding, such as <<%x n>> to show 'n' as a hex number.

At present the new version is just for Windows, but Nikos has already gotten the preliminary release candidate going on Unix, so it shouldn't require a lot of new work to integrate the final version.  I'll post the updated FrobTADS when it's available.

TADS 3.1 now available

I'm pleased to announce that the long-delayed TADS 3.1 is finally available.  This is a fairly major upgrade; it has two major new feature areas, a raft of little language enhancements, and many bug fixes.  The Windows and source code packages can be downloaded from tads.org immediately.  (The code has already been ported to Unix and Mac OS, but those still need to be finalized and packaged.)

For full details on the changes, see (as usual) the change history - that's available on tads.org on the Manuals page, along with the current documentation.

The first major new feature area is Web play.  It's now possible to design a game for deployment on the Web, so that players can run it in a Web browser without installing any TADS software on their machines.  The game and the TADS interpreter run on an Internet server, and the game presents its user interface as essentially an HTML page.  The game itself acts as a Web server, serving the HTML/JavaScript/CSS resources that make up its UI.

It's not quite TADS's answer to Parchment: for one thing it doesn't give existing games instant net deployment, since the game has to be built specially for this mode; for another, the .t3 program actually runs on the server and communicates with the browser via AJAX, rather than running entirely inside the browser as javascript the way Parchment does.  This second point has some pluses and minuses; the main drawback is that it requires a continuous connection with the server, so you can't play disconnected with a browser.  (You actually can play such games disconnected if you install the TADS interpreter on your client machine, since that lets the whole client/server setup run locally without the need for any network connection.)

But there are also some serious pluses.  The big one is that TADS now has a true network infrastructure.  The obvious possibility this opens up is multi-user play, for building MUDs or multi-PC games.  Now, this is just a possibility at this point, since there's no library support for any of that, but the network plumbing is in place to support it.  I see a few other possibilities that are also pretty interesting.  One is collaborative play - which is more than a possibility, actually, in that the updated Adv3 supports it out of the box.  Collaborative play means that multiple people can simultaneously connect to a session - still playing a single-player game, but with each player able to see what the other players see and able to enter commands.  The same idea as a couple people huddling around a computer playing together, but remotely via the Internet.  Another idea I'd like to explore at some point is using the networking to let the author be involved while people are playing - either directly involved in the sense of actively manipulating the game in response to what the player is trying, or more simply, just gathering ongoing information on where players got stuck, verbs that didn't work, etc., that could go into improving the game in a rapid update cycle.  Same idea as beta testing, but continuously after release, and without people having to manually gather logs and send them to the author.  I also have this back-of-the-mind idea of using the network as a real-time human supplement to the parser, where commands that aren't recognized by the mechanical parser could be instantly flashed to a network of people who could step in and interpret the commands into something recognizable to the parser, and send it back, so that from the player's perspective the parser seems to understand whatever a human could.

The second big new feature area is dynamic compilation, and a bunch of related improvements in the reflection system.  This pushes TADS pretty fully into dynamic language territory.  So far it's not something that Adv3 uses at all, but I added it because I have a bunch of library facilities in mind that could take advantage of it.  Adv3 or, more likely, the "Mercury" library I've mentioned will probably start taking advantage of it in the next round, and in the meantime, I think it opens up a lot of new possibilities for add-on libraries.
  • realnc

QTads 2.1.1 has been released

Version 2.1.1 of QTads, a Multimedia/HTML TADS interpreter for Linux, Mac, Windows and other platforms, is now available for download:


This version provides new features as well as bug fixes. Changes since 2.1:
  • When the interpreter needs to scale an image, it can now use bilinear filtering. This results in smoother images (without filtering, scaled images can appear pixelated or have other scaling artifacts). However, the configuration dialog provides an option to disable filtering, since it also makes scaled images appear less sharp. Example:

    Scaling filter enabledScaling filter disabled
    Scaling with filteringScaling filter disabled

  • The "Game Information" metadata viewer now supports and displays cover art images (as specified by the Treaty of Babel.) Also, the list of recognized names and values (like "Genre", "Headline", "Forgiveness", etc) should now be complete:

  • The list of recently played games now behaves a bit smarter; it will use the actual name from the game's meta data (if available) rather than the path/filename, and will also try to avoid duplicate entries (which can happen when symbolic links are used in the path and/or filename.)

  • Fixed a bug that resulted in games using the wrong font in some places. "Six Stories" is one example; it would previously use a wrong font for input, titles and statusbar.

  • It is now possible to use the main game font as input font through a new option found in the configuration dialog.

  • The file I/O safety level feature of the VM is now configurable through the configuration dialog.

  • The interpreter now correctly responds to game queries about whether graphics, audio and hyperlinks are currently enabled or disabled. Previously, the interpreter would always report that these features are enabled, making it impossible for games to adapt their behavior.

  • Fades and crossfades are now correctly advertised as being supported. Previously, the interpreter wrongly responded with "not supported" when a game was querying about it.

  • Fixed a rare crash that occurred while entering non-latin characters.
  • realnc

HTML TADS on Android Devices

Today I was experimenting with the Android NDK and the recently started android-lighthouse project. I never did mobile development before, mostly because I don't even own a "smart" phone; I guess I don't need my phone to be smart, I just need it to make phone calls :-P But it turns out that developing for mobile targets ain't that alien.

So after about 6-7 hours of figuring out how stuff works, I got TADS 2 to run on Android. Graphics, hyperlinks and colors work OK. The only thing missing is sound/music support. But it should be doable since the SDL library, which QTads uses for sound, has been ported to Android. Screenshot:

Screenshot of TADS 2 running in Android emulator

TADS 3 crashes for some reason and I've no idea yet how to debug on Android.

The port is extremely crude at this moment and not something that can be released. Also, android-lighthouse is in a state of flux and it's not clear yet how to deploy applications. The only sure thing is that it won't require people to root or jailbreak their devices.

Hopefully I'll be able to provide a package for this soon. Don't cross your fingers about it happening this month though.
  • realnc

QTads 2.1 has been released

I've just released version 2.1 of QTads, a Multimedia/HTML TADS interpreter for Linux, Mac, Windows and other platforms. There were quite a few enhancements and important fixes to warrant a minor version bump.

You can grab it from:


Changes since 2.0.2:
  • Page-pauses (aka "MORE" prompts) are now occurring when the game displays more content that will fit in the window.

  • Banners can now have borders. Note that borders are controlled by the game; it's not a feature that can be switched on or off by the player.

  • Banners now correctly take margins into account when calculating sizes. This fixes the banner at the bottom in "Walker & Silhouette" for example.

  • The interpreter will no longer allow scrolling in banners unless the game allows it.

  • Text rendering is now faster and performs less drawing operations.

  • The interpreter is now able to perform on online check for new versions through the "Help->Check for Updates" menu item.

  • Some GUI elements were changed to better comply with various "Human Interface Guidelines" on several platforms. This includes changes in the menus as well as using sheets for some dialogs on Mac OS X.

  • On the Mac, running a game by dropping its file on the QTads icon is now supported.

  • When the VM requests input from the player, the maximum allowed length of input is now taken into account. Previously, the interpreter would allow input to be much longer than what the VM accepts and the extra characters were simply truncated.

  • The last entered directory for the "Open New Game" dialog is now remembered between sessions.

  • Various minor bugfixes and enhancements not worth mentioning here.
  • realnc

QTads 2.0.2 has been released

This is mainly a bugfix release, correcting a number of bugs in the previous version. As always, you can download the Linux, Mac and Windows versions as well as the source code, from:


Changes since 2.0.1:
  • In games that use background images, there was a visual glitch in the part of the background image near the vertical scrollbar. This has been fixed.

  • You can now drag&drop TADS game files into the application window to load them into the interpreter.

  • Clicking on a banner window no longer results in not being able to compose accented characters (or other characters requiring "dead keys".)

  • Text grid banners should now have the correct foreground/background color (light gray/black) when a game doesn't explicitly set them.

  • Games are now able again to display dialog windows with buttons.

  • A crash at exit that occured on some systems after running games that play MIDI music has been fixed.
  • realnc

Corrected Mac OS X builds of QTads 2.0.1

The Mac version of QTads 2.0.1 (both for Intel as well as for PowerPC) had an annoying issue: at some point during a game, the transcript would get stuck and new text would not be visible anymore. This is due to a faulty version of one of the base libraries used by QTads.

I've rebuilt the interpreter using a version of that library that does not exhibit the problem:

Download for Intel Macs (OS X 10.5 and higher)
Download for PowerPC Macs (OS X 10.5 and higher)

Note that this was a Mac-specific problem; if you're not using the Mac version of the interpreter, then you're not affected.
  • realnc

QTads 2.0.1 has been released

I've just released QTads 2.0.1; mainly a bug-fix release. Thanks to everyone for reporting them! Downloads for Linux, Mac, Windows, as well as the full source code can be found at:


The main reason a Windows version is offered is so that authors can test their works with it if they wish. If something seems to work differently compared to HTML TADS, consider it a bug; and if possible, please send me a bug report about it.

Changes since 2.0.0:

  • A new "Restart Current Game" menu option has been added.

  • Digital sound fade-in, fade-out and cross-fades are now fully supported on all operating systems. I think...

  • MP3 and WAV sounds that use "odd" sampling rates should now play correctly. Previously, they sometimes were playing at double speed.

  • Input of non-ASCII characters for languages that use compose keys ("dead keys") should now work correctly for TADS 3.

  • A memory leak during unloading of MP3 and WAV sounds has been fixed.

  • Decoding of long MP3s on Windows should not take several millenia anymore.

  • A new configuration option was introduced that allows for selecting the character set encoding to be used when playing TADS 2 games. Previously, the interpreter was treating TADS 2 games the same as TADS 3 ones, which wouldn't work correctly with games that use characters outside the ASCII range.

  • When built on Linux with Qt 4.6 or newer, appropriate icons from the desktop environment's current theme will be used for the various menu items.

  • A sane set of default fonts and sizes is now used on Mac and Windows.

  • Sometimes the interpreter would not scroll down to the bottom when opening TADS 2 games. This should no longer be occuring.
  • realnc

QTads 2 has been released

Not sure if there will be any TADS games in the upcoming IF Comp, but better safe than sorry... So I finally released QTads 2. If it can handle Space Shooter, then I guess it handle everything, right? :)

If you don't know what QTads actually is (neatly copy and pasted from my R*IF announcement):

It's a cross-platform, multimedia interpreter for TADS games. It runs in Linux, Mac OS X (10.5+), MS Windows (with a few problems) and Haiku (though binaries are not yet provided for Haiku). It probably runs on many more, as long as the Qt and SDL libraries are available.

QTads version 2, the first to include Multimedia TADS support, was in development for seven months (though with big pauses in-between), and is now finally out. You can find binaries as well as the source code at:


Some stuff had to go during the rewrite of major parts of the code. This was necessary in order to decrease the initial porting effort and to release something that works within a reasonable time frame. I'm hoping to bring everything back bit by bit as development progresses.