Community Awareness Survey of TADS 3

Relating to my above comment, however, here’s a counter-argument that often comes up for me. I hope this is relevant. I think it is because one of the survey questions was “Did you know that save, restore, undo and other core interpreter functions can be completely customized in TADS?”

The only way I can say it is to refer to a recent post I have going on Rules for Characters Exposing the Player To Dangerous Things - #11 by Jeff_Nyman.

Specifically the idea there is trying to figure out why an extension isn’t working to achieve a given effect.

The main thing here is to note that, to do this, you’re now dealing with code like this:

[ Hypo_Middle rule  a b save_sp hypo_size;
	Hypo_Capture_End();
	save_sp = say__p; say__p = 0;
	FollowRulebook(rule);
	if (say__p == false) say__p = save_sp;
	hypo_result-->0 = RulebookOutcome();
	if (hypo_result-->0 == RS_FAILS or RS_SUCCEEDS)
		hypo_result-->1 = ResultOfRule();
	hypo_size = (HYPO_RESULT_WORDS * WORDSIZE);
	@protect hypo_result hypo_size;
	@restoreundo rule;	! never returns if successful
	print "[What happened to my undo state? --hypo]^";
];

Essentially entirely Inform 6. But sort of “hooked into” Inform 7 in a type of bi-directional communication style. My only point here is that you sometimes have to deal with radically different abstraction in Inform. Granted, this is highly dependent on what you’re doing and what you’re needs are and I know there are plenty of projects out there that wouldn’t be dealing with this at all.

But when you are dealing with it, you might sometimes wish you were using a system that had just one abstraction to wade through. So in the case of a system like TADS 3, while I might be dealing with equally complex code, at least it’s all code at the same abstraction level – to wit, TADS 3 code. With Inform 7, on the other hand, I’m dealing with Inform 7 and Inform 6 and they are very different.

Side note: the extension in question appears to be using logic that the Inform 7 manual itself says “Please do not use any of the undocumented invocation syntaxes: they change frequently, without notice or even mention in the change log.” Which is another one of those “gives you pause” moments. I say that because part of you then wonders what other extensions might be using Inform 6 and using similar undocumented aspects.

I bring all this up just because it is something that I don’t see brought up much but it can matter. So I think it fits into the “at least worth being aware of” type of thing. How much you needs to be aware of it and how much it matters, of course, is very relative.

So, in relevance to that survey question I started with, one of the things I’m dealing with is some aspect of the undo and restore interpreter functions.

8 Likes