I7 port of Crowther's Colossal Cave looking for testers

I last posted about this project in rgif: groups.google.com/group/rec.game … onch&pli=1

Just a short time and a few Inform versions later (the team did an excellent job on the new mapping function, by the way – I only needed a couple of tweaks to get a really useful index map), I think I have something complete enough to be worth testing.

My goal was first to reproduce Crowther’s original IF world in its entirety, including output text, without removing all the niceties of a modern parser. Ideally, a transcript of valid (and, less importantly, many invalid) commands in the original executable should produce the same output in my version, with possibly a few disambiguation messages in parentheses.

So, I’d like some testers interested in trying to break it. Again, I’m looking for exact reproduction of the behavior of the executable in http://ifarchive.org/if-archive/games/source/adv_crowther.zip made available by Dennis Jerz in his article Somewhere Nearby is Colossal Cave.

If you’re interested, PM me here or contact me at if.game-testing.org/

I don’t think I’ve ever had the chance to do this, so I’ll take this chance right away!

The only feature that really reduces my pleasure of that old game nowadays is the light source. Every port of Adventure I’ve seen maintains the light limit - which of course, is reasonable enough. But I kept hoping for a game that’d either allow us to extend the lamp’s life or just remove the limit altogether, as an extra option. There’s actually a TADS version (Colossal Cave Revisited) that does just that, at the cost of losing five points and calling it an “easy” game. Thing is, it doesn’t say what else it changes when it goes into “easy” mode.

Also, if you’re using I7… then you have access to something else which would make it easier for modern players to enjoy Adventure. An onscreen, toggleable, automap. The cave is so windy, the gameplay so oldschool, that mapping it out - especially when you get to bedquilt! - just makes it overwhelming for some players.

I understand this is very much a tall order… well, it’s just a couple of suggestions, really. :slight_smile:

Incidently - did you base your code on Aaron Reed’s I7 port of Adventure? The one he uses to illustrate his “intelligent hinting” system?

Did you really mean the adv350-pdp10.tar.gz file? That’s the 1977 Crowther and Woods version: the 1975-6 Crowther original is this one

Oops! Thank you, David. Yes, I meant to link to Crowther’s original version.

Pears: No, I only wanted to reproduce Crowther’s version, before Woods’ involvement. The lamp’s lifespan is infinite in that early version.

Oh, the very very first version without all that fantasy? The “cave exploration” simulation? Funny, I don’t think I ever played that. Didn’t think it existed anymore.

Ok, then. :slight_smile:

There was fantasy in Crowther’s original. Just not as much of it. But it was definitely a game and not just a sim.

I’m really happy to see this being done. Trying to read Fortran to experience what Crowther did gets kind of old.

One thing that has always bugged me about ports of Adventure is that there is a dead end in the twisty maze that exits in the wrong direction (east instead of west, or west instead of east, one of those), and it exits in the wrong direction in the TADS adaptation as well (and in the Inform adaptation that is based on it), but it exits in the correct direction (i.e. true to Crowther & Woods) in the DOS version (Ekman’s?) that the TADS version is supposedly based on.

I can look it up for you if you wish I have it noted down somewhere. Not that a dead end maze direction is a big deal or anything, it’s always bugged me nonetheless — that and the parser responses that have been added, particularly error messages, which are often not really in keeping with what I felt was the very bare bones spirit of the original. The textual experience (as opposed to the modelled world experience) has not been ported in as sacrosanct a manner as I would have wished. So I reverted a lot of these additions back to just repetitions of room text that already exists in the original, and I found that it really alters the feel of the game. It reads less like Infocom, in other words, and more like its own kind of experience, which is what it was. (I have a MUD version of Adventure that I’ve been doing all this in, but it’s the Crowther & Woods, not just the Crowther). However, I third-person-ised the whole thing, including the descriptions, so I have made my own transgressions; they’re just my own idiosyncratic idea of what’s OK to change for MUD version of this and what isn’t. 87

I’m sure once I start I’ll get quite into it and eat up lots of time – so I’ll try out your game later in the week when I’ve got it to spare. I’ll PM you. 8)


Heh, that’s what I thought at first, too, but it’s actually pretty easy to get a basic understanding of Fortran and the code from a bit of poking around and experimenting with the executable.

I can confirm that there is no such backwards dead end in Crowther’s original. I pretty much agree about the original prose.

