Cloak of Darkness, adv3Lite style
ericeve
Cloak of Darkness is the de facto standard short game used for comparing how game code looks in different IF languages. I've therefore created a page showing an adv3Lite version of Cloak of Darkness, in case anyone's interested. It's very closely bases on Steve Breslin's TADS 3 version (you'll have to scroll down the page to see it below the TADS 2 version), so you can easily compare the two.

Adv3Lite version 0.8 now available
ericeve
The latest version of adv3Lite is now available from Dropbox. The change log may be viewed on line here. In addition to a number of (mostly minor) bug fixes and feature tweaks, the new version features:


  1. Significant enhancements to the message system (and in particular the conjugation of regular verbs in message parameter substitutions).

  2. Additions to the documentation in the form of (a) an index to the Library Manual, (b) the inclusion of the Library Reference Manual (similar to that which comes with adv3) as standard and (c) the addition of a Messages index to the Library Reference Manual (to enable users to look up all the messages defined with DMsg() and BMsg() macros in the library).

  3. The ability to create a new Adv3Lite project directly from Workbench's New Project wizard. Note that this feature requires the latest version of TADS 3, TADS 3.1.3, which has just become available at tads.org.


— Eric Eve

Library Reference Manual for adv3Lite
ericeve
A tool that many people find useful when writing Interactive Fiction with TADS 3 is the Library Reference Manual. A version of the Library Reference Manual for use with adv3Lite is now available and may be downloaded from here.

This has been created using the docgen tool. While this pretty much worked okay, it's not quite perfect, in that the differences between action definitions in adv3 and adv3Lite means that the adv3Lite Library Reference Manual hasn't coped with Action objects all that well. In particular, the Actions tab is empty, and actions instead appear under Functions (in definitions like DefineTAction(Take)). For most purposes, however, the adv3Lite version of the Library Reference Manual should work perfectly well (to look up information on specific actions you may want to use the Actions reference in the adv3Lite manual).

To use it, download the file and unzip it into a convenient location (such as under your adv3Lite directory). You might find it convenient to then bookmark the index.htm file in your browser.

UPDATE: I've tweaked the DocGen program a bit today (28-Apr-13) and fixed most of the problems mentioned above. A new, improved version of the adv3Lite Library Reference Manual has now been uploaded to the same location as before. The Action index now works, and several spurious entries have been removed from the Function index, as well as a number of other tweaks.

Version 0.7 of adv3Lite now available
ericeve
Version 0.7 of adv3Lite (the alternative library for use with TADS 3) is now available for download from http://dl.dropbox.com/u/58348218/adv3Lite/adv3Lite07.zip. The change log may be viewed at http://dl.dropbox.com/u/58348218/adv3Lite/docs/manual/changelog.htm.

This update completes the programme of work described in the previous post, that is it removes some redundant code, moves as many of the library messages as possible from the libMessages object to use the BMsg/DMsg system instead, and considerably expands the commenting in the library code. It also fixes a number of bugs and tweaks quite a number of features, mainly in the light of my starting to write a "real" game in adv3Lite rather than simply a tutorial game or test game.

This may well be the last release for a while, since this release completes the programme of work I had in mind to do. There will doubtless be other bugs and feature improvements that come to light in the course of use, so eventually there'll probably be another release to incorporate them (once they grow to a sufficient number), but the reality is there's not much more I can usefully do with adv3Lite until I get more feedback on it.

Eric Eve

Version 0.6 of adv3Lite now available.
ericeve
Version 0.6 of adv3Lite is now available for download from http://dl.dropbox.com/u/58348218/adv3Lite/adv3Lite06.zip The change log may be viewed at http://dl.dropbox.com/u/58348218/adv3Lite/docs/manual/changelog.htm. This version fixes a number of bugs and tweaks quite a large number of features, generally enhancing the useability of the system.

The adv3Lite library is still in beta, but it should now be starting to settle down into more or less its final form, and could be used for writing a game. There will inevitably still be some rough edges that need smoothing off (and no doubt the odd bug lurking somewhere), but it's got to the point where it's hard to see how these can be sorted out without more people trying out the library and providing feedback.

I have more or less completed all the changes I have in mind, apart from a bit of tidying up (see below). In particular, I have no plans for any additional features in future releases, although I'm always open to persuasive suggestions!

The more I've worked on adv3Lite, the less appropriate the name adv3Lite has felt. While I originally started out with the idea of a greatly simplified version of the adv3 library melded with the Mercury parser, adv3Lite has become rather more than that. While it retains quite a few similarities to adv3 it also does quite a few things differently and now has quite a few features that adv3 doesn't. While I still think that adv3Lite should prove easier to use and learn than adv3 for many people, it should no longer be seen simply as a 'lite' version, and at some point that will need to be reflected in a name change, more on which below the cut.

Read moreCollapse )

