One of the coolest technical aspects of early Infocom text adventure games is that most games weren't actually written using native assembly code for the platforms they ran on, and were instead compiled down to "z-code", a bytecode which ran on the "z-machine" virtual machine architecture. Z-machines are pretty niftly little bits of tech, as while they have a lot in common with regular 'ol machine code, the z-machine spec also includes dedicated instructions for fetching text input from the user, outputting text to the console, saving/loading data to disk, etc...
Having games target the abstract z-machine platform made it incredibly easy for Infocom to port games across platforms, as instead of re-writing every game from scratch, they could simply write a z-machine interpreter for said platform, and immediately gain access to their entire adventure game catalog!
A happy side-effect of all this is that it's super easy to run these classic adventure games on modern platforms, as instead of emulating the UI/UX of a 80s microcomputer, it's possible to write a z-machine interpreter that takes full advantage of modern GUIs.
One of my personal favorite modern z-machine interpreters is `encrusted` [1], which is written in Rust that runs on the Web thanks to WebAssembly. As a fun side-project, I ended up forking the project and making `embcrusted` [2], a z-machine interpreter that can run on embedded platforms without a full C-library. In a weekend or two of hacking, I was able to port a z-machine interpreter to my mechanical keyboard, in order to get the "authentic" experience of playing a text-adventure game through a teletype :)
I was reading an article about the Z-Machine recently [1], and I was quite surprised that in addition to being a virtual machine, it also implemented virtual memory! Thus, pages could be swapped in and out of disk as needed. (Since CPUs like the 6502 didn't have a hardware MMU, I guess this was an explicit software step -- i.e. a called function that would check if the page was loaded, and if not, arrange for its load.)
With a virtual machine, virtual memory, and (for the time) a great natural language parser, it shows that the Infocom folks learned their craft in world of academia, high-end computer hardware, and ideas, instead of the more amateur (at the time) world of microcomputer enthusiasts.
While cool in a way, it was also annoying that infocom games in the day took several seconds, then started the disk to load whatever the next response was.
The limited parsers of the competition responded almost instantly to input. The limited parsers were enough for everything needed, most everyone I knew just used the two word sentences even though more complex ones would work.
> then started the disk to load whatever the next response was.
In addition on some systems with smaller disks (eg. C64) needed the story file to be split up over two disks, because the story file and interpreter wouldn't both fit on one disk. So you were switching the floppy disk at various intervals as well. With the C1541 being no speed demon to begin with it was not fun. I remember being much happier playing it on CP/M and DOS machines later.
I used to play a lot of z-machine text adventures on the original iPod Touch with an app called Frotz. It was pretty cool to see stuff from the 80s running on a modern tiny portable computer like that.
In my youth I used to use BCD to handle large numbers and mathematics, so bit/byte representations have always been of interest. In that regard, I really appreciated the Infocom text compression.
Use your favourite seach engine to look up ZSCII which, roughly, is three characters per two bytes (five bits each) with special markers to switch between three different 'alphabets' for what characters the ZSCII bits represent.
Edit: Coincidentally there's a British quiz show called Only Connect, and a few days ago one of the contestants offered xyzzy as an answer to a question where they had to provide the fourth entry in a sequence. The host had never heard of it, and expected a different answer, but it fit and they got the points.
How about Hitchhiker's? There were a couple of frustrating bits there. Gosh - I must have played a dozen of those things - and now, being old, I probably couldn't remember what I did, and am probably too stupid to figure it out again. (Or I have other things to do than beat my head against the wall ... or all the above)
I first tried my hand on Zork about 15 years ago, and I never finished it too, probably only 5-10% done on my end. But the experience was pretty good for that short play. Yeah and I got eaten by the grue...
I've recently played the entire Infocom text adventure catalog using walkthroughs. Yes, it feels somewhat like reading a book (although it's more "active" - hard to explain), but you get to experience a lot of what made the stories great. If you just want to finish Zork, I recommend this approach.
I often think I owe Infocom my career! I believe it was hugely valuable to have started hobby hacking at a young age, and Zork was what made we want to do it. Their language parser was just so cool. Like many of you I'm sure, a text adventure game was my final project in computer science at high school too. :-)
And don't forget that MUDs led to the wider field of "interactive fiction," which covers MUDs but also a bunch of other really fascinating ways of telling stories with interactive text. There are oodles of them at https://ifcomp.org/ and https://ifdb.tads.org/
He's right, Mudlet is the best desktop client out there for Mudding with. This is the part where I mention that I run a company with five MUDs ranging from almost 24 years live to just a couple years live. https://ironrealms.com
I used to be a cat-like dual wielding rapier knight with totem-skills, had a lot of fun with my old guild until the RP requirements were dropped. Still z thank you and the rest of the gang fort giving me so much fun and be able to meet so many nice people. I'm sure my character (Shearr) is still gathering dust somewhere :-)
I have not played MUDs in a long time, but, when I did, I always just got by with Tintin++. I never went all the way and wrote an actual bot that could run unattended, because there were so many different things that could really mess up your bot, or, at least cause it to act impolite, that it looked like more trouble than it was worth. Also, I wasn't that great at scripting with tt++. :P I was, however, (literally) a wizard with LPC.
Yeah, I also got heavily invested in tt++ scripts but never fully automated. It was great back in the day but there were definitely some eccentricities that made advanced difficult - lack of proper lists, awkwardness dealing with empty strings, weird scoping and special variables, no dicts.
I recently dusted off my old files and tried to get it running in the latest version but there were so many breaking changes that I just gave up trying to fix it.
It would be fun to try to make a proper fully automated bot, though as you said, there are so many different contexts and possible text prompts itd be difficult to make it truly reliable. I wonder what the best approach would be - some kind of classic AI goal system or newfangled ML?
(If I had the time to start over, I’d probably use Mudlet since it uses a proper scripting (lua) instead of something that got hacked together over time. Though it’s a bit GUI-reliant for my tastes)
Yeah, tt++'s programming model is essentially a finite state machine with a single global scope. If that sounds hard to work with, it is.
I think if I were starting over, I'd go with a client that's extensible in a real language, whether that be Lua, Python, Ruby, Scheme, elisp, etc., simply so I could take advantage of modern programming language features.
Mainframe Zork aka Dungeon aka DUNGEO on the pdp-11 pretty much changed my life. I was a jock in high school until I found the math lab with two paper terminals and two geeks playing Adventure and Dungeon. It was literally like lightning hitting me. I spent nearly every waking hour on computers the rest of my time in high school and employed as a programmer by nineteen. It's been 36 years and I still write code, design/architect business systems, and enjoy the work.
I played Zork via the Arpanet in 1978. (Yes, I'm "experienced"). A friend showed me how to reach the net via a local phone call, even though we were in a school computer lab Washington, DC and were accessing a machine at MIT. We had a 300 baud modem and a DECwriter terminal; we wasted a lot of paper playing the game.
I'm still playing Zork (Planetfall, Enchanter, and Deadline too) and have been since the early 80s. Even though I've never solved them, they never fail to warm my heart. Along with my collection of dusty, hand drawn maps I journey onward! Thanks for the memories, Infocom.
There's going to be lots of these anecdotes, but Zork was the first computer game I ever obsessed over, on my cousin's C64.
Hand-drawn maps and notes about clues, getting eaten by the grue on purpose, getting frustrated at the maze of twisty passages, and of course entering random curse words just to be scolded by the game. Much more recently, I played a web-browser based port of the game and even accounting for nostalgia, it held up for me!
Zork was responsible for my initial interest in computer programming (and first program in BASIC, forever lost). Probably loved it because it was so much like a choose your own adventure book of the times.
This isn't like an old camera that can still be used to shoot amazing pictures... Your floppies are mostly sentimental. The game is wildly available online and even on the web as web app.
I'd recommend you frame them carefully and hang them in pride on your wall.
Anyone play Aidungeon.io? They hooked GPT-3 up to make a Zork where you can do basically anything and the game will come back with something that's at least interesting.
It's interesting how crazy new tech concepts come in as pure text first. For example, MUDs were the first MMORPGs back in the 90s.
It’s amusing but it’s not a game. It will respond with something (often amusing) to any promos you write but there aren’t any rules to what you get back and there are no puzzles to solve.
Zork, on the other hand, is an actual game you can solve, complete with a scoring system.
I think aidungeon would be very similar to a game if it remembered the past sentences that the player and the AI have input so far. So far, it seems to create a new context from scratch for each and every sentence from the player.
Very similar but still not a game. Games have rules, objectives, victory conditions. This would still be a text-based "walking simulator" or "lucid dream simulator" to put it more accurately.
Those BBS games back in the day were only 1 or 2 people though because they required one to tie up a phone line to play and most home setups couldn't support more than a few nodes, at least until the 90s.
Compuserve had a multi-player game called British Legends (also known as MUD 1) in the mid 80s. I very fondly remember paying $6.25 an hour to play at 300 baud. You can still play it here:
Has there been any major updates in the last 6months or so? It was a lot of fun to play around with but didn't remember all my earlier decisions so felt pretty inconsistent.
Definitely off-topic, but I was fond of a textual adventures on my father’s MacSE. There was anyway an image alongside the text to illustrate the descriptions. It started in a monastery, where everyone had disappeared. You had to travel around and grab things. And (bug or not), you were sometimes teleported to an arena where you had to fight a T. rex.
I cannot remember anything else.
But I spent an awful lot of time figuring out how to win that game (and died 99.9% of the times because of that T. rex).
> You are in an open field west of a big white house, with a boarded front door. There is a small mailbox here.
This reminds me of that hypnotic phrase from the 12 Monkeys tv series.
Anyways, whatever happened to these types of games? Did it just die out as computers got more powerful, and everyone just played first-person shooters or 3d role playing games?
There are still people making new works of interactive fiction, including in the parser-based style of Adventure or Zork. You can find a lot of the more recent games on IFDB[0] and general info about IF and the community on IFWiki[1]. Most modern parser games are built for VMs with interpreters available for many operating systems and types of devices, with Lectrote[2] being a common recommendation for desktop platforms.
While TADS, Inform and others are sophisticated tools (more like programming languages, really) to build adventures like Zork or even more complex, for a simple Choose Your Own Adventure something like Twine is better.
You can also use Google Forms, and embed those within Google Sites. I've been doing this to create media training exercises for interviewing techniques, and they've been popular with the journalism students.
FWIW: In one of my classes, the teacher taught us Prolog by making us write a text adventure using it. It turned out to be well suited to the task. Except for the "publish to the web part".
If you're interested in trying to do it in Rust, I've made a series of simple text games that you could use as an example [0]. Rust will work for web and someone has added web support for these, but I haven't merged it in yet.
You could do that with whatever interactive fiction tools you want, combined with some form of speech to text software. For instance, Inform 7 for your IF tool, and any of the following for speech to text: https://www.lifewire.com/state-of-linux-voice-recognition-22...
That said, I'm not sure how good any of those speech to text tools actually are, so, this might be kind of a pipe dream at the moment.
Also, I know you meant "Choose Your Own Adventure," but my immediate first thought was "Cover Your Own Ass." I may have spent too much time in corporate America. :/
Thanks. It really is the voice to text that is the concern. I noodled around with an interactive fiction game concept a while back focused on a nuclear showdown.
I wanted to build it into an red analog telephone. The phone would ring and you would hear a message from various government/military types.
As tensions rise, the phone rings more often, possibly multiple lines light up forcing you to catch/miss vital information or opportunities.
Inevitably, things go pear-shaped and you try to (prevent?) a first strike/retaliatory strike.
Truthfully, I don’t have the skills to build the device, but plotting out the narrative, writing the dialogue would be fun.
Why would the device need to be any more complicated than a bluetooth speaker and microphone driven by a Raspberry Pi or something? That effectively reduces all the engineering necessary to making a case for the Pi that looks like a red rotary or push button phone, and stuffing a speaker and mic into the handset.
Right. That is clearly the general answer. Ideally - I would like it to be an actual red push button telephone with multiple lines to add complexity to the narrative - but simpler would be a fine start.
Great idea, but very hard to pull off. The hardware is easy, but all the wrting and plot needed to go from a demo to a fun game takes a lot of hard tedious work.
I encourage the effort, but don't want to well it short. The idea is the easy part.
Zork source and binaries, January 1978 - https://news.ycombinator.com/item?id=24371538 - Sept 2020 (13 comments)
Zork source code, 1977 - https://news.ycombinator.com/item?id=23108626 - May 2020 (81 comments)
Exploring Zork (2012) - https://news.ycombinator.com/item?id=20731333 - Aug 2019 (22 comments)
Zork and the Z-Machine: Bringing the Mainframe to 8-Bit Home Computers - https://news.ycombinator.com/item?id=19982345 - May 2019 (17 comments)
A Brief History of Zork (2014) - https://news.ycombinator.com/item?id=19946781 - May 2019 (10 comments)
Source code for Zork, Hitchhiker’s Guide, and other Infocom games - https://news.ycombinator.com/item?id=19672436 - April 2019 (238 comments)
Z3 – The Zork CPU - https://news.ycombinator.com/item?id=15169565 - Sept 2017 (11 comments)
The DUNGEON (Zork I) source - https://news.ycombinator.com/item?id=15147346 - Sept 2017 (50 comments)
Your load is too heavy: Zork deep reading - https://news.ycombinator.com/item?id=15138114 - Aug 2017 (32 comments)
The Enduring Legacy of Zork - https://news.ycombinator.com/item?id=15073227 - Aug 2017 (48 comments)
Beyond Zork - https://news.ycombinator.com/item?id=10524438 - Nov 2015 (9 comments)
Revisiting 'Zork': What We Lost in the Transition to Visual Games - https://news.ycombinator.com/item?id=2705269 - June 2011 (133 comments)
Others?