Thanks for offering, I’ve sent you a response.

Are you ever going to open your MUD version to players? I think it would be awesome to explore the Adventure map in an austere, traditional presentation with other players. :slight_smile:

I doubt it would take much to port this to Guncho now!

Heh heh. It must seem singularly useless to read about somebody constructing a multiplayer version of Adventure in a MUD and not ever talk about releasing it or inviting people in. But it’s just an accident of how this thing was built.

I’ll try to make this rundown quick as possible, but it is a long story. Originally, I chose LambdaMOO as a place to conduct some personal IF experiments because it seemed like there was nothing it couldn’t do, from IF to actual dynamic-served web pages. My experiments were structural – I was thinking about interactive video and toying with ideas for tools for tracking interactive narrative. and I needed a sandbox testing environment, and I didn’t want to get bogged down in creative decisions, so I basically ripped off all the rooms and text of the original Adventure, knowing that it was in the public domain by default (though not formally I don’t think).

Anyway, I love that game, and as I experimented with some tools I’d often test them by mangling some Adventure puzzle with them, so I’d have to code that puzzle. After my experiments were done, I’d return the puzzle to its ‘original’ state. In this way I eventually coded most of the game. This past summer I realised that I was so close to having a complete version, that I went ahead and spent time specifically on that goal, polishing text, checking historical sources, etc.

But most of the work on this thing was a side effect of me doing stuff purely for my own edification and as a place for me to hang out in and feel creative in, and experiment. I’ve let in friends now and then, but since the environment wasn’t specifically designed to entertain them — it didn’t. So I became a little wary about visitors. That being said, I do think about opening the doors, as it were. But there are some things I have to work out first. Should I make changes to give multiple players more things to do? (There is still only one light source, for example. Think about that. Is it a good thing or a bad thing?)

So the answer is, I don’t really know what’s wise to do, here. I’m afraid that it’s actually less entertaining for multiple people to play, and, conversely, that making it more entertaining in that way will destroy the historical value of it. And I don’t have any good answer for the criticism, ‘You know what? There is no actual good reason to make this particular game multiplayer.’ There probably isn’t. It just makes the place feel even more real to me. I’ve come to love it and depend on it, and think of it as my own little museum of a thing I care about, which I have guests in from time to time. They’re polite but few of them appreciate it as much as I do, and isn’t that always the way? 87


Maybe one solution could be to allow people to generate their own instances of it using alternate rule sets, like in an FPS running different maps, or an MMO dungeon. So they could choose to make the required tools like the lamp gettable once each per person, and have the puzzles collected in a scavenger fashion, whoever gets the most points wins; another option to randomize the locations of treasures and tools or players; another to randomize maze layouts and even connections between regions; and so on. Some different settings to provide a competitive or cooperative framework, without really breaking the entire game physics/logic of the world as a whole.

If one group really wanted to run classic Adventure, they could, while another could start everyone off with a full set of tools and one treasure each.

Huh. Another thing I implemented in LambdaMOO last summer for an entirely different purpose is multiple universes, which could come in handy for your ‘instances’ suggestion. (i.e. In my MUD you can have a hundred or more people in the same room without ever seeing each other or witnessing each other’s activities. Every object/character gets a verse ID and even if it’s in the same room, no object will see a message generated by another object with a different verse ID. Rooms don’t have verse IDs – they’re one of the agnostic types of objects that exist across universes. Also, you can give any object an ID of zero and it will exist in all universes. This applies to the effects of light sources too, light doesn’t cross universes unless you want it to.)

So I could pretty easily have ten different Adventure games with different Adventure rules happening in the same maze. But I wouldn’t really want to spend the time writing all those different rulesets and inventing all that brand new gameplay unless I knew there would be interest. Since last summer I have taken the temperature of the community better and I don’t think there is that much desire for more versions of the 350-point Colossal Cave. Crowther’s original though is a whole different matter – I think your project was a lot shrewder a tackle than mine. Good thing mine was just a side effect of my main pursuits or I might have been put off the entire field. 8)

What I’ve sort of always figured I would do with it is work parts of it into my other storylines in some way. And if a way to add some multiplayer goodness very much in keeping with the original game occurred to me, then I’d probably do that.because that’s the way my tastes run.

