Milliways Autopsy: examining a 39-year-old test dummy brought alive and then put in a car crash by Max Fog


This is my first postmortem. I will post, like, everything important to developing the game here. This is a space for examination, no?

These are all very very spoilery so please be warned.


(Notice: more are coming. Just later.)


Part 1: Timing

Look, I have to say it right now. The game was so hinged on perfect timing. Everything worked perfectly.
Don’t believe me?
Ahem… the game started at the beginning of a new academic year where I used my laptop in lessons. I was able to start working on it almost immediately. And I had loads of ideas in my head. Like, tons.

The first plan for the game I made, you skipped Magrathea altogether, immediately finding yourself in Slartibartfast’s ship, the Starship Bistromath, with only a short monologue explaining how you got there (I planned on having the part where Slarty picks up Arthur in the book to go to the mice be actually inside said starship, which wouldn’t have worked so well).

But thankfully, I was saved from what would have been a not-very-great game by (very soon after making the plan) coming across @Adam_S 's documentation of his and Stu Galley’s (if I am correct?) plans on the unmade game, which gave me the idea (albeit different from the original, but mostly the same) for the radio/plant puzzle.

Already a good amount, but there’s more!

SIDE NOTE: Originally I planned to work in Quest, but I thought, “Why not go full in?” and learnt ZIL. It’s much better than people say. Though against Inform, I dunno.

When I was working on the game, about the same time when I had finished a first draft of Magrathea, but still quite detailed, my laptop decided it was fed up with life and attempted defenestration on its hardware. In literal terms, it crashed in unexplainable ways (no I hadn’t got a virus, I was veeeery picky with my stuff) and, since I had an SSD storage, they couldn’t retrieve my storage without, like 2000 SGD. So… I restarted.
(Not a good timing, but still worth noting!)

At this point, I shifted my game to the new parser - see chapter 3.

The rest of the time passed mostly uneventfully, except when I accidentally deleted the OS from my computer :flushed: and had to restart the Big Bang level (moreover the WRITE verb disappeared as well, which is a veeery annoying one).

And at about July I decided I was done with the game. I’m SO GLAD I didn’t forget about it, because since then I got compliments from ClubFloyd, and even finished the three-verbs problem (see chapter 3)! And, got an altogether better game.

…Although, as you’ll know, it was nowhere near finished.


Part 2: Puzzles

The puzzles, I must admit, are the bit I’m proudest of. Take the notorious cupboard puzzle, for example. Hated by all those who try it, but still got some cool things attached to it. The Fjords puzzle. The Morpher Ship. These abstract ideas didn’t actually take much time to develop. I have had, from an early age, a love for the physical puzzles (cast iron stuff) and for ideas that don’t work. Take for example the Interview Room. Probably took the longest time to code (except Magrathea because it was my way of understanding ZIL). And I doubt any of you have passed it using the original method, the only method until two months or so before the comp began. In that method, which you will be able to find the solution to in the hints system, there is no need for the painting. Just a lot of YES/NO, and like the other, distractions through conversation.

The three most difficult puzzles to make were the mechanics-based ones, of course. But they’re quite complex mechanics, all to do with turns and time.
They are:

  • the Interview Room full mechanics (all of the conversations and stuff plonked one on top of the other, so many you can cause a stack overflow with them),
  • the evil cupboard puzzle (it’s not even that difficult, just really annoying to fully implement with no bugs),
  • and most of all, the Morpher Ship.

(Actually, technically the register and blaster/dinner puzzle, but those don’t count sinde it’s not specifically about the puzzle - see part 3.)

Guess which puzzles were the most difficult to come up with in the first place?

  • the safe/Clyde puzzle (the bottle opener? Really?),
  • getting the bottle opener (originally there was a parcel but an unrelated bug was crashing the game by accessing it at the wrong time, and I couldn’t come up with a solution, even though it was so obvious in the end),
  • and last but most, the Endgame teleportation code sequence. I spent ages figuring that one out, because if I followed the book it would be way too easy! So I had to link the start back to the end, without directly making it unwinnable. It’s my second favourite puzzle in the whole game. It’s not even that good.

Part 3: The Three-Noun Problem (ZIL details)

You’ve been warned!

This part gets really ZIL-y, so only if you want to know random stuff about ZIL or just for mindless fun should you read this.

Before I begin: ALL of the below (besides the phenomenal help I got from @AndyG with some stack things in moving from V6 to V5) is purely from tinkering around and making the vaguest logical links I can comprehend. Oh, and a lot of crashing Frotz and nearly my computer.

To start with, I should probably explain the transition to new parser (used in the latest 4 of Infocom’s games, started with Zork Zero). The differences between new parser and not is basically a much more complex source code with more access over doing complex stuff. Also, the new parser already has an EVERYWHERE syntax parameter built in, so I can do things like ASK [someone] ABOUT [anything]. I can also attempt more ambitious stuff.

Now here, I built on the new-parser allowance of the grammar files (verb noun preposition noun (PUT FOOD ON TABLE), also person, do something and others). And then, after months of editing in a vanilla file (stripped of anything that can be associated with a single game), I managed to get three nouns to be accepted - at least in the ZIL code, that is. I still couldn’t compile it because the ZILF compiler was core coded to only work with two, as syntax definitions appear to be grounded in ZILF, not ZIL.

So. Then came a week or two where I toyed around with the C# which ZILF uses, and came out triumphant, and realising that Tara McGrew knows much more about the new parser than she had let on, but still with no sources of information on what was what.

Who can count how long later, I finished fully. It was exhilarating! I had done three nouns. With only a side effect regarding the fact that now technically ZILF won’t stop me doing something like JUMP OVER OBJECT ON OBJECT WITH OBJECT TO OBJECT IF OBJECT HAS OBJECT IN OBJECT, but then playing it it will start acting weird.

