I’ve tried my third port of Zork (although I am sticking with the second for now), so I wanted to talk more about the versions that are out there.
To recap an earlier post, the mainframe version of Zork started in 1977 a language called MDL, was ported in early 1978 to FORTRAN and renamed Dungeon, and was renamed again (due to trademark dispute) to Zork before it went commercial.
The FORTRAN source kept getting modified by the original authors up until 1980 and the MDL source kept getting modified up until 1981. However, no versions from 1977 seem to exist (Dungeon 2.5, the earliest version number on if-archive, came from 1980) so any type of modern play will be several years removed from the original.
I started with ZDungeon, a port by Ethan Dicks into z-code based off the MDL source. It seemed like the sanest way at the time to get the closest experience I could to the original, and being in z-code means I get to play it with Gargoyle:
In addition to looking easy on the eyes, it means I can SAVE and RESTORE and even UNDO to my heart’s content.
However, David Kinder kindly pointed me to an interpreter called Confusion by Matthew Russotto that can play the MDL source directly.
Since I’m tackling this project (which I have yet to name or define or admit exists) very seriously on the historical angle, I switched over. I noticed, as David Cornelson mentioned to me, the behavior of the thief seems different: the ZDungeon port has the thief appear in more rooms (any room?) and there’s no warning from the sword about thief proximity. So that aspect of the switch made me happy.
However, I was still slightly unhappy. I was fine sacrificing font readability (which wasn’t too bad) but I was having issues with game saves: the original Zork only allows one save at a time. I could do some file-copy-wrangling to get around that, but when trying an intense amount of experimentation to got to be a hassle. Also not-fun: upon dying, RESTORE no longer works:
Oh, no! You walked into the slavering fangs of a lurking grue.
As you take your last breath, you feel relieved of your burdens. The
feeling passes as you find yourself before the gates of Hell, where
the spirits jeer at you and deny you entry. Your senses are
disturbed. The objects in the dungeon appear indistinct, bleached of
color, even unreal.
You can’t do even that.
Even that I would have been able to hang on with, but twice I’ve gotten odd crashes like this:
LISTENING-AT-LEVEL 2 PROCESS 1
Atom REP has neither LVAL nor GVAL
I don’t think Confusion has bugs; I have the feeling these are “authentic” crashes in the code.
I decided to try a Windows port derived from the FORTRAN source (I used the WinGLK one by Andrew Plotkin).
There are some definite port changes. There’s a status line, the “restore” command works when dead, and there’s been bug fixes above and beyond the original port. There’s also (according to the README file) this:
VI. Assorted Additions (up to oct-94)
Performed, to the best of my knowledge, by Robert Supnik. This includes
several puzzles, “lots and lots and lots and LOTS” of bug fixes, an
unsatisfying afterlife, and a Last Lousy Point.
I’m not sure what’s an “unsatisfying afterlife”, but additions of “several puzzles” definitely makes me nervous.
There’s earlier Dungeon ports I could try going back to, even straight from the 1980 source, but at the moment all this has me scratching over my head what a “best” experience of the original would be. Would the original authors really want bugs as part of the experience? I do get the sense that while the MDL source hasn’t gone through bugfix revisions the FORTRAN source sure has (1981, 1985, 1986, 1987, 1994, and 1998) and maybe I’m better off with problems fixed. Rather than HELLO, SAILOR crashing the game (as it does in Confusion) in the Plotkin port of Dungeon it does this:
Misplaced comma or conjunction.
Should that really be frowned upon? Am I playing for most enjoyable experience or maximum authenticity? Am I stalling by writing this post because yet another puzzle is stumping me?
At least I know the answer to the last question.