Imagine the spider having to deal with this work environment…
I expect it’s easier than in Inform. I’m guessing that when you cut a verb in Dialog, you probably just strike it out in one place and there are no lingery connections, at least not ones that can sneak around to cause headaches. The interconnectedness and synonymousness of Inform’s grammar make fully subtracting stuff tricky.
-Wade
This has been a fascinating challenge to watch, since I basically gave myself the same premise back in '97. I’m sure the results will be pretty different, but it’s slightly uncanny (but understandable) that ‘a 20-ish word vocabulary’ and ‘an NPC named “Stranger”’ have both popped up again. I just hope the PC won’t need Feverleaf.
I have a little anecdote about 8-bit garbage collection, if you’ll allow me.
On the 8-bit Apple II computers, there were really only two major flavour of operating system. DOS 3.3., then the newer ProDOS.
I started writing Leadlight in DOS 3.3, just because I wrote everything in DOS 3.3 and found ProDOS a bit weird. When it got running, it was cycling about 13 free bytes in RAM every few turns. So every few commands, you’d get a garbage collection which froze the computer for up to 5 seconds.
Obviously I was horrified. I was just lucky that one of the major improvements made in ProDOS was to the garbage collection routines. They were now both automatic and instantaneous. I moved the game to ProDOS and was able to continue.
-Wade
I’m more thinking of TADS, but yeah.
I mean according to the Dialog manual, there are several verbs that just redirect to other verbs, so it might not be that clean (hug is a synonym for kiss, for example) + some print text of their own as well as acting as synonyms?
You wouldn’t allocate a string?
EDIT: This was supposed to be a parody of “you wouldn’t download a car” anti-piracy nonsense tagline of the 00s.
Hehe, maybe garbage collection’s more sophisticated concept than it was for BASICs… strings were really the problem. Every use of a string added to the garbage. I mean it FELT like everything added to the garbage! When you have 13 bytes RAM left, the turnover’s so high it just effectively becomes like the program can no longer continue without constant automatic garbage collection.
-Wade
The developers of Chants of Sennaar have said that Heaven’s Vault was a major inspiration.
Medium-dry-dinguses.
The recommended way of modifying the stdlib in Dialog is literally to make a modified copy of stdlib.dg. So to delete a verb, you just … delete the verb.
So more like ZIL than TADS 3 or Inform?
Yes, exactly.
No-one in the main thread has yet picked up on this:
Here’s the magic bit from the Dialog manual:
Several adjacent line breaks are merged into one, preventing accidental paragraph breaks. Likewise, several adjacent paragraph breaks are merged into one, along with any adjacent line breaks, preventing accidental runs of more than one blank line.
So you can put (line) anywhere you know that you need at least one newline, and if it ends up immediately followed by a (par) later, Dialog will correctly output two line breaks (producing a single blank line) rather than three.
The real treasure was the interdimensional spider we became along the way.
- “You know what, son? You think you’ve only just worked out what it means to be an interdimensional spider. But you always had it in you. Your true interdimensional spider was in there all the time –”
(pats son’s chest)
- “– and now you’ve shown me what it means to be an interdimensional spider.”
- “Oh, dad!”
Hugging and sobbing.
-Wade
You have scored 1000001 out of 1000001 points, for a rank of Interdimensional Spider of Mystery.
The contents of the stranger’s pocket,,, clearly,,,
Dialog newline handling
Yeah, it’s amazing how bad paragraph-break handling is in IF tools in general. One of the downsides of the focus on backwards compatibility and keeping these tools going, perhaps?
The other one of these that has come up in this episode is:
It has always boggled my mind that parser-IF never adopted tab-completion. It’s one of the biggest most visible usability features of any command-line interface. On a technical level I can understand why, of course: the systems were not built with this in mind and retrofitting it would likely be a ridiculously large effort (if even possible in the interpreters that we have?). But this is such a “holy guacamole, Batman, this art form is stuck in the 80s!” thing. You should be able to type TR<tab> FN<tab> DOOR and be done with it.
What about the practical objection of how to avoid spoilers?
Are there some good counterexamples of limited parser puzzles that avoid this? (And as I’m thinking about it, it’s not just the puzzles either that can be lawnmowery.) I think it’s not so much the limited parser that causes this but the reduced complexity of the game, which maybe could be made up for with more objects, or deeper implementation of the limited actions.
I think ADRIFT actually has this? Though to @Dissolved’s point, I mostly know that because often when I play an ADRIFT game the author will include a scolding note telling the player to turn it off ![]()
I do think the spoiler worries are overblown - but it would be helpful if there were ways to track whether a particular noun or verb has been encountered by the player yet, with some automatic (e.g., any implemented word the player’s already typed should go on the list) and some manual (e.g. after the PC gets magic powers the code can add all the spells to the list). The laissez-faire alternative is fine, but can get messy.
I guess we need to define what is a limited parser. Inside the facility - yes, you can only move and sleep. A graphical adventure where you have ten actions but they are all told to you and you can’t try others? More limited than an open console but much less limited than a single action.