Thanks to all those who helped me along the way, be it testers or otherwise. You are above and beyond the best :pray:


Thanks for sharing this fascinating glimpse into your process and inspirations.

I know very little about programming IF games, much less ZIL and ZILF, but it sounds like you really went on an odyssey in terms of working with / modifying the parser to implement your vision for the puzzles! (Am I reading the last part correctly that you had to edit ZILF in C# to get it to compile your ZIL code b/c you wanted a to use longer verb phrases? wow, re-writing the compiler definitely qualifies as going above and beyond . . .) You deserve to be proud of a pretty cool accomplishment. :slight_smile:


That is entirely correct. And thanks! And so here comes…

Part 4: Mini Post-Comp Stuff

First of all, I’ll start by saying that I’m happy to see the results, but more than a little sad, but it’s a first game!
My favourite part of the comp was the reviews (both sarcastically and not). Some reviews were very positive and liked the puzzles, even though there were bugs (the main reason for lower reviews) - and some reviews focused on the fact that it didn’t sound exactly like Douglas Adams’s writing, or that it was not under 2 hours long therefore not good. (Don’t worry, reviewer who may be thinking I’m targeting you; you’re not the only one to have said it.)

However, I have learned one thing which brought the game down by… who knows how many places? And that’s BUGS.

I didn’t even know that they were there at all! But, as a short summary, FIX BUGS. A lot.


In fairness, when you pitch your work as a sequel to Adams, it’s hard to avoid those comparisons. (I say this as someone whose IF debut was also an unlicensed Infocom sequel—it got similar comments. Emulating Lebling and Meretzky is hard enough, let alone one of the most iconic humor writers of the century!)


Well done, Max! And thanks for sharing your process.

Yeah, you’re never done with this. See all the threads about fixing bugs in Counterfeit Monkey, the highest rated IF game of all time that’s years old and has a whole team of people working on it? The bugs just never end.

You should be extremely proud of yourself. You’ve done this whole thing with a lot of grace, good humor, exuberance, and maturity.


Sounds like you had a massive battle against things going wrong on top of all the work. So well done sorting all that!

I thought the game had a lot of potential. The question now, is whether you’re planning to continue developing/extending it?


To fair, CM does a number of horrible things to the parser that most games don’t have to worry about… (see current bug thread).


Yes, Counterfeit Monkey is quite an exception to normal parser games in that the player can alter words in the text and create completely new things. Which is akin to alchemy in the real world and is an astounding feat of meta-implementation.

I believe to make this work, there’s a huge internal database of potential anagrams of every word and their descriptions and new rules, and I think that’s what why CM has teams to make it do even more things that Emily Short either never thought of or didn’t bother with.


CM is, and at this rate probably will be, the greatest IF game of all time.

Extend? It’s actually larger than the Hitchhiker’s Guide in both play length and file size! So, not extend. But develop, yes. I fixed a few bugs (all that were mentioned), implemented Ford, Zaphod & Trillian some more, and apparently it’s pending release on the IFArchive.


Sounds good. Sorry, “extend” was misleading. What i really mean was make it deeper, ie to extend the behaviour space not the number of thing places. Give the characters more dialogue etc. Best of luck.


I really liked Milliways and am looking forward to playing a post-Comp release.

On a totally unrelated note, if your laptop is dead but there’s nothing physically wrong with the drive, it should be easy enough to recover information from the drive if you can get it out of the computer without damaging it. You’re welcome to DM me and I’ll walk you through the basics, or I an try to do it for you if you’re willing to post it to the US.


Hmmm, we went to the computer workers and asked them to extract the data, but they said since it was an SSD not HDD, they would charge 400 dollars for it…

The computer’s dead as a dodo now, and I doubt I even know where it is. Probably in the trash.


If you can find the physical computer and pull the drive out, it probably has some variation on a SATA or IDE interface. (How it works internally, i.e. whether it’s a spinning platter or SSD, doesn’t really matter; what matters is how you get it powered and plug it into a computer.) Though it’s hard to say without knowing any hardware details about the unit.

In any case, you can probably just plug it into something more or less like this, which effectively makes it into an external drive that you can plug into your new computer and copy files from. It’s easy enough to then just transfer the files or create a backup image of the whole disk. Probably what they’re charging you for is, effectively, their labor. (Or else maybe they think people with SSDs are rich and they can squeeze more money out of them.)

If you’ve already given up on the computer, then you need not even be particularly careful about digging the drive out: my concern when doing this before has always been “let’s not damage the computer.” This is sometimes the real source of concern with laptops, which are tightly built (and often built in ways that make it hard for end-users to tinker, because they want to motivate you to just buy a new laptop instead of trying to upgrade it). But if all you need to worry about is not damaging the drive itself, it’s relatively easy to go in and cut through anything that’s in your way without worrying about whether you’re rendering the computer you’ve already written off unusable.


That was the problem: the computer itself was the main problem. Some of it had overheated and damaged the… things in it, plus the circuit board itself had become dislodged. I blame the latter on cycling to school with it.

Anyway, I won’t need it but’ll be sure to have you in mind if I need it again! (Which hopefully won’t be soon…)


Offer’s open if you find the computer! Rip out the hard drive and mail it to me. Worst case scenario is that it’s unrecoverable.


I’ve used something similar to this when recovering hard drives from compromised computers, and it works like a charm.


Once I figured out how easy it was, I was kicking myself for dragging a dead old Mac PowerBook laptop around for years in the hopes of finding someone to fix it or extract the data inexpensively.