For an example of the type of solution I enjoy, turn-based stuff is an issue because MUDs aren’t turn-based they happen in real-time. So I really couldn’t directly replicate the wandering monster algorithms, or the lamp running out. I had to approximate them in minutes and seconds. But with darkness and pits something really interesting happened. A natural solution presented itself that I feel really dovetails well with the original environment. Instead of having two turns moved in the dark result in death by falling in a pit, I just have an algorithm look for an actual pit (there are plenty of them). So you can stumble around in the dark all you want as long as you don’t step into a room with an actual pit (or other steep fall) in it. Finding my solution to a conversion problem by extrapolating the logic of the actual original scenery was really satisfying to me — especially since in many cases the behaviour is indistinguishable from the original, and where it is distinguishable, it’s more logical. I’m interested in more solutions like that, if they occur to me. Maybe there is something similar that I can find, something already inherited from the original, which has secret multiplaying properties that were never tapped. (A second player can survive the maze without the lamp in my version but they have to be dead expert with the directions and know where every single pit is. I’m going to want something that can come into play from the start whenever there are two or more players. But I don’t want to invent it out of whole cloth; I want to extrapolate it.)

I’ll wait for an idea like that to come along before I really take seriously the goal of making my so-far nominally multiplayer Adventure public. I’m a patient dude and I am in no hurry. 8)


You’re probably right that there’s probably not much popular interest in Adventure right now, and the IF and MUD communities seem to have far less to do with each other than I might wish. Even so, your project is a worthy one, especially by honoring the spirit of the original game. I wish you well in it.

That goes for the I7 port of Crowther’s original, too. :slight_smile:

Sure, that’s understandable. It would take a lot of careful design and experimentation to develop a multiplayer system that works coherently and well.

By the way, did you get a chance to try out my port?

My weekend got booked up and I didn’t get a chance, but I should be able to get at it this week, probably tomorrow night. 8)

Thanks, I’m interested in hearing your thoughts.

cool, a subtle hinting system and auto-mapping feature would be highly regarded for an ancient relic such as this.

now, regarding OUTPUT TEXT, I wish things like that could be taken care by the interpreter. Gargoyle comes with wonderful text output, but it could have options for ANCIENT ALLCAPS, Fine Blasé and other styles… kinda like CSS for IF…

Actually, the original had a decent hinting system, considering the fairly simple puzzles implemented at the time.

An automapping function has been mentioned before – what exactly are people looking for from such a thing? Something like Bronze, or just a simple list of exits on the command line?

As for the output text, I agree. I wasn’t referring to the formatting so much as getting the phrasing exact to the original. From the start, I took the liberty of converting all the output text to sentence case for my own sanity’s sake.

So I finally got a chance to get into it. I have PMed you a link to the transcript of my play session. There are some fairly serious problems with basic puzzles like the grate and the dwarves. It’s going to be difficult to play through much further until the dwarf situation is fixed, because they just come on like gangbusters. The game just becomes a constant exercise in dwarf management. Also, they come in multiples and that doesn’t seem right, although I’m not entirely sure what Crowther did, but these dwarves are far more aggressive and numerous than in Crowther & Woods, and they don’t kill right, either. (See my transcript for details.)

Anyway it’s fixable and I think you’ve done a fine job so far and I especially like how you implemented the location-based movement words like BUILDING, GRATE, etc.

Two more general tips I would give is that you need to avoid some negative consequences of grafting the Inform-style parser onto this. In two ways: suppress some standard Inform messages that don’t make logical sense in the Adventure environment (again, details in the transcript). Also, no matter how complex the parser gets, IMO, the same old two word commands from the original game should work. I should be able to just type THROW AXE as Colossal Cavers typically do. It took a while to figure out which kill command would work – they should all work, especially the one that originally worked. The same goes for any other puzzle, I’d say. More complex parser is cool but not when it renders the original commands inoperable; then it’s just getting in the way of the original experience.

Anyway, these are not judgements, just suggestions – this is a playtest. Thanks for doing this, and I think if you keep refining it this could be a very valuable thing to have. I for one really enjoyed stumbling around and taking note of what things were not implemented yet by Crowther and which were – way more fun than picking through the FORTRAN: kudos.


If you do end up implementing it - though I agree it’s not top priority, or even top-level priority - I’m talking more about a map that completes itself as you play, like in Beyond Zork or Zork Zero. You have an automap extension by Mark Tilford which should make it relatively painless.