{"slug": "let-s-play-zork", "title": "Let's play Zork", "summary": "The article describes the author's decision to play the classic text-based adventure game *Zork* after being reminded of it by an episode of *The Big Bang Theory*. It provides instructions for obtaining and running different versions of the game using the Frotz interpreter, along with a shell script for managing multiple releases. The author then begins playing, exploring a canyon and forest, and successfully finds a jewel-encrusted egg in a bird's nest.", "body_md": "## Let's play Zork\n\n*24 Nov 2023 - A hollow voice says \"Fool\".*\n\nRecently I saw a rerun of The Big Bang Theory on TV. It was quite refreshing\nsince I don't rewatch any series, with the only exception being Black Books.\nOne of the aired episodes that day was the one\nwhere Sheldon mentions playing a buggy beta version of Zork[[*](#notes)].\nSuddenly, I remembered that I wanted to try out this old text adventure since\nI watched the episode back in 2010 or so. I considered it super weird then\nto play videogames without the... well, video part. But I played many tabletop\nRPGs since, so I am now well aware of using imagination as a game mechanic.\nAnd I've seen Zork appear many times on online forums and even in Call of Duty\nBlack ops which I played on Xbox360.\nSo I assume this rerun was the last straw and the \"call to\nadventure\" I was waiting for. Let's start with preparation for the descent.\n\nFirstly, we will need to\n[obtain the game](https://eblong.com/infocom/#zork1)\nand\n[the manual](http://infodoc.plover.net/manuals/zork1.pdf) might\nalso come handy. (If you already have ZORK I, you can\n[jump here](#play).)\nFor enjoyers of adavnced LISP, I include source code\nfor the\n[Infocom version](https://github.com/historicalsource/zork),\n[MIT release](https://github.com/MITDDC/zork)\nas well as the\n[mainframe versions](https://github.com/heasm66/mdlzork).\nAnd in order to actually use game files, we will need package *frotz*.\n\n```\n\t  sudo apt install frotz\n```\n\nFrotz is licensed as free software under GPLv2+ but you won't find it in the Free software directory. I tried to contact its maintainer David Griffith about this issue, but recieved no answer so far. But the frotz source code is available[here](https://gitlab.com/DavidGriffith/frotz)for every Z-machines enthusiasts which favors Graham Nelson's specification standard 1.0.\n\nAnyway, we will use frotz interpreter to run the game files.\nDon't forget to use the full path to the directory where you downloaded or moved\nthe game files. A *Games* directory at the home might be a good idea.\n\n```\n\t  frotz ~/Games/zork1-r88-s840726.z3\n```\n\nWe can also make an alias in your*.bashrc*file to start the game from everywhere. Or... we can unleash our inner hacker and create a bash script that will run any version of Zork we downloaded simply by argument.\n\n``` bash\n\t  #!/bin/bash\n\n\t  # Define a dictionary of aliases\n\t  declare -A dictionary=(\n\t    [\"r2\"]=\"zork1-r2-sAS000C.z1\"\n\t    [\"r15\"]=\"zork1-r15-sXXXXXX.z2\"\n\t    [\"r88\"]=\"zork1-r88-s840726.z3\"\n\t    [\"r52\"]=\"zork1-invclues-r52-s871125.z5\"\n\t  \n\t    # You can add more zork versions here\n\t  )\n\t  \n\t  # Check if the correct number of arguments is provided\n\t  if [ $# -ne 1 ]; then\n\t    echo \"Usage: zork \"\n\t    exit 1\n\t    # Or we can hard code any version to be default e.g.\n\t    # cd ~/Games/ && frotz zork1-r88-s840726.z3\n\t  fi\n\n\t  # Check if alias exists in the dictionary\n\t  alias=\"$1\"\n\t  file=\"${dictionary[$alias]}\"\n\n\t  if [ -z \"$file\" ]; then\n\t    echo \"Zork version '$alias' not found.\"\n\t    exit 1\n\t  fi\n\n\t  # Cd to your directory where you store the game files\n\t  #\n\t  # note:\n\t  # you could use full path to file with frotz command\n\t  # but your saved game files would be then stored at ~\n\t  cd ~/Games/\n\n\t  # Profit!\n\t  frotz \"$file\"\n```\n\nIn order to run this script from everywhere in our file system, we will save it under name*zork*(without \".sh\") and move it into our bash PATH. For me it will be\n\n*~/.local/bin*. After that we will need to \"chmod-ex\" our script to make it executable.\n\n```\n\t  chmod +x zork\n```\n\nAnd now we can run any version of Zork we like by using the release number of desired version as argument for our script.\n\n```\n\t  zork r52\n```\n\nThis script can come in handy as different builds have different bugs\nand command responses. The first two versions (r2 and r5) will teleport player\nto a random location when a nonsense travel command is given, like GO WALL\nor GO TREE. In all versions except for *solid gold* (r52) you can\npour water from the bottle even if the bottle isn't open. And every version\nsuffers from EXAMINE OVERBOARD problem. You can check the full list of differences\nin\n[Infobugs](http://graeme.50webs.com/infobugs/zork1.htm) and\n[Microheavens](https://www.microheaven.com/InfocomBugs/zorki.shtml)\nzork sections. Exploiting those older buggy versions sounds fun and I, as\na real adventurer, picked up release r15 the \"Hack of 15.UG3AU5\" version.\n\nThe game itself is pretty straight forward. Our adventure takes place\ncirca 300 years after the fall of the Greatest Underground Empire, and we\ntake the role of nameless adventurer seeking fame and fortune in the ruins\nof the once unmatched empire. The manual explains that the game is played by\ntyping commands and awaiting the response from the game. It is basically a\nRead Eval Print Loop with a complex parser and a score system. And just like any\nREPL, Zork counts your lines - in this case, commands or actions. The goal is\nto retrieve treasures and *put* them into the *trophy case*\nwith the least actions possible. The more we return, more we score. The manual\ngives no information on how many treasuers are out there or if we lose\nwhen we waste too many turns. However, it mentions five times to draw a map\nas we play, so I will.\n\n*Let's play.*\n\n*wooden door with strange gothic lettering*in the living room of the house, which is worth looking into. I will leave this intentionally blank. It is time to move elsewere.\n\nI found a canyon to the east of the house, so I went there.\nI arrived at the canyon view and continued to the west through\nthe forest. I stopped next to the big tree with suspiciously looking\nlower branches. This is a hint. After climbing the tree, I found a bird's\nnest with a jewel-encrusted egg. What a luck! I grab it and run with it to\nthe trophy case before it's *rightful owner* comes for it. (I have\na feeling that it is not the bird.) On my way back I got lost a little in\nthe forest, but somehow I appeared in the clearing behind the house. Jumped\nthrough the kitchen window, spent some time (turns) trying to *put*\nthe egg jewel into the trophy case and... Success! First treasure\ncollected, 10 score earned, totaling on 20 right now.\n\nSo far so good. The forest on the east had a few more roads to go, but I am\nnot sure if I got lost because of some glitch or if the forest was too thick.\nEither way, I exit the house and march to the west this time.\n*One hundred moves later*... Dead end, just like the canyon on the east\nand forests on the north and south.\nI am going back to house to regroup and look for more clues. After further\nexamination of the house, I see only a chimney in the kitchen and a rug in the\nliving room. I bet on a rug as it nicely ties the room together.\n\"With the rug moved, the dusty cover of a closed trap-door appears.\"\nI hastily open the trap-door and descent into the darkness. The score jumped\nto 25 points.\n\nWith someone's help, the trap door closes above my head. I am in a dark cellar and\nthe ancient sword starts to glow a little. Tension rises. As I put my foot in\nthe room to the north, a nasty-looking troll blocking my way out. First enemy\nencounter. The troll seems to be wielding an axe and my sword glows very brightly now.\nI charge the troll, but he nimbly jumps away and reaches me with his ax.\nThe game responds with *Ouch!* so I assume it is just a flesh wound...\n\nNever mind I restore the game, enter the room again and after a long fight troll dies with another swing of my blade. As soon as he breathes his last breath, his body disappears in sinister black fog and my sword is no longer glowing. My score is 45 now, but as I try to lift his blody axe, I realize my inventory is full. I'll stick with the sword.\n\nAs I look around, I see labyrinth to the west and a long passage to the east.\nI try to circle the cellar I came from, which leads me to the Mirror room. In it, there\nis only a mirror which seems to be responding to touch but nothing else. Two other\nexits from the room lead to the same cave, making it the dead end with the only way\ndown into the cave. But as I try to leave the mirror room I realize that this\nis not the same passage I came in... It took me a lot of reloads (*restores*) to realize that\nthe mirror is a portal to another mirror room.\n\nI am redrawing my map and teleporting back to the first mirror room, which I mark with a letter \"A\" now. The map is starting to look very complicated, and it's much bigger than I expected. I have the temptation to draw it in some visual tool on PC but for now I am staying OG with pencil. I haven't found anything of value so far and I am afraid to go on this new mirror branch so soon.\n\nI return back to the first room, cellar, and try to focus on going another\ndirection than east as it, too holds many rooms. I go south and\nenter the gallery. A loot at last. But then, out of nowhere\nI spot somebody in the room with me. He says nothing, but\nholds a bag. At this point I have no idea what to do. I am not sure if\nI can say something (in this game) but I just don't want to attack someone\nwho is not hostile to me.\nI am reaching for the manual. There is mention of both *say* and *tell* keywords on\npage 19, but the game doesn't recognize them somehow. This might be a trait of my buggy build.\nNevermind, I try waving.\nNot working. I will wave my glowing sword, showing I am armed and dangerous.\nNothing. As a somewhat veteran of D&D I will try one last effort to stay civilized - *wait.*\n\nI restored from the last save point in the circle room and run straight to the\ngallery. I enter the room with sword in my hand, but the room is empty(?).\nI will spare you of my\nhundreds of reloads but it works like this. The thief shows up whenever\nyou pick up or come to something worth points. He will take it whether it\nis in a room or on you. You can fight him but I was out of luck.\nI tried knife, but that was doing no damage at all, sword performed best\nbut he was always quicker than me and troll's ax hit him too, but after\nfirst hit he stole my stuff and left. Command *follow thief* doesn't\nwork - boy I hate him. But I was able to \"bug him out\" by taking the\npainting, saving and restoring the just saved game. He didn't come back.\n\nBut still, my inventory is getting full, and I will have to carry things out to the trophy case. So the new plan is to look for a way out and then try to scavenge for other valuables. And nothing screams more \"way out\" than a maze. I go back to the cellar (again), this time with painting and enter the maze to the west. I will mark down all of my moves on separate sheet of paper and drop items to be my breadcrumbs. And I will save often, just in case the old friend shows up.\n\nI managed to navigate myself to the treasure inside the maze. It is the skeleton key and the bag of coins. Score is 64. I do know my way back, but I need to get out another way, hopefully leading me to the house again. I managed to navigate to the room with evil cyclops. I must say that the whole maze solving took me about 1,5 hours of which I had to deal with thief at least 10 times. I am more than ready to kill the beast standing before me or die trying. I charge the monster and after a tough one-sided battle...\n\nOk. New plan. Don't leave the sandwich in the maze and let's try to bribe the cyclops with it. At this point, I knew how to solve the maze from the top of my head. I face the beast again, this time without the sword, holding only a small sub with peppers. He likes my proposition and takes my bottle with water too. The beast falls asleep after a good lunch. I tried to look around the room and I saw stairs up, but as soon as I enter the treasure room on the upper floor... the thief, again. I am carrying the painting, the bag of coins and just in front of our eyes, there is a beautiful silver chalice.The score is 79 and it is time to play his own game.\n\nI gave him my sword. He is stunned by this gesture and examines the weapon. Then suddenly, out of nowhere, I sneak behind him and struck him dead with knife from the attic. Well, it was like three attacks but nevertheless RETRIBUTION! With the thief dead, I take my sword back and drop the knife as insturment of a cold murder. Then there is the silver chalice lying on the ground, but I am unable to take it as the inventory is full. I want to drop the garlic, but I am not sure if this underground is vampire-free, so I will stick with the garlic and I drop the rope. I am sure I won't regret it later... The score is just one point short of 100.\n\nSadly, no exit from the treasure room and cyclops room is also a dead end. My patience is slowly fading away and I access the World Wide Web for hints. I found a pretty nice map which told me that there was another way out of the maze. It's the cryptic grating room from clearing next to the house! I close the map and rush to it. But yeah, the grating is locked and I left the skeleton key inside the maze... Went back for the key, emerged on the surface and delivered the treasures back to the living room in 2 rounds because of a small inventory. Score is sitting way up on 115.\n\nAnd right now, I am considering ending this adventure as the score is above 100\nand my lust for retro gaming has been somewhat satisfied. I typed *score* to see\nthat I reached the rank of Junior Adventurer, which is\n[4th rank out of 8](https://ganelson.github.io/inform-website/book/WI_9_3.html).\nAs much as I want to say that it was fun, I feel tricked into playing a\npuzzle game with very little adventure in it.\nThe lack of usefull information and overall \"story\" puts this\ngame on the same level as some rogue-likes. It is good but not something\nI can see falling into. At least not now. If you consider playing it,\nhere are my key takeaways from this short gameplay:\n\n- get lamp\n- drawing a map is neccessity\n- downloading the map when stuck is not a shame\n- drop items in maze to find your way out\n- use\n*up, down, SE, SW, NE, NW*directions (in maze) too - thief is son of a bitch, play dirty because he will\n\n*Planetfall*and\n\n*Lurking Horror*. But that is a story for next time. Hopefully, a longer and a story...\n\n* Well-spread trivia says that \"zork\" was a jargon word for unfinished\nsoftware at MIT back in the 1970s. So we could say that Sheldon played a\n\"zork of the Zork\". However, I could not find any source to back this\nup. ESR's\n[jargon file](https://www.catb.org/~esr/jargon/html/go01.html)\nknows the keyword \"zork\" only as the game and the most quoted source,\n[Down From the Top of Its Game: The Story of Infocom, Inc.](https://archive.org/stream/infocom-paper-2000-12-15/infocom-paper_djvu.txt)\ndoes not contain this information either. If you happen to know a relevant\nsource that could prove this historical trivia, please reach me via\n[email](mailto:email@dpolakovic.space).", "url": "https://wpnews.pro/news/let-s-play-zork", "canonical_source": "https://www.dpolakovic.space/blogs/zork.html", "published_at": "2023-11-24 20:00:00+00:00", "updated_at": "2026-05-23 14:39:48.480125+00:00", "lang": "en", "topics": [], "entities": ["Zork", "The Big Bang Theory", "Black Books", "Sheldon", "Infocom", "MIT", "frotz", "Call of Duty Black Ops"], "alternates": {"html": "https://wpnews.pro/news/let-s-play-zork", "markdown": "https://wpnews.pro/news/let-s-play-zork.md", "text": "https://wpnews.pro/news/let-s-play-zork.txt", "jsonld": "https://wpnews.pro/news/let-s-play-zork.jsonld"}}