Is adv3Lite ready for prime time?

I’m currently trying to write an IF game in Latin. Yes, I am crazy. Nevertheless, I feel I have the programming experience necessary to pull this off. That experience also tells me it’s best not to reinvent the wheel, so I’m trying to figure out which engine and which library to use. I’ve had a little experience with adv3 and I remember finding it pretty good on the whole, but a little bothersome at times (“Should I do this in the verify stage or a different stage? How can I fully disable dropping objects so the player never leaves anything behind?”), so I was hoping adv3Lite might address my concerns. At first glance it also looked like a smaller task to localize.

So I copy/pasted the adv3Lite code for Cloak of Darkness into a new project and started the game. I went into the dark room and…

>turn on light You see no on light here.
Well, that’s… strange. Let’s see what else might be wrong with turn on/off. After exiting the dark room:

[code]>turn on
If you want to go somewhere, use one of the compass directions (NORTH, EAST, SW, W, S etc). From here you could go north, south or west.

turn off
You see no off here.[/code]
(EDIT: adv3 gives the same response to “turn off” with no object specified. So that one isn’t specific to adv3lite, but the rest are.)

I also found that, whenever you score a point, the game prints “(Your score has just increased by one point. )”, with an extra space before the close paren. None of these issues seem to be due to the code in Cloak of Darkness.

I encountered these issues in just a few minutes of playing my first adv3Lite game. Yes, these issues are probably easy to fix; that is not the problem. The problem is, if I’m running into these issues so soon, what else is wrong? This isn’t even getting into the issues I’ve come across with localization, as I don’t expect localization features to be quite finished yet.

Is the adv3Lite library full of stuff like this or did I just get absurdly unlucky and run into the few minor issues in an otherwise solid library?

(Note: I don’t mean to knock Eric Eve or his work at all. I understand that a library like this is a big undertaking – after all, that’s why I’m not doing it myself! I’m only concerned with how polished the library is in its current state.)

Until now, I haven’t looked at the Cloak of Darkness example. I can tell you that I’ve done quite a bit of work in adv3Lite. (The game is still unfinished, of course – life has a way of resetting my priorities!)

I have found it very solid and quite approachable. I won’t say “easy to use” because it’s still TADS, which I call “the IF programming language for grown-ups.” But I do think your experience with this game is misleading.

The responses to the “turn” verb are sensible, given how the parser works and how Eric has defined the dark room. In a real game, there would be objects you could switch on. And indeed, if you restart the game, you can do this:

When there’s an actual object available, the output makes perfect sense. When there’s no object around (because the room is dark) the parser defaults to the (Turn) VerbRule, not to the (SwitchOn) VerbRule. That’s why “you see no on light here”.

I’m thinking it’s more of the latter.

I’ve had more success with adv3Lite than the default T3 library. I was struggling with implementation until I got wind of Eric’s replacement library. Of course, it could just be my personal style or level of skill that makes adv3Lite more suitable for me.

Also, Eric is very responsive if you find an issue with the library – by providing a fix or guiding you toward a different approach.

I think adv3Lite is solid and it’s my choice for T3 programming.

– Mike

I’ve tweaked a couple of VerbRules to make the output with those Turn commands a bit less messy, and have uploaded the fixes to GitHub.

The main problem was that a VerbRule designed to trap input like GO ON and TURN LEFT (hence the “If you want to go somewhere…” advice) was also catching the combination TURN ON (with the rather odd results reported). I’ve now separated out what TURN can be combined with (now only LEFT and RIGHT in this VerbRule) so this shouldn’t happen any more. I’ve also given the SwitchOff VerbRule a slightly higher priority.

At the same time I’ve deleted the extra space in the score change notification.

At some point in the next month or two I’ll issue an update to version 1.5; it’s getting close to the point where there have been enough tweaks and fixes to make this worthwhile.