Old programmer blues

The adv3 and adv3Lite libraries are written in a traditional OOP style, but there’s no reason someone couldn’t write a new library system that would run on the TADS VM. That said, it would be an epic level of effort to re-implement what already exists and is considered battle-tested code.

2 Likes

It’s not the natural language that attracts me to Inform 7. In some ways it would be a better language if it eliminated a lot of the natural language stuff and just kept the central language concepts. The natural language stuff works well in the declarative parts, but less well in the imperative parts.

3 Likes

Indeed. Takes a little discipline to organize everything in a way that you can trace them out later.

3 Likes

The Index helps out a lot in that regard, listing out the rules that will be considered for each action.

3 Likes

They’re rarely used (other than texts including substitutions, which are technically functions returning a text) but you can declare all kinds of functions as properties if you really want them!

I realized recently that this trick to include invocation of arbitrary phrases in adaptive text along with the item described providing an equivalent to self pretty directly creates traditional methods… albeit with the substantial limitations that they can’t take parameters or return a value other than text.

Lab is a room.

To say @ (ph - phrase): (- if (0==0) {ph} -).

An object has a text called the method.

Alice is a person in the lab.

The method of Alice is "[@ try the item described jumping]".

when play begins: say the method of Alice.

And there’s also my even more tortuous former effort at OOP.

But the thing that exercise made me realize is that I7 offers the equivalent via rulebooks; it’s just inside-out (and somewhat verbose).

Let’s take a traditional OOP-y thing: you have a class with an attribute with an associated reader for that attribute. But then you want a subclass whose method overrides the parent class method and does something dynamic instead of just returning the attribute.

Uninspired example:

[ just syntactic sugar for `<K> produced by the X rules for Y` ]
To decide what K is a/-- result of/-- a/an/-- (r - an M based rulebook producing values of kind K) on/of/for/with a/an/-- (v - a value of kind M):
  (- ResultOfRule({r}, {v}, true, {-strong-kind:K}) -).

A thing has a number called the @temperature.
The @temperature of a thing is usually 10.
A hot-thing is a kind of thing.

Thermometer is a thing based rulebook producing a number.

Thermometer for hot-thing (called the hottie):
  rule succeeds with result 100 * @temperature of the hottie.

Last thermometer something (called the thermometee):
  rule succeeds with result @temperature of the thermometee.

To decide what number is the temperature of (t - a thing):
  decide on the result of thermometer for t.

The microsun is a hot-thing.

when play begins:
  say "[temperature of player].";
  say "[temperature of microsun].";
1 Like

@JoshGrams and @rileypb , I appreciate the effort and I kind of get ya but I guess without seeing more substantial code side by side I don’t really see how it’s different (other than syntax) from

class Sword: Thing
   printName { say(‘a sword); }
;
elvishSword: Sword
   printName { if(player.isIn(trollRoom)) say(‘an elvish sword (glowing)’);
               else say(‘an elvish sword’); }
;
1 Like

I haven’t read the whole thread but usually when people say “Inform 7 is better than other languages because it’s rules-based”, they’re usually comparing it to ADRIFT, Quest, Adventuron, and other languages that typically do code for single item interactions and don’t support a ton of rules (although some of those languages have made big strides recently).

TADS, Inform, Dialog and Hugo are the four that are rules-based and generally of equal value and flexibility.

4 Likes

In my personal subjective view of history (which isn’t totally accurate), Inform became more popular than TADS early on because it compiled to the z-machine format used by Infocom, which had a ton of interpreters available. It remained popular later on because TADS didn’t have good options for web play. Now I think people are just unfamiliar with it.

I doubt there’s any real difference between the languages besides those things and personal preference.

4 Likes

I just want to say I’m planning on doing my next game in TADS, after Spring Thing. Or at least my next game other than the ones that are sitting unfinished on my harddrive.

5 Likes

I think the need for a single-purpose interpreter for full sound and image support in TADS holds it back. I’m sure that many people open the games in their 'terp of choice, which is probably not QTADS.

That is a requirement, isn’t it? I know some games need QTADS for something.

I’m speaking only as a player, of course. I have no experience with TADS as an author, and probably never will.

3 Likes

It’s becoming less-so, as more terps are supporting more features from HTML TADS.

Ideally, a TADS author should keep different capabilities of interpreters in mind when developing, and not require a specific one. Mostly because if you’re not doing that, then you’re unlikely to be screen-reader-friendly, too, among other accessibility features.

