Nice job. I think it might be worth adding a few more verb synonyms to make the parser a little bit less strict - what's a few more years of development. :)
Like many other devs I also dipped my feet in the world of interactive fiction. As a kid I was just learning about concepts such as inheritance / OOP / etc. so I went a bit overboard on the ontology.
I remember pretty early on making a rather large mistake in that regard when a friend who was beta-testing the game for me at the time typed in commands like "get key", "get sword", "get ye flask", and then "get Aldwin" to which the game merrily replied "OK" and promptly stuffed an entire human being into the player's inventory.
Heh. I remember similarly spending a few hours inside LambdaMOO. Successfully managed to clone myself, put myself in my clone’s pocket, and then put my clone in my own pocket and kind of broke room reversal. It was only later I discovered this was an intentional mechanic/bug that some designers that used to create very, very difficult puzzles.
Weird things happen when you give your MOO players a REPL in LISP land.
I once wrote an (Amylaar LPC) enemy who, if you attacked him and he was near death, would summon two comrades to fight for him.
Unfortunately, they're immediately hostile so you start attacking them too, and _they_ get near death and summon two comrades each, and so on. It turns into a Sorcerer's Apprentice scenario very quickly.
I managed to bring the MUD to a halt. An archwizard (not Yen Sid) had to instakill the enemies to avoid hitting their "near death" condition and creating more of them.
This was a long running bug with merc based muds. The logic was to scan the room items first which cased the bug. Later versions would scan corpses first, then self, then room.
As a kid, the first text adventure I encountered with "The Cave" a text-choice game created by another student in the same town I lived. Our common teacher had created a "Computer Club" newsletter, to share programs between schools.
Then at a junior college I encountered Adventure, Zork (the full version), Mystery Mansion, and Warp on an HP 3000/terminal mini-computer system.
I began writing text adventures myself, bigger and bigger, and with higher and higher ambitions in terms of complexity, story and world scope, parsing. My "Command English" parser was an incredibly versatile subset of English.
At home I had an IBM Jr (Hey, I loved it!), whose BASIC didn't have GOSUB, so I invented a stack for the parser using strings. (Used strings as a heap in another program to create a very slow 3D vector graphics program.)
In high school I wrote this massive text adventure called Wanderer. I was so proud of it, until the day I went to save it on my floppy disk, at which time it wrote all over the previous version only to abort because it was to big for the disk. No pre-write size check! :(
That was the last one I wrote. But by pushing every text adventure to new levels of capability, over and over, I learned a lot about programming, and developed a habit of innovating in program styles, and domain languages, to match problems.
I wish I had the source for all those programs, but these were the days of many incompatible computers, and storage media that decayed quickly.
---
I would love a Mac version of those four text adventures mentioned above. Mystery Mansion seems to have become particularly forgotten.
---
"The Plot of the Phantom" makes me so happy! Thank you Scott Andrew!!!
(Completely random, but reading the opening scene, it struck me how perverse it would be to get deeply into the game and find out I was in the text adventure equivalent of "Deliverance"! That would almost be art, lol. Like novels, text adventures are a medium that naturally supports much greater freedom, than visual mediums.)
I had the same thing happen - lost my text adventure because it grew too large. That spurred me to figure out a better way of writing text adventures. I thought my solution of using a single parser and parallel array for game data was pretty innovative. I was 12 at the time and didn't have access to any magazines that had game source in them, so I didn't know any better.
I was there in the 1980s; writing your own Infocom-style text adventure games was a common project among my peers. There are probably lots of unfinished (or even finished-but-unshared) games out there on old floppy disks in closets.
I have a couple of my own, now archived on my home server.
I also have a few of those from the 80s but only as notes written on sheets of paper (including many pages of hand-written BASIC and sometimes in various shorthands) because my Atari 800 did not have a cassette drive peripheral with which to save them.
They were fun when they ran for 15-20 minutes, even after keying them in for hours.
Tangentially related, I remember reading about an ancient still being developed adventure game. It was from Eastern Europe (former Yugoslavia, I want to say) about being trapped in a prison that had crazy amounts of depth and consequences. One of them being something like picking up a random unused condom on the floor will result in the pregnancy of another character in a later chapter. I've searched for it again and can't find it, and I couldn't have dreamed it up.
This is amazing. Replace “Atari 800” with “TI 99/4a” (and the fact that he eventually finished the game) and you have the story of my early life as a programmer! Well done for shipping. That’s the hardest thing of all to do!
"That's not a verb I recognise." (So. Many. Times!)
Sorry, but that isn't a verb recognition problem, it's a comprehension problem. I agree with the downvoted poster that LLM integration would significantly improve the end user experience. However the LLM should not be arbiter of game state (as they suggested), but simply the translator that ensures that the players instructions are understood by the game.
I'm not saying having LLMs narrate the entire situation. I'm saying have the LLM sit between gamestate and the player. The LLM is the UI.
Essentially the LLM can see the current game state and possible moves and it's the LLMs job to change the game state and report the current game state to the user (via a well written narrative).
That keeps the world consistent and structured, but the LLM adds enough dynamism to keep it flowing well. You can even make the underlying game state complex as well. Like you can have enemy AI's that actually move through the world too (independent of the LLM).
It looks as if the problem for this one was a game design issue. They had the LLM be sarcastic and ignore well known adventure game prompts on purpose. It's an easy fix to make the LLM more obedient and polite.
The biggest issue is attempts to hack the LLM, to get at hidden gamestate. But I feel this can be easily remedied by just not providing the LLM with hidden game state.
Even Inform6 with the English library running under a Pentium would run circles over llm's. They aren't even close.
If7 will curb-stomp it.
NPC's running around were a thing even in the 80's, see The Hobbit.
That on a ZX spectrum. 8 bit CPU, 48k of RAM. With if6 and Zmachine games for 16 bit and 32 bit computers in the 90's llm's can't even compete.
From Jigsaw, Anchorhead, Curses, Spider and Web to that anagram word puzzle game for Glulx (a 32 bit zmachine cousin), the array of amateur but professional looking games it's huge, really huge.
Nice job. I think it might be worth adding a few more verb synonyms to make the parser a little bit less strict - what's a few more years of development. :)
Like many other devs I also dipped my feet in the world of interactive fiction. As a kid I was just learning about concepts such as inheritance / OOP / etc. so I went a bit overboard on the ontology.
I remember pretty early on making a rather large mistake in that regard when a friend who was beta-testing the game for me at the time typed in commands like "get key", "get sword", "get ye flask", and then "get Aldwin" to which the game merrily replied "OK" and promptly stuffed an entire human being into the player's inventory.
Heh. I remember similarly spending a few hours inside LambdaMOO. Successfully managed to clone myself, put myself in my clone’s pocket, and then put my clone in my own pocket and kind of broke room reversal. It was only later I discovered this was an intentional mechanic/bug that some designers that used to create very, very difficult puzzles.
Weird things happen when you give your MOO players a REPL in LISP land.
I once wrote an (Amylaar LPC) enemy who, if you attacked him and he was near death, would summon two comrades to fight for him.
Unfortunately, they're immediately hostile so you start attacking them too, and _they_ get near death and summon two comrades each, and so on. It turns into a Sorcerer's Apprentice scenario very quickly.
I managed to bring the MUD to a halt. An archwizard (not Yen Sid) had to instakill the enemies to avoid hitting their "near death" condition and creating more of them.
I remember writing one of these and typing "put bag in bag" and then being confused why the bag disappeared from the world.
This was a long running bug with merc based muds. The logic was to scan the room items first which cased the bug. Later versions would scan corpses first, then self, then room.
Should have done it the other way around
Much better to have the world disappear from the bag.
put bag in bag of "things which do not contain itself"
Russell's Paradox: https://en.m.wikipedia.org/wiki/Russell%27s_paradox
As a kid, the first text adventure I encountered with "The Cave" a text-choice game created by another student in the same town I lived. Our common teacher had created a "Computer Club" newsletter, to share programs between schools.
Then at a junior college I encountered Adventure, Zork (the full version), Mystery Mansion, and Warp on an HP 3000/terminal mini-computer system.
I began writing text adventures myself, bigger and bigger, and with higher and higher ambitions in terms of complexity, story and world scope, parsing. My "Command English" parser was an incredibly versatile subset of English.
At home I had an IBM Jr (Hey, I loved it!), whose BASIC didn't have GOSUB, so I invented a stack for the parser using strings. (Used strings as a heap in another program to create a very slow 3D vector graphics program.)
In high school I wrote this massive text adventure called Wanderer. I was so proud of it, until the day I went to save it on my floppy disk, at which time it wrote all over the previous version only to abort because it was to big for the disk. No pre-write size check! :(
That was the last one I wrote. But by pushing every text adventure to new levels of capability, over and over, I learned a lot about programming, and developed a habit of innovating in program styles, and domain languages, to match problems.
I wish I had the source for all those programs, but these were the days of many incompatible computers, and storage media that decayed quickly.
---
I would love a Mac version of those four text adventures mentioned above. Mystery Mansion seems to have become particularly forgotten.
---
"The Plot of the Phantom" makes me so happy! Thank you Scott Andrew!!!
(Completely random, but reading the opening scene, it struck me how perverse it would be to get deeply into the game and find out I was in the text adventure equivalent of "Deliverance"! That would almost be art, lol. Like novels, text adventures are a medium that naturally supports much greater freedom, than visual mediums.)
I had the same thing happen - lost my text adventure because it grew too large. That spurred me to figure out a better way of writing text adventures. I thought my solution of using a single parser and parallel array for game data was pretty innovative. I was 12 at the time and didn't have access to any magazines that had game source in them, so I didn't know any better.
I know Adventure exists via homebrew on the Mac via the open-adventure package. There are a bunch of Z-machine options for Zork.
I was there in the 1980s; writing your own Infocom-style text adventure games was a common project among my peers. There are probably lots of unfinished (or even finished-but-unshared) games out there on old floppy disks in closets.
I have a couple of my own, now archived on my home server.
I also have a few of those from the 80s but only as notes written on sheets of paper (including many pages of hand-written BASIC and sometimes in various shorthands) because my Atari 800 did not have a cassette drive peripheral with which to save them.
They were fun when they ran for 15-20 minutes, even after keying them in for hours.
Willing to share them?
I would be, if they weren't so embarrassingly bad!
Tangentially related, I remember reading about an ancient still being developed adventure game. It was from Eastern Europe (former Yugoslavia, I want to say) about being trapped in a prison that had crazy amounts of depth and consequences. One of them being something like picking up a random unused condom on the floor will result in the pregnancy of another character in a later chapter. I've searched for it again and can't find it, and I couldn't have dreamed it up.
Anyone know the game?
From a serial procrastinator, kudos and best of luck!
This is amazing. Replace “Atari 800” with “TI 99/4a” (and the fact that he eventually finished the game) and you have the story of my early life as a programmer! Well done for shipping. That’s the hardest thing of all to do!
Had a quick play and it's fun, quirky, well written. I might just get into this. Damn rat!
I wonder what "quick play" means in 2025 with our short attention spans
... I thought he took 40 years to finish playing it. :-D
I'm imagining the application of text adventures specifically designed for second language learning. Quite the possibilities!
Did George RR Martin write it?
No, it’s finished.
I spent a bit of time using PAWS on an amstrad pcw to pen my own text adventure masterpiece.
It's probably still down there packed up in the cellar ....
Maybe I should dig it out again.
Wow, already stumbled into some good humour. Well done
"That's not a verb I recognise." (So. Many. Times!)
Sorry, but that isn't a verb recognition problem, it's a comprehension problem. I agree with the downvoted poster that LLM integration would significantly improve the end user experience. However the LLM should not be arbiter of game state (as they suggested), but simply the translator that ensures that the players instructions are understood by the game.
LLMs can enhance text adventures.
I'm not saying having LLMs narrate the entire situation. I'm saying have the LLM sit between gamestate and the player. The LLM is the UI.
Essentially the LLM can see the current game state and possible moves and it's the LLMs job to change the game state and report the current game state to the user (via a well written narrative).
That keeps the world consistent and structured, but the LLM adds enough dynamism to keep it flowing well. You can even make the underlying game state complex as well. Like you can have enemy AI's that actually move through the world too (independent of the LLM).
There have been attempts, the results were not promising:
https://intfiction.org/t/first-full-game-available-on-new-ll...
It looks as if the problem for this one was a game design issue. They had the LLM be sarcastic and ignore well known adventure game prompts on purpose. It's an easy fix to make the LLM more obedient and polite.
The biggest issue is attempts to hack the LLM, to get at hidden gamestate. But I feel this can be easily remedied by just not providing the LLM with hidden game state.
Even Inform6 with the English library running under a Pentium would run circles over llm's. They aren't even close. If7 will curb-stomp it.
NPC's running around were a thing even in the 80's, see The Hobbit. That on a ZX spectrum. 8 bit CPU, 48k of RAM. With if6 and Zmachine games for 16 bit and 32 bit computers in the 90's llm's can't even compete.
From Jigsaw, Anchorhead, Curses, Spider and Web to that anagram word puzzle game for Glulx (a 32 bit zmachine cousin), the array of amateur but professional looking games it's huge, really huge.
How? The LLM is in agentic mode and pulling and pushing the switches of the game. I don't see how these engines can curb stomp it.