Version 0.6 of alternative TADS 3 library now available

A new version of adv3Lite (the alternative library for use with TADS 3) is now available from http://dl.dropbox.com/u/58348218/adv3Lite/adv3Lite06.zip. If you wish, you can view the change log at http://dl.dropbox.com/u/58348218/adv3Lite/docs/manual/changelog.htm. Although I have retained the name adv3Lite for now (i.e. while it’s still in beta), the name will change eventually, and it’s becoming increasingly clear that adv3Lite should be thought of not so much as a Lite version of adv3 but as an alternative to it, an alternative that adds quite a bit of useful functionality, removes other functionality that many IF games don’t need, and aims at ease of use.

This version of adv3Lite more or less completes my current development plans, although there is still a bit of tidying up to do, and no doubt some rough edges that will still need smoothing off (for more details see the fuller posting at http://ericeve.livejournal.com/). If you’ve been hesitating about using adv3Lite for your own projects up to now, now might be a good time to try writing a game in it. I can’t guarantee it’s totally bug-free, of course, and there doubtless will be some rough edges, but the only way to catch the bugs and smooth off all the rough edges will be from user feedback, which I can only get if enough people give it a try!

So, who should consider using adv3Lite at this point, and why?

I believe adv3Lite has reached the point where it could now appeal to three potential groups of users:

  1. People who have tried TADS 3 but found the adv3 library a bit overwhelming.
  2. People who are familiar with TADS 3 and adv3 but are curious to try something new.
  3. People who might like to try TADS 3 but have been put off up until now by its reputed steep learning curve.

If you’re already familiar with TADS 3 you should find adv3Lite quite easy to get to grips with. If you’re not, then hopefully you should find learning it using adv3Lite quite a bit easier than learning it with the more complex adv3 library (although it has to be said that nothing is going to make learning an IF authoring system a trivial exercise).

BTW, if you’re wondering what makes this version appropriate for giving it a go, it’s partly because the Tutorial is now complete, partly because there’s now an Action Reference that should make it easier to look up information about action responses you may want to customize, and partly because I think the feature set is now more or less complete, barring any persuasive suggestions I may receive.

– Eric Eve

I’ve been fiddling with the Tutorial (started with the 0.5 version, upgraded to 0.6 today), and I noticed something after adding the plane: The exit lister in the status line shows “forward” when there’s an appropriate exit - but the parser only understands “fore”, not “forward”:

[code]Front of Plane
The main aisle comes to an end at the port exit of the plane, but continues aft past the seating. A little further forward is a door that presumably leads into the cockpit.

forward
I don’t understand that command.

fore

Cockpit
You see nothing special about the cockpit. [/code]

And another bug in the next section, Doors and Locks. Apparently lockableWithoutKey isn’t implemented:

[code]Cockpit
You see nothing special about the cockpit.

x door
It’s currently open.

lock door
(first closing the cabin door)
What do you want to lock it with?

x door
It’s currently closed and unlocked.

lock door
What do you want to lock it with?[/code]

(and yes, I double checked to be sure that LockablePlaneDoor specified “lockability = lockableWithoutKey”)

Thanks for trying it out, and for the bug reports. The next version of adv3Lite will understand “forward” as well as “fore” and “f” as referring to the forward direction.

Well, it’s implemented, it’s just that I forgot to test for it in a couple of places when I made other changes for version 0.6 (thereby inadvertently introducing a new bug). Again, this has been fixed for the next release. In the meantime if you or anyone else wants to patch your current version to fix it, you can make the following two changes in your copy of thing.t. First find where dobjFor(UnlockWith) is defined on Thing and look for the action() section. At line 4719 (in my copy of the file, at any rate) you should find a couple of lines that read:

      else
          askForIobj(UnlockWith);

This should be amended to read:

    else if(lockability == lockableWithKey)
           askForIobj(UnlockWith);

Likewise in the action() part of dobjFor(Lock) (lines 4777-8) you should find a couple of lines that read:

        else 
            askForIobj(LockWith);

These should be amended to:

     else if(lockability == lockableWithKey)
            askForIobj(LockWith);

Apologies for any inconvenience!