My game is ideally played on QTADS, but if you’re using a screen reader or a simple terminal, then it’ll still play just fine, and re-arrange the wording and output of certain things accordingly.

3 Likes

I’m not talking about screen reader support, which I just expect in 2023. I’m talking–unscientifically, I admit–about the way people open IF story files without any special prompting or guidance.

1 Like

Right, and what I’m saying is that a TADS author should have awareness of this environment, and assume players will open a TADS game in any interpreter at all.

The only reason why I mentioned screen reader support is because:

That sort of thing is an expected standard to meet. So if an author is keeping that sort of thing in mind anyway, then…

…QTADS should never be required for anything, unless the author is doing something very experimental and niche. But at that point, they aren’t aiming for widespread convenience for players, anyway.

Note, I said “ideally”; not “required to be”. I’m expecting players to be using Parchment, so I’m primarily developing for that.

Same thing as “ideally this song should be played on studio monitors”, while expecting 99% of the listeners to be playing a song on dollar-store earbuds or out of their phone speakers.

3 Likes

@kamineko my game can be played in Gargoyle and the like, but if it is, the player is eagerly recommended in-game to play with QTads, because without it they don’t get the art, the sounds, the music, and the inventory window… but the game is written to be playable/solvable without any of it…

3 Likes

@rileypb we’d love to have you on board!

2 Likes

Jess, I’m not talking about the way things ought to be, I’m just talking about the way people open games. That’s it. John recommends QTADS for his game. The IFDB page for According to Cain, one of the best games of last year, recommends QTADS.

Even so, if I have a file associated with Lectrote or Gargoyle, I’m going to double-click on it, and that will be that. Unless someone says “use QTADS plz,” I won’t. & I know about this stuff.

My point is just that, by default, QTADS is probably not the average player’s go-to. Not that TADS is bad, or whatever. Just that living on an interpreter island has probably been limiting.

That’s all I’m saying.

You seem to want to talk about features and what you’ve been working on, but this doesn’t have anything to do with that. I don’t even know what you’ve been working on. As Brian mentions above, interpreter support has always played a role in a platform’s story. This has always been true.

But you wrote that content for people to see it, which only makes sense! It would be nice if there were some way to make all the features of your game more broadly accessible, platform-wise.

2 Likes

This is true – but it’s also true for Inform games as well, so far as I know. Like, if some Inform author decided to use Vorple to create a better multimedia experience with nicely-laid-out graphics, submenus, etc., to the best of my knowledge Gargoyle and Lectrote would also not be able to make any of that stuff work very well. It’s just that the lack of support for those features in the common interpreters mean that most Inform authors don’t try to create too much of that stuff.

In a funny way, TADS might be a victim of the fact that it does have a single, powerful interpreter that’s good at all that stuff – it makes sense that authors would be more likely to add on such bells and whistles since they know QTADS is a good target for that stuff, but then ignoramuses like me would blithely ignore that for years and just launch the files in Gargoyle and never be the wiser.

Anyway bottom line is that it is very much worth the two minutes to install QTADS and set the file associations up, and hopefully one day Inform will have the advantage of something analogous too!

(Again, maybe it does and I just don’t know about it, I’m very backwards when it comes to these aspects of IF development).

3 Likes

I swear, we are both talking about the same thing, then.

Right, then we are both saying the same thing.

Nothing you have said so far has caused this misinterpretation. I did not interpret anything you’ve said this way.

It’s the nearest thing I could use as an example on acknowledgement of a player’s unknown choice of interpreter. You don’t need to know what I’m working on. I could be any hypothetical person working on any hypothetical game; the specifics are not important. Simply: I am not other people, and I am not working on other peoples’ TADS games, so I can’t use that information to answer this question, specifically:

If you didn’t want the question answered, then I didn’t catch the necessary subtext, and I apologize.

4 Likes

Is that apples to apples? I’ve always considered Vorple a little exotic by comparison, but that might just be ignorance on my part. DId we have any big Vorple games last year?

What QTADS games are there that do what Vorple does? I’ve never played a Vorple game, but the website looks pretty fancy.

Mike, if anything, you must accept that you are completely extraordinary in your tendency to play and review every single competition game. Few will take the pains that you have on your wide-ranging IF journey, whether it be the installation of extra interpreters or assaying the strengths and features of less-utilized multimedia toolsets!

1 Like