— Eric Eve

Maintenance Release of adv3Lite
ericeve
The last release of adv3Lite, version 0.4, turns out to have quite a lot of issues (by which I mean bugs and features of a sufficiently suboptimal nature to qualify as quasi-bugs). While none of them is exactly life-threatening, cumulatively they could prove sufficiently annoying that it seemed as well to get a maintenance release (version 0.5) out as quickly as possible. This can now be downloaded from http://db.tt/AXBKtaRf. The changelog can be viewed at http://db.tt/OahUZXDs.

adv3Lite Version 0.4 Now Available
ericeve
The latest release of adv3Lite, version 0.4, is now available from http://dl.dropbox.com/u/58348218/adv3Lite/adv3Lite04.zip. The main focus of this release is on improving the way objects are listed in room listings and the like, and giving game authors a bit more control over how this is done. But there are also tweaks to quite a number of other features, together with a number of bug fixes, quite a few of which are related to the parser.

What Next for adv3Lite?
ericeve
In my previous post I said I'd post some thoughts on what might go into Version 0.4 of adv3Lite in the New Year. Well, the New Year has now arrived, so here goes.

I've already done quite a bit of work on version 0.4, and the main focus has been on object listings (in room listings, examine listings and the like). I was planning to do this anyway, but when I started getting into it I found there was quite a lot more to be done to sort it all out than I'd realized. I haven't finished it all yet, but at least I now have a reasonable idea of what needs to be done, so when Version 0.4 is released (hopefully later this month), object listings should be both a bit more robust and a bit more flexible.

I've also been rounding out a couple of features that weren't quite complete. For example in Version 0.4 it will become possible to test when an actor is about to leave or enter a Region, or whether someone is trying to reach into or out of an object.

Work is progressing on the Tutorial, and that's throwing up the odd issue that I've also been addressing in the library code.

I'm not planning any major new features for adv3Lite. One thing I certainly don't want to happen is for adv3Lite to grow into adv3Bloat through a process of inadvertent mission creep, and my feeling is that, barring rounding out what's already there, it's pretty much got the feature set it needs. I'm always open to suggestions, though, particularly if someone feels I've missed something absolutely vital to IF authoring. That said, I suspect any major new functionality might better be handled through optional extensions rather than as part of the main library.

I'm also open to suggestions on how the existing features could be improved. As has been pointed out elsewhere, now is the window of opportunity for contributing requests that can potentially help shape the final form of adv3Lite.

adv3Lite Version 0.3 Now Available
ericeve
Version 3 of adv3Lite is now available from http://sdrv.ms/UICBhp.

This version does not contain any major new features, but rather a number of tweaks and enhancements to existing features and a few bug fixes, as well as a bit of general tidying up. It does, however, contain the first rough draft of the first seven chapters of a tutorial (aimed at new users); while it's not complete, there's probably enough there to make it worthwhile for newcomers to give it a try.

There's one part of the tutorial I'd like a bit of help with, if anyone out there would care to lend a hand. In chapter two there's a set of instructions for setting things up and creating a new project. These work well enough on Windows, but I've no idea if what I've drafted for non-Windows systems actually works (I suspect it may well not, not least because I suspect some paths need to be specified somewhere) and no way to test it. So if anyone with a Mac or Linux machine would like to try it out and let me know how to improve the instructions, that would be a great help.

In the new year I'll post some ideas about what may go into version 0.4.

What is adv3Lite?
ericeve
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.

You are viewing ericeve