To my understanding: TADS is a language, adv3 and adv3lite are modules and extensions using that language that make a lot of assumptions about world models etc. (correct me if I’m wrong). What would it take to make a new set of modules with new assumptions that are separate from the existing adv tools?
I’m noodling on this (very idly) because I wonder if something akin to a purely hyperlinked, choice-based structure could be made from the start (rather than tacking it onto adv which assumes a parser structure), with the big draw being a robust world model capability. I’m thinking Twine or ink-level customization of appearance and links (link macros (like append, replace, cycle), images, css) plus that delicious OOP and world model.
I don’t want to build up something in say Twine or a whole new language when TADS is right here. Is this possible? If not, then what is?
TADS is a language that interfaces with a virtual machine, but the virtual machine makes no assumptions about the existence of a world model, or grammar, or player input language, or player input type. The only assumptions that the TADS VM makes is game save files, UNDO state data, misc file read/write, rendering to the screen, playing audio, detecting key strokes, and detecting mouse clicks on hyperlinks. All other functionality is handled by Adv or Adv3Lite.
This should be possible in TADS. Customization of appearance might cause you a few hiccups, since some interpreters leave this up to player customization, and don’t assume authors use much of this, but still doable.
This task would be very similar to making your own game engine, with only a short skip over a few starter steps. This was the task I was staring at when I was first planning IF-Octane, and the only reason why I decided not to use TADS was because I needed a very specific DOM pattern for screen readers, and could not get that specific guarantee from all of the TADS interpreters.
However, if that isn’t in your list of engineering constraints, then TADS has everything you need.
Implementing choice-based interaction should be possible without too much effort. I don’t have much experience working with HTML TADS, though, so I can’t comment on how robust that part is.
To approach the original question from a slightly different angle: TADS3 proper (that is just T3, not including adv3 or adv3lite) is mostly a virtual machine. Which makes it, in and of itself, something kinda like JavaScript (in current usage) or Java (more relevant in days past).
Adv3 and adv3lite are both narrowly focused as environments for implementing “traditional” text adventure IF, although they’re both extensible and modifiable and so can do much more than that.
So if you have a design that radically departs from “traditional” text adventure interface semantics/design paradigms/whatever, you’d probably naturally start thinking about building a new library (like adv3 or adv3lite) on the “bare metal” of the VM instead trying to hammer something out of the existing libraries.
Buuuuut, if you’re thinking about that, then if your target platform is a web browser its probably worth recognizing that all modern browsers come with their own platform-independent (mostly) virtual machine: JavaScript.
Which is a verbose way of saying that if I was developing a game I wanted to run primarily in browsers and I didn’t want to get text parsing more or less for free, I’d seriously consider just building the game as a native JavaScript (or maybe TypeScript) project instead of trying to wrestle T3 into doing what I want it to do.
Put another way (again) I feel like I’m pretty much constantly on the ragged edge of where it makes sense for me to have picked TADS3 to develop my current project instead of just starting from scratch, and the core gameplay of it is basic parser IF.
I did some tinkering with a half-finished library I had lying around. I haven’t experimented much with HTML yet but the choice-based portion is more or less working. choice-test.t3 (16.8 KB)
I feel uncomfortable tooting my own horn but Rez was designed to fit the niche of “choice based UI with world model” suitable for games that fall on a more simulationist end of the VN<->simulation spectrum.
I will readily concede that where Inform has an “authorial” perspective, Rez has a “developer” perspective. But if you don’t consider the complexity of TADS offputting then nothing in Rez should scare you.