RSS

Tag Archives: Adventure

The Completed Adventure, Part 1

Don Woods was a graduate student in computer science at Stanford University when he first heard about Adventure in early 1977 from another student who had found it on, of all places, the Stanford Medical Center’s computer system. How it got from Crowther’s employer at the time he wrote it, BBN Technologies in Boston, to northern California is likely to remain a mystery. We do know, however, that Woods was intrigued enough by the game to secure a copy and install it on the PDP-10 minicomputer at the Stanford Artificial Intelligence Laboratory (SAIL), the place where he spent most of his time hacking. After plumbing its (limited) depths as a player, Woods conceived the idea of picking up where Crowther had left off and finishing the thing. Unfortunately, he had only the binary executable, not the FORTRAN source code. What followed is one of the legendary anecdotes of hacker lore, but it’s amusing enough that I’ll repeat it here.

Crowther’s program — as you can verify for yourself if you like — contains only one clue about its origin. In the in-game instructions it says, in Crowther’s inimitable terse diction, “ERRORS, SUGGESTIONS, COMPLAINTS TO CROWTHER.” Crowther had apparently never anticipated the program, at least in this incomplete state, getting beyond the small circle of BBN hackers who would immediately know who “CROWTHER” was and how to contact him. To make things even more difficult, Crowther had left BBN by the time Woods discovered Adventure, and was now employed by Xerox in California. (Perhaps Adventure actually came west with him?) Woods’s solution was to attempt to send an email to crowther@xxx, where “xxx” represented every single current domain on the Internet. In addition to laying claim to being the first spammer, Woods found Crowther at Xerox and secured his permission to complete the game and, most importantly, the precious source code. The Internet was a smaller place in those days…

Woods was not yet 23 when he discovered Adventure, but he had already secured a place for himself in hacker history by co-creating the joke programming language INTERCAL, one of the more bizarre and elaborate examples of hacker humor. In Hackers, Steven Levy makes much of the alleged contrast between East Coast and West Coast hacker culture:

“The difference began with the setting, a semicircular concrete-glass-and-redwood former conference center in the hills overlooking the Stanford campus. Inside the building, hackers would work at any of sixty-four terminals scattered around the various offices. None of the claustrophobia of Tech Square. No elevators, no deafening air conditioning hiss. The laid-back style meant that much of MIT’s sometimes constructive acrimony — the shouting sessions at the TMRC classroom, the religious wars between grad students and hackers — did not carry over. Instead of the battle-strewn imagery of shoot-’em-up space science fiction that pervaded Tech Square, the Stanford imagery was the gentle lore of elves, hobbits, and wizards described in J.R.R. Tolkien’s Middle Earth trilogy. Rooms in the AI lab were named after Middle Earth locations, and the SAIL printer was rigged so it could handle three different Elven type fonts.”

My own feeling is that Levy probably overemphasizes the cultural divide between the alleged crew-cut-wearing, conservative Heinlein fans clustered around MIT and the gentle Tolkien dudes of Stanford. Certainly the groups shared common preferences in hardware (DEC PDP systems), operating systems (TOPS-10), programming languages (no BASIC please!), and the general way that computing “should” be done that gave them much more in common with each other than either group had with the populists of the People’s Computer Company. I do think, however, that we can see some differences in the approaches that Crowther and Woods took to programming, differences which are not so much down to geography as temporality. Before I explain that, though, let me back up quickly and introduce some technical background.

Adventure ran on a DEC PDP-10 under the TOPS-10 operating system. As I’ve already mentioned in passing, DEC’s machines were the unqualified favorites of hackers for at least 20 years, from 1960 to 1980. Both the machines and the company that produced them were consistently innovative, large enough to get the job done but small enough to be flexible. Most importantly, DEC not only understood hacker ideals but embraced them, using cutting-edge research facilities like MIT and Stanford as laboratories to refine and even develop both software and hardware, and sometimes hiring the best and the brightest from that world to come work for them directly. The contrast to a condescending and stodgy behemoth like IBM could hardly have been more stark. TOPS-10, meanwhile, was as beloved as the hardware, having been developed and refined by DEC consistently since the late 1960s with the active assistance of the hacker community. Until Unix and DEC’s own successor OS TOPS-20 took its place, something that was already slowly beginning to happen in 1977, TOPS-10 was simply the hacker OS.

Adventure was written in FORTRAN (Formula Translating System), which was already a very old programming language when Crowther and Woods used it. It was in fact the very first significant high-level programming language to appear, having been introduced by IBM on its mainframe systems in the late 1950s. The version Crowther and Woods used obeyed the so-called FORTRAN IV standard, which dated from 1965. For all the grief that hackers gave BASIC, FORTRAN IV wasn’t much better, requiring as it did line numbers and copious use of the dreaded GOTO statement to get anything done. It was if anything particularly unsuited for writing a text adventure, including as it did almost no text storage or manipulation abilities whatsoever. That’s the reason Crowther chose to put all of the game’s text into an external file; it was just easier to deal with that way. Ironically, FORTRAN 77, a major expansion of the language that included proper string variables and heaps of other improvements, appeared the same year that Woods completed Adventure — but too late to be of use for that project.

So, then, why FORTRAN? Well, beyond FORTRAN and assembly language, in which a program like Adventure would have been tedious indeed to implement, normal TOPS-10 programming languages at this time included only the scorned BASIC and the perhaps even more loathed COBOL, a rigidly inflexible language designed for non-interactive batch processing — i.e., dull billing jobs and other rote calculating tasks that hackers found utterly uninteresting. Displaying plenty of vitriol if not much diversity of wit, Edsger Dijkstra made almost the same statement about COBOL as he had about BASIC: “The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.” So, FORTRAN it was.

Crowther and Woods may both have been working in the same language, but the differences in their coding styles are immense. Crowther’s original source is itself a “maze of twisty little passages,” a huge pile of spaghetti code that is commented only sporadically and tersely. Efficient it undoubtedly is, but readable and maintainable, at least for anyone other than Crowther, it isn’t. Woods’s final version of Adventure is, by contrast, a model of clarity: commented frequently and at length, and structured as cleanly and logically as the limited tool that is FORTRAN IV will allow. Given the limitations Woods was working under, it’s a joy to read. Indeed, its clarity might help explain why Adventure was so quickly and so frequently ported to other languages and platforms; Woods’s code makes doing so almost a mechanical exercise.

Of course, we are comparing a complete with an incomplete program, and that is not entirely fair to Crowther. Certainly it’s unlikely that Woods’s code was so clean and readable during development as it became when the time came to release. Still, I think there might be something else going on here as well. Partly we might see a difference in personalities; Crowther had a reputation as a brilliant but a solitary programmer, after all, and doesn’t strike me as the kind of fellow interested in explaining himself or coddling those who followed in his footsteps. In addition, though, Crowther and Woods came from different hacker generations. Crowther came up in the 1960s, when the rules of “proper” coding were still largely unwritten and the emphasis was on just getting things done in whatever way the primitive hardware of the day could be coaxed into doing it. Woods came up in the 1970s, when the importance of structure, readability, and maintainability were becoming clear, and computer scientists were laying down the rules of good programming practice which we still follow — with a few additions, of course — today.

Next up, some observations on actually playing the completed Adventure.

 

Tags:

Will Crowther’s Adventure, Part 2

Crowther’s original Adventure consists of relatively complete implementations of the above-ground section and the first underground level of the complete game that so many would come to know later. It peters out around the “Complex Junction” room, where a sign stands announcing, “CAVE UNDER CONSTRUCTION BEYOND THIS POINT. PROCEED AT OWN RISK.” It’s not kidding; things start to go haywire with some of the room connections at this point, such that navigating in some directions inexplicably returns you to above-ground locations. Beyond the ever-present challenges of navigation, there’s not really that much of a game here. Still, Crowther has laid down the basics of the thousands of text adventures that would follow, and even manages to include a few simple puzzles — and, yes, a maze.

In fact, one could say that the whole of Adventure is really one big maze. By far its biggest challenge is coming to understand and get around in the interconnected nodes (i.e., “rooms”) that make up its world. Even its few simple puzzles revolve around movement: we must deal with the snake to be allowed to progress beyond The Hall of the Mountain King; must find an alternative exit from the cave that will allow us to take the gold with us; etc. This may seem odd, unappealing, perhaps annoying to us when we play the game today — at least, that is, to those of us steeped in the culture of modern IF, with its emphasis on crafting an enjoyable narrative experience for the player. But was Crowther trying to craft a narrative experience at all? I don’t think so, actually.

Crowther is an extremely private person who is not much prone to revisiting the past or discussing his work, so there isn’t much direct evidence as to what he was thinking when he crafted Adventure. We might, however, find some clues in his game’s HELP text:

“I KNOW OF PLACES, ACTIONS, AND THINGS. MOST OF MY VOCABULARY DESCRIBES PLACES AND IS USED TO MOVE YOU THERE. TO MOVE TRY WORDS LIKE FOREST, BUILDING, DOWNSTREAM, ENTER, EAST, WEST, NORTH, SOUTH, UP, OR DOWN. I KNOW ABOUT A FEW SPECIAL OBJECTS, LIKE A BLACK ROD HIDDEN IN THE CAVE. THESE OBJECTS CAN BE MANIPULATED USING ONE OF THE ACTION WORDS THAT I KNOW.”

It’s interesting that Crowther foregrounds the geographical so obviously, and only then goes on to mention the possibility of manipulating just “a few special objects.” As a dedicated hacker, Crowther would almost certainly have come across Hunt the Wumpus. I think there’s a pretty good case to be made that Adventure started as another iteration on Yob’s idea of a “topological computer game,” and quite likely continued largely in that vein in its author’s mind right up until he abandoned its development. It’s very possible, even likely, that compass directions were a fairly late addition, that Crowther initially intended to have the player navigate entirely by working out keywords for getting from place to place, thus making navigation even more of the central chore. (While Dennis Jerz spoke to some who claimed to remember compass directions from the beginning, it’s possible they were misremembering; from reading the source it certainly seems that compass directions were a late — possibly almost a last — addition, perhaps upon realizing just how unworkable keyword navigation was likely to get over the course of a sprawling underground complex populated by dozens of similar rooms.) As a caver, meanwhile, geography would have been constantly on Crowther’s mind, not only as a point of factual interest but literally as a matter of life or death while underground; the in-home teletype connection through which Crowther likely developed Adventure was the same one that he used to enter survey data and construct maps of the real Mammoth Cave for the benefit of other cavers.

How much does it really matter how Crowther conceptualized his game? Perhaps not a lot. Still, it’s worth keeping in mind that expectations of both players and authors were very different back in the day, and that this can explain some things that authors did and players apparently enjoyed which we might find infuriating today. It’s certainly a point I’m likely to revisit again when I look at other historical works. Some scholars have recently advanced the idea that computer games are most of all about the experience of space, even going so far as to call them a form of architecture. It’s an interesting idea, and one that gains a lot of credence when I consider it in the light of these early works of IF. I’m not yet sure how to reconcile that idea with some of my other notions, but it’s more on my radar than ever in light of my experience with Adventure.

Abstractions like that aside, though, there is a certain stately appeal to this early iteration of Adventure which I find hard to explain. Crowther was by neither talent nor inclination a writer, but his terse, matter-of-fact descriptions bear the stamp of someone who knows the environment of which he writes. That gives his game, almost in spite of itself, a certain verisimilitude that would be lacking in many of the more polished efforts that would follow in later years. I want to look at how Woods expanded on this solid kernel next.

 

Tags:

TOPS-10 in a Box

Especially since Dennis Jerz’s discovery of the original Adventure source code, there’s been some interest expressed around the IF community and even in academic circles in experiencing PDP-10 software in its original form. The good news is that, thanks to projects like SIMH and archives like bitsavers.org, the tools are out there to recreate history on an everyday PC. The bad news, though, is that getting everything working can be tricky for anyone who didn’t administrate these systems back in the day. Having recently navigated these waters and finally come out with a working system I’m happy with, I thought maybe I could help some others out by offering as close to a one-click installation of a PDP-10 running TOPS-10 as I could manage. So, here it is: TOPS-10 in a Box, being a typical installation circa 1976-1983.

In addition to a complete and healthy TOPS-10 operating system, this distribution also includes FORTRAN and BASIC compilers and — probably of most interest to readers of this blog — Crowther’s original and Woods’s completed Adventure, both in source and executable form. Now you can experience these relics in their original incarnations. The completed 1977 Adventure is particularly interesting to experience on the “real thing,” what with its implementation of “cave hours” and “magic mode” and its strange save system.

In addition, this should serve as a solid TOPS-10 “starter system” onto which you can install games and even other programs. (There’s a nasty rumor that entertainment was not the PDP-10’s prime purpose, although I’m not sure I believe it.) To do that, you’ll have to get to know SIMH and TOPS-10 a bit better, but this system should still give you a leg up in getting started.

The readme file included with the download should tell you everything you need to know to get up and running. Do be aware that you need to acquire one other piece of software, the SIMH emulator itself, and also that this distribution is not small: it’s a 60 MB download in compressed form, and will expand to about 300 MB on your hard drive. So, it’s one for the hardcore time traveler only — but perhaps a few of you who find this sort of window into the past as fascinating as I do can make good use of it.

 

Tags:

Will Crowther’s Adventure, Part 1

What remains to be said about Adventure? It has long and rightfully been canonized as the urtext not just of textual interactive fiction but of a whole swathe of modern mainstream videogames. (For example, trace World of Warcraft‘s lineage back through Ultima Online and Richard Bartle’s original MUD and you arrive at Adventure.) It’s certainly received its share of scholarly attention over the years, from Mary Ann Buckles’s groundbreaking 1985 PhD thesis “Interactive Fiction: The Computer Storygame Adventure” to Dennis Jerz’s superb 2007 article for Digital Humanities Quarterly, “Somewhere Nearby is Colossal Cave.” Still, since this blog has kind of turned into a history of early digital narratives without my entirely realizing it, it’s worthwhile to talk about its background. And having recently played it in its original Crowther-authored form as unearthed by Jerz in the course of researching his aforementioned article, I join Jason Dyer in having a few things to say about the experience. Finally, I’d like to make it as painless as possible for you to experience it in that authentic form as well, if you’re interested.

The outline of Adventure‘s history is probably familiar to many reading this, but in a nutshell it goes like this:

Back in 1975 a programmer and spelunker named Will Crowther had just gotten divorced. Missing his children and feeling somewhat at loose ends generally, he started to write a game in his spare time with the vague idea that he could share it with his two daughters, who now lived with their mother and whom he missed desperately. The game, which he named Adventure, combined his three biggest interests at the time: programming, caving, and playing a new tabletop game called Dungeons and Dragons.

How so? Well, the player would explore a geography loosely based on the Bedquilt branch of Kentucky’s Mammoth Cave, a place Crowther had spent years laboriously exploring and mapping; she would encounter treasures and creatures drawn from D&D in the process; and to win she would have to solve intricate puzzles while always maintaining close attention to detail, just like a programmer. Crowther had just invented the world’s first text adventure, in the process prototyping much that remains with the form to this day.

Those are the broad strokes. But let’s back up for a moment. Just who was Will Crowther? Where Wizards Stay Up Late, Katie Hafner and Matthew Lyon’s history of the development of the ARPANET (predecessor to the modern Internet), paints a pretty good picture of Crowther. His eccentricities have become so associated with the hacker mentality that they almost read like items on a checklist today. To wit:

He was almost disturbingly non-verbal, and rarely displayed any affect at all. He refused to dress up for any reason, even visiting the Joint Chiefs of Staff at the Pentagon in sneakers. And “he was a notoriously finicky eater (anything beyond the culinary level of a plain bologna sandwich was a risk), making him an impossible dinner guest or dining companion.” For all that, though, Crowther was a very unusual computer nerd in at least some ways. For one, he loved outdoor adventures, particularly rock climbing and of course caving. As befits an adventurer, he kept himself in excellent shape, in part by hanging by his fingers for hours on the frame of his office door. And most shockingly of all, he “never touched” soda.

Of course, what allowed Crowther to get away with eccentric behavior was the brilliance of his mind. Crowther’s Wikipedia page says as of this writing that, “He is best known as the co-creator of Colossal Cave Adventure.” That’s true enough, but it’s a bit unfair in a way to Crowther that Adventure and caving so dominate the page, for Crowther’s importance in computer history would be assured even had he never created Adventure.

Crowther was an absolutely key player on the tiny team that, beginning in the late-1960s, laid the foundation of the modern Internet. He wrote the software that ran on the Interface Message Processors (IMPs), the set of computers that shunted data around the nascent ARPANET; in other words, he wrote the firmware for the world’s first routers. He was one hell of a programmer, “regarded by his colleagues as being within the top fraction of 1 percent of programmers in the world,” with a particular genius for writing incredibly compact and efficient code, a valuable skill indeed in those days of absurdly limited memory and processing power. If he had a fault, it was that he was more interested in prototyping, in showing that things could work and how, than in doing the hard, often tedious work of polishing and refining that results in a truly finished, production-ready program.

When we add all of this together, we can begin to see how Crowther could have birthed IF in such a complete form almost on a whim… and then abandoned it on another whim when (presumably) a more interesting problem came along.

 

Tags: