Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Eaten by a Grue: podcast on Infocom games, text adventures and interactive fiction (monsterfeet.com)
90 points by csixty4 on Dec 3, 2016 | hide | past | favorite | 52 comments


If you're into good old text adventures, you might be interested in an upcoming book that (as far as I'm aware) is fairly unique in that it's written as a text adventure. Not a choose your own adventure book, but as if the main character is literally in a text adventure, with prompts on what to do and everything: https://www.goodreads.com/book/show/31374622-post-high-schoo... It's coming out June 2017.

Disclaimer: I'm married to the author, so I might be biased :P To be fair though, I read a very early copy, and thought it was solid. It's only gotten much, much better since what I read. The head of the small press publishing it has compared it to Microserfs.


I can't help but imagine Buffy and Angel with the Text Parser narrating.

This sounds kinda cool.


sounds really interesting, if more akin to a litrpg than to microserfs. i'll definitely read this when it comes out. is there an announce mailing list?


She apparently has a mailing list on her website: http://www.megedenbooks.com/ She just told me that she basically never uses it, so if you sign up for it, you won't be getting any spam. But she said she'll make sure she sends out something announcing the release of the book and/or a reminder some small period in advance.

You can also put it on your "want to read" list on Good Reads (linked in my OP) and should get information about release via that. The Amazon page (also available via the Good Reads page) also seems to have a way to get information about release.

Sorry if I seem like I'm dumping a bunch of information, just trying to convey what my wife told me about how to get what you're looking for/be helpful/give as many options as possible for people to get information depending on what they're comfortable with :)


thanks, i signed up for the mailing list :)


Alright, time to get this off my chest:

I've been around this culture for a long time. I was on Slashdot, Digg, Reddit, and now HN. I've ascended in NetHack more than 10 times (and beaten a bunch of other Roguelikes as well). I've heard about the Infocom games repeatedly over the years.

I've tried to play Zork several times and I just don't get it. Every single time I end up in the maze of twisty little passages and I give up. What am I supposed to do? I tried dropping various objects as breadcrumbs and mapping the damn thing on graph paper... well, it turns out to be non-Euclidean. WTF is that? Is this tedious, bizarre exercise supposed to be fun? Will somebody help me get it?


In my opinion zork is one of the least impressive infocom games out there, its historical importance cannot be ignored as it was really one of the first infocom games produced; and text based games such as zork did a lot to help computers gain traction as an entertainment medium back in the late 70s.

Many better infocom games have been written since zork and there is even a fairly active community of infocom enthusiasts on sites like IFDB (infocom database) http://ifdb.tads.org/ if you really want to try getting into infocom games try looking at the higher rated ones on that site. My first complete playthrough and all time favorite infocom games is called Vespers and I would highly recommend it as a primer to the infocom medium.


Planetfall, it's number 9 on the list (one of the only 2 on the top ten from before the late 90's) and is absolutely iconic


Once upon a time, games used to require much more work. :) I know someone who finished all the Zorks (I/II/III)... I never did, except maybe Zork Zero which I actually enjoyed the most (it had a "pigeon and perch" mechanic thing, where if you tossed the perch somewhere or dropped it, and then picked up the pigeon sometime and/or somewhere later, it would teleport you to wherever the perch was... often in humorous locations)

I have yet to ascend in NetHack, though. I was into https://alt.org/nethack/ for a time...

Ah, just noticed you can play the DOS version of Zork Zero here: http://playdosgamesonline.com/zork-zero-the-revenge-of-megab... Or here: https://archive.org/details/msdos_Zork_Zero_-_The_Revenge_of...


Playing Zork as your intro to text adventures in this day and age is akin to playing King's Quest as your intro to graphical adventures nowadays. You just don't do that. Not in a world where Monkey Island also exists.

KQ and Zork are both iconic for various reasons, but none of those reasons are because the games are particularly good. They wantonly kill the player, they let you get into unwinnable states, they have puzzles that are essentially impossible. . . hey, it was a new genre, folks were still figuring things out.

In the case of text adventures, I'd suggest starting with something like Anchorhead (long, horror), Lost Pig (short, humorous) or Savoir-Faire (medium, historical-ish).


Quit thinking in terms of literal two-dimensional graph paper, get a blank sheet and a pencil, and just draw arrows representing paths from point to point (even if they cross in non-Euclidean ways).

I played its variants, _Adventure_ and _Dungeon_, for many many hours when a teen. Pity all my maps, Zorkmids, and rolls of printed transcripts have vanished. Most memorable was an evening having the whole family involved figuring out how to defeat the Cyclops (who was programmed with a surprisingly extensive repertoire of boredom & eating you).


"The cyclops yawns and stares at the thing that woke him up."

https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...


I would recommend playing The Dreamhold[1] if you're new to interactive fiction. It was designed to be an intro to IF games.

[1]http://ifdb.tads.org/viewgame?id=3myqnrs64nbtwdaz


The fun used to be that you needed to figure out the object dropping thing and then the thing that you need to think about the rooms as an abstract graph instead of something that makes spatial sense. (Zork started off as a mainframe game whose audience was pretty much all computer scientists, so they would've been expected to know about graph data structures.)

Once you know the trick, the rest is annoying busywork, and adding a maze has been considered bad design in most text adventures made after the Zork era.

The generally annoying thing about text adventures is that if you hit a puzzle you don't get, your progress can grind into total halt. There's no alternative strategies or just getting lucky like there is in roguelikes. And there are plenty of badly designed games where after having the puzzle explained, you'll go "how was I supposed to figure out THAT?" (Zork 2 has a couple infamous puzzles like this.) If you want to get text adventures, you might want to just use hints when needed to get through a few so you'll get a sense of what the games consider appropriate hints and puzzles.


Yeah, I'm aware of graph data structures. I tried creating a map like that too. It ended up a big mess of nodes with all of these edges intersecting each other and looping back around. I might have made a mistake or two and that screwed up the graph even more! It drove me crazy with how tedious it was.

I guess I reached a point where I said "this is just too complex, it can't be the right solution, there's got to be a smarter way to do this". So to find out that there isn't a smarter way just makes me think it's a terrible puzzle design.


I solved it with a pencil and paper when I was 12 years old or so, and I'm pretty sure lots of other people did too.

I agree it's a little tedious by modern standards but it's really not that complicated. If I recall correctly you can represent the entire thing with about 5-10 boxes connected by a couple lines between them plus a bunch of little loops where the player remains in the same place.

It's a succinct area of the map. Perhaps you should try again with a fresh perspective.


Here's an example of a map like that [0] I made a while ago for an online game. Each room, uniquely identified by an arbitrary item (bagel, lantern, longsword, loaf of bread, etc), is drawn separately with lines in each of the four cardinal indicating where those exits end up. Some are indicated as one-way passages, while others are bent to indicate some sort of spatial relationship when it's reasonable to show (though the entire maze has no coherent planar form). Rooms are in rough order of distance from the end of the maze, which starts at "RED" (through the one-way passage from "FT") and ends at "BREAD" with the east exit back to "FT".

Of course, this is a cleaned up version once I had discovered all the connections; while mapping, each passage would be drawns as a straight one-way connection until bi-directional relationships were discovered.

The chart on the bottom shows the same maze in the form of an adjacency matrix, showing which rooms are connected to which, and by which direction. Again, the rooms are banded by number of steps from the exit. Note that pairs of rooms with bi-directional connections can be discovered by noticing filled cells whose positions are symmetrical about the diagonal of the chart.

The 3 x 3 square in the upper corner is a sort of simple compass I came up with for navigating the maze; it tells you which way to go based on the "shape" (i.e. which directions have exists) of the room. Even though not all room shapes are unique, if you follow those directions you are guaranteed to get out relatively quickly.

0: http://imgur.com/a/2SE8A


It is terrible puzzle design. Zork is old.


"how was I supposed to figure out THAT?"

The worst one of this type, is the official solution to getting money from the slot machine in Leisure Suit Larry. You have to save the game state, play the slot machine, and if you win you save game state again. If you lose, you restore form the last save point, and repeat as necessary (until you get enough money). So there is no way to get past that puzzle without "breaking the 4th wall", so to speak.


The problem with trying to map Zork by dropping objects around, is that the damn thief comes along and picks them up. (Think of the thief as an incremental garbage collector, but not conservative because he also steals objects from your inventory that are still in use!)

https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...

; "SUBTITLE A SEEDY LOOKING GENTLEMAN..."

So if you want to make a map by dropping objects, be sure to kill the thief first, otherwise he will rob you blind and take all the objects you dropped.

               (<NOT .DEAD?>
            <COND (<MEMQ .STILL <HOBJS .HACK>>
                   <PUT .HACK ,HOBJS <SPLICE-OUT .STILL <HOBJS .HACK>>>
                   <PUT .HOBJ ,OCONTENTS (.STILL)>
                   <PUT .STILL ,OCAN .HOBJ>)>
            <PUT .HACK ,HOBJS <SET HH <ROB-ROOM .RM .HH 100>>>
                <PUT .HACK ,HOBJS <SET HH <ROB-ADV .WIN .HH>>>
                <PUT .HACK ,HFLAG T>
                <COND (<AND <N==? .OBJT .HH> <NOT .HERE?>>
                   <TELL 
    "A seedy-looking individual with a large bag just wandered through
    the room.  On the way through, he quietly abstracted all valuables
    from the room and from your possession, mumbling something about
    \"Doing unto others before..\"" ,LONG-TELL1>)
                  (.HERE?
                   <SNARF-OBJECT .HOBJ .STILL>
                   <COND (<N==? .OBJT .HH>
                      <TELL 
    "The other occupant just left, still carrying his large bag.  You may
    not have noticed that he robbed you blind first.">)
                     (<TELL 
    "The other occupant (he of the large bag), finding nothing of value,
    left disgusted.">)>
                   <REMOVE-OBJECT .HOBJ>
                   <SET HERE? <>>)
But first be sure to hand him (or let him steal) the jewel encrusted egg before you kill him, since he's the only one with nimble enough fingers to open the egg without breaking it, to get to the clockwork canary inside. Once you retrieve the opened egg from his lair, take the canary to the tree and wind it, and you will receive a beautiful brass bauble!

           <SET EGG <SFIND-OBJ "EGG">>
           <MAPF <>
             <FUNCTION (X) 
                 #DECL ((X) OBJECT)
                 <COND (<G? <OTVAL .X> 0>
                    <PUT .HACK ,HOBJS <SET HH <SPLICE-OUT .X .HH>>>
                    <INSERT-OBJECT .X .RM>
                    <COND (<==? .X .EGG>
                       <SETG EGG-SOLVE!-FLAG T>
                       <TRO .X ,OPENBIT>)>)>>
https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...

    <OBJECT ["EGG"]
        ["BIRDS" "ENCRU"]
        "jewel-encrusted egg"
        <+ ,OVISON ,TAKEBIT ,CONTBIT>
        EGG-OBJECT
        (<GET-OBJ "GCANA">)
        (OFVAL 5
         OTVAL 5 
         ODESC1 "There is a jewel-encrusted egg here."
         OCAPAC 6
         ODESCO
    "In the bird's nest is a large egg encrusted with precious jewels,
    apparently scavenged somewhere by a childless songbird.  The egg is 
    covered with fine gold inlay, and ornamented in lapis lazuli and
    mother-of-pearl.  Unlike most eggs, this one is hinged and has a
    delicate looking clasp holding it closed.  The egg appears extremely
    fragile.")>

    <OBJECT ["BEGG" "EGG"]
        ["BROKE" "BIRDS" "ENCRU"]
        "broken jewel-encrusted egg"
        <+ ,OVISON ,TAKEBIT ,CONTBIT ,OPENBIT>
        <>
        (<GET-OBJ "BCANA">)
        (OCAPAC 6
         ODESC1 "There is a somewhat ruined egg here.")>

    <OBJECT ["GCANA" "CANAR"]
        ["CLOCK" "MECHA" "GOLD" "GOLDE"]
        "clockwork canary"
        <+ ,OVISON ,TAKEBIT>
        CANARY-OBJECT
        ()
        (OFVAL 6
         OTVAL 2
         ODESC1 "There is golden clockwork canary here."
         ODESCO
    "There is a golden clockwork canary nestled in the egg.  It has ruby
    eyes and a silver beak.  Through a crystal window below its left
    wing you can see intricate machinery inside.  It appears to have
    wound down.")>

    <OBJECT ["BCANA" "CANAR"]
        ["BROKE" "CLOCK" "MECHA" "GOLD" "GOLDE"]
        "broken clockwork canary"
        <+ ,OVISON ,TAKEBIT>
        CANARY-OBJECT
        ()
        (ODESC1 "There is a non-functional canary here."
         ODESCO
https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...

    <DEFINE EGG-OBJECT ("AUX" (BEGG <SFIND-OBJ "BEGG">) (EGG <SFIND-OBJ "EGG">)) 
        #DECL ((BEGG) OBJECT)
        <COND (<AND <VERB? "OPEN">
                <==? <PRSO> .EGG>>
               <COND (<TRNN <PRSO> ,OPENBIT> <TELL "The egg is already open.">)
                 (<EMPTY? <PRSI>>
                  <TELL "There is no obvious way to open the egg.">)
                 (<==? <PRSI> <SFIND-OBJ "HANDS">>
                  <TELL "I doubt you could do that without damaging it.">)
                 (<TRNN <PRSI> <+ ,WEAPONBIT ,TOOLBIT>>
                  <TELL 
    "The egg is now open, but the clumsiness of your attempt has seriously
    compromised its esthetic appeal.">
                  <BAD-EGG .BEGG>)
                 (<TRNN <PRSO> ,FIGHTBIT>
                  <TELL "Not to say that using the "
                    1
                    <ODESC2 <PRSI>>
                    " isn't original too...">)
                 (<TELL "The concept of using a "
                    1
                    <ODESC2 <PRSI>>
                    " is certainly original.">
                  <TRO <PRSO> ,FIGHTBIT>)>)
              (<VERB? "OPEN" "POKE" "MUNG">
               <TELL
    "Your rather indelicate handling of the egg has caused it some damage.
    The egg is now open.">
               <BAD-EGG .BEGG>)>>
https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...

    <DEFINE CANARY-OBJECT ("AUX" (HERE ,HERE) (TREE <SFIND-ROOM "TREE">))
        #DECL ((HERE TREE) ROOM)
        <COND (<VERB? "WIND">
               <COND (<==? <PRSO> <SFIND-OBJ "CANAR">>
                  <COND (<AND <NOT ,SING-SONG!-FLAG>
                      <OR <MEMBER "FORE" <STRINGP <RID .HERE>>>
                          <==? .HERE .TREE>>>
                     <TELL ,OPERA>
                     <SETG SING-SONG!-FLAG T>
                     <INSERT-OBJECT <SFIND-OBJ "BAUBL">
                            <COND (<==? .HERE .TREE>
                               <SFIND-ROOM "FORE3">)
                              (.HERE)>>)
                    (<TELL
    "The canary chirps blithely, if somewhat tinnily, for a short time.">)>)
                 (<TELL
    "There is an unpleasant grinding noise from inside the canary.">)>)>>
https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...

    <PSETG OPERA
    "The canary chirps, slightly off-key, an aria from a forgotten opera.
    From out of the greenery flies a lovely songbird.  It perches on a
    limb just over your head and opens its beak to sing.  As it does so
    a beautiful brass bauble drops from its mouth, bounces off the top of
    your head, and lands glimmering in the grass.  As the canary winds
    down, the songbird flies away.">


Zork was a flattering rip-off of Colossal Cave Adventure. Go play that instead. Still has the maze(s) and yes, you have to map them out tediously. But try to remember we had no graphics back then. Text console was fairly new. It was awesome at the time.


Zork has a tribute to Don Woods, one of the authors of Adventure:

The "one lousy point" Don Woods Commemorative stamp featured an image of a Frobozz Magic Lamp Company brass lantern with "Donald Woods, Editor Splelunker Today" printed beneath. One of these stamps was part of the Treasures of Zork.

    +--v----v----v----v----v--+
    |         _______         |
    >  One   /       \     G  <
    | Lousy /         \    U  |
    > Point |   ___   |    E  <
    |       |  (___)  |       |
    >       <--)___(-->    P  <
    |       / /     \ \    o  |
    >      / /       \ \   s  <
    |     |-|---------|-|  t  |
    >     | |  \ _ /  | |  a  <
    |     | | --(_)-- | |  g  |
    >     | |  /| |\  | |  e  <
    |     |-|---|_|---|-|     |
    >      \ \__/_\__/ /      <
    |       _/_______\_       |
    >      |  f.m.i.c. |      <
    |      -------------      |
    >                         <
    |   Donald Woods, Editor  |
    >     Spelunker Today     <
    |                         |
    +--^----^----^----^----^--+
That's what passed for "graphics" back then. More stamps, bills, portraits and coins:

http://mirrors.ibiblio.org/interactive-fiction/solutions/Dun...


Yes, ADVENT was a minor sensation. It was my first taste of OOP, as in "the troll is a modified dwarf".


Let's say I have a door on the east side of a room, and beyond it is a hallway that gradually curves 90 degrees to the right. Then I will have entered the next room through its north door, and going north from there will send me curving back around to the left where I came from.

Dropping objects is the right way to map it out. It's totally solvable, although a little bit unpredictable (because the thief may happen into a room you've mapped and pick up your object), and the directions aren't reversible in the obvious way.


Let's say I have a door on the east side of a room, and beyond it is a hallway that gradually curves 90 degrees to the right. Then I will have entered the next room through its north door, and going north from there will send me curving back around to the left where I came from.

The problem with this analogy is that in real life I know how to turn around and go back through the door I just arrived from. It does not matter how much the passageway twisted around, unless the door or passageway physically moved I can turn around and go right back through it.

In Zork, this is not the case. My character is effectively blind but has a compass built into his brain. When he walks through a door he is immediately teleported to the middle of the next room so he has no idea which door he just came through. This is silly and obnoxious.


And that's what makes it a maze.


The game is impossible. Its fun with a map and hints (http://www.lafn.org/webconnect/mentor/zork/zorkText.htm) I believe some of the puzzles are literally impossible without.


There are a few unguessable shortcuts, but every puzzle can be solved.


Is there a trick to playing Roguelike games? I usually explore the first few levels and eventually get killed by an enemy which has whittled down my HP or get ganged up. How do you get strong enough to last a reasonable time? Or is it really a matter of luck and I should expect to die often?


Yeah. The trick is that discretion is the better part of valour. Mainstream games (that lack permadeath mechanics) allow you to Groundhog Day your way to victory by abusing the save/load mechanics. With a Roguelike you've got to treat your character like a newborn duckling. Attempting to melee unknown enemies without ever having had any prior experience with them is just too big of a risk.

So: run away from enemies, lure them into traps, throw stuff at them, cast your spells, etc. Until you have a good idea of how powerful a monster is at melee combat, assume it's totally unsafe to fight.

After that, it's a matter of exploring and trying to gather as much information as you can. In a lot of Roguelikes, this means identifying your items, either formally or informally. Carrying an inventory full of completely unidentified items is not helpful.


The other big thing is remembering that it's a turn-based game. When you're in a tense situation it feels natural to play faster, but this is the opposite of what you should be doing. Lots of roguelike characters meet avoidable deaths because the player started rushing instead of stopping to consider all the options.


If I remember correctly, hint books were sold (or included with?) alongside all of these games and if you were a fan of text adventures, you purchased them all.

I remember a few of them with a tiny red filter you had to lay on top of the book to see the text behind it. These were the days where games came in full sized boxes with plenty of cool additions.


I had one for Zork 1 that used invisible ink. It came with a marker which would reveal the text so if you were really stuck you could look up the one question you wanted answered to see what to do without risking seeing other answers.


It's nostalgia. I have a great fondness for Zork because it was one of the few games my friends and I had on our Apples and Commodores in elementary school, but one thing this podcast really captures is that much of the game isn't logical at all. I remember picking up cheat books and getting outright angry at some of the solutions to the puzzles, like "touch mirror with crystal skull." Really??? How the hell was I supposed to think to do that???

So no, I don't recommend playing Zork, but I do recommend reading the wikipedia and other articles about it so you can know the history, but there many great modern text-adventure games out there (or you might even try writing your own) for enjoying the medium.


Yeah, that's actually supposed to be fun. You have to map it in both directions, like going East will take you to a room, but from that room, you might have to go East to get back to the first room. I do remember feeling a real sense of satisfaction figuring out the thief and the trophy case though.

But yeah, there are much better free Inform/parser games out there that are set in the Zork universe. Even for Infocom, I found Enchanter and Sorcerer much better. (Never finished Spellbreaker.)


Oh, and if we're listing our favorite modern IF pieces, go try Slouching Towards Bedlam, For a Change and All Things Devours.


for an old-school game that has much of the same feel as zork but which you might find more fun, check out unkuulian underworld [http://ifdb.tads.org/viewgame?id=tyu4zalevqkvujk4]. it doesn't take itself too seriously, which adds to its charm.


the mazes in early games was inspired by actual cave exploration.


To understand Interactive Fiction, you have to travel back to the 70's when computers took up a large room, paper terminals ruled, and the primary programming language was COBOL.

In those days, there were no graphics. None. There was no animation. Apple and IBM had not created microcomputers yet. There was no Amiga or Commodore.

At this time, in the mid to late 70's, high school students were just getting access to paper terminals that "dialed in" over coupler modems. Taking a programming class was an elective and few did.

There also wasn't any D&D or role playing games. None of this existed.

So along comes these two free games on these school mainframes; Adventure and Dungeon (later split into three commercial Zork games).

They had the audacity of allowing you, the player, to type anything you wanted, and the computer would respond, at that time, very intelligently. By today's standards it may seem simple, but back then, it was the equivalent of playing Assassin's Creed today.

This seemingly "open world" gaming changed everything about computers. It inspired everything that came after, including video games and still is the foundation of much of the standard game play of today.

Now. Zork was old school "IF". It was hard, illogical at times, and on a fairness scale probably as high as it gets. But puzzles are puzzles. If you like easy puzzles or puzzles that give you a cheat sheet, then are you really being challenged or are you just looking for entertainment?

I prefer a challenge because that _is_ what entertains me.

So first realizing that the Thief in Zork will steal all your possessions (whether you drop them or not), then realizing you have to kill him, then realizing he's the only one that can open the egg, then realizing that he's really hard to kill in certain situations, then realizing you can use the DIAGNOSE command to warn you when you're about to die so you can run away and get better.

To me, that's not boring at all. That is essentially the same kind of challenging puzzle you'll find in any of today's video games.

It's just that the "graphics" are in your head. Not on a screen.


Adventure was first released in 1976. Dungeons and Dragons was first published in 1974. Adventure is clearly influenced by D&D.


If you believe the accounts of Crowther and Woods, they knew nothing of D&D and there were maybe a few thousand original poorly made copies of D&D at the time. Only "wargamers" knew about it until the 80's.

From a historical perspective, even though D&D was published in 1974, its influence didn't kick in until years later.


Source on that? This article claims Crowther did play D&D, based on personal email from a co-worker (M. F. Kraley): http://www.digitalhumanities.org/dhq/vol/001/2/000009/000009...


There are still a lot of MUDs out there, which I'd consider to be multi-player extensions of games like Zork. Some still draw 500+ paying accounts logged in at peak times, and have characters that are 25+ years old, like Gemstone IV (play.net/gs4).

I tend to explain it as "World of Warcraft without graphics", but "rapid-paced AD&D" is a fair approximation, too. The medium gives the people running the show a lot of flexibility in how they guide collaborative stories - no need to wait on art assets!


Lot of good infocom stuff here: https://archive.org/details/infocomcabinet and also interesting stuff on http://www.filfre.net/sitemap/


I used to play a lot of text adventures when the iPod Touch first came out. It was a surprisingly nice platform for them with the iPod Touch on-screen keyboard. The app was named Frotz.


Yes, Frotz is the de facto standard for playing text adventures. It is available for almost every platform. I used a version of Frotz on the Nintendo DS.


The Infocom parser is still smarter than Siri.

An Infocom adventure would have known how to handle "Siri, continue playing podcast".


I've played a lot of adventure games, the Zorks, Hitchhikers guide, Planetfall, Leather Goddesses of Phobos and also the magnetic scrolls games like The Pawn and Guild of Thieves.

but for some reason my favorite zork game isn't a text adventure, it's Zork Grand Inquisitor. Humor, actors, acceptable graphics. man I love that game.


You can play Zork in Slack with Slork: https://github.com/devshane/slork

It's a Zork wrapper written in Elixir.


Here's a cool Zork map visualization project:

"Exploring the original Zork source code with Graphviz and an interactive d3 map, using JavaScript and an extension of Peter Norvig's Python Lisp parser to handle MDL."

Source: https://github.com/bburns/Lantern

Demo: http://owlsign.org/Lantern/


Didn't see a link here, so I'll drop one for "Get Lamp", a documentary about text adventures.

http://www.getlamp.com


The original Zork source code in MDL which is available here: http://retro.co.za/adventure/zork-mdl/

It's also here on github: https://github.com/itafroma/zork-mdl

It is fascinating to read, and really beautiful code, quite understandable even if you don't know MDL, and practically a form of literature.

I played the original Zork on MIT-DM and also the Infocom versions of course. Reading the source code is like seeing the behind-the-scenes underground rooms and passages at Disneyland!

While I was playing Zork, I found a bug. First some context: when you're battling the troll, you can give things to him, and he eats them! Sometimes he drops his axe, and you can pick it up and kill him with it. He blocks the exits until you kill him.

So I tried "give axe to troll," and he ate his own axe, then cowered in terror: "The troll, disarmed, cowers in terror, pleading for his life in the guttural tongue of the trolls." Not satisfied with that, I tried "give troll to troll", and he devoured himself: "The troll, who is remarkably coordinated, catches the troll and not having the most discriminating tastes, gleefully eats it."

...Except that I still could not get out of the exit, because every time I tried, it said "The troll fends you off with a menacing gesture."

I figured there must be a troll flag that wasn't getting cleared when the troll devoured itself. And sure enough, I found it in the code, and it's called "TROLL-FLAG!-FLAG"!

Here is an excerpt of the MDL troll code, where you can see the bug, where it should clear the troll flag when the troll devours itself, but doesn't (well that's how I would fix it!):

https://github.com/itafroma/zork-mdl/blob/be079a4ed234071222...

               <COND (<VERB? "THROW" "GIVE">
                      <COND (<VERB? "THROW">
                             <TELL
    "The troll, who is remarkably coordinated, catches the " 1 <ODESC2 <PRSO>>>)
                            (<TELL
    "The troll, who is not overly proud, graciously accepts the gift">)>
                      <COND (<==? <PRSO> <SFIND-OBJ "KNIFE">>
                             <TELL
    "and being for the moment sated, throws it back.  Fortunately, the
    troll has poor control, and the knife falls to the floor.  He does
    not look pleased." ,LONG-TELL1>
                             <TRO .T ,FIGHTBIT>)
                            (<TELL
    "and not having the most discriminating tastes, gleefully eats it.">
                      <REMOVE-OBJECT <PRSO>>)>)
                     (<VERB? "TAKE" "MOVE">
                      <TELL
    "The troll spits in your face, saying \"Better luck next time.\"">)
                     (<VERB? "MUNG">
                      <TELL
    "The troll laughs at your puny gesture.">)>)
              (<AND ,TROLL-FLAG!-FLAG
                    <VERB? "HELLO">>
               <TELL "Unfortunately, the troll can't hear you.">)>>
The troll bugs are also in Zork I! Here's a newspaper article from January 8 1985 about "Infocom Glitches Bug Game Players"!

http://articles.sun-sentinel.com/1985-01-18/features/8501020...

And here's another article from March 29, 1985: "Zork I Fuddles Mental Health With Choices":

http://articles.sun-sentinel.com/1985-03-29/features/8501120...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: