151 lines
7.2 KiB
Text
151 lines
7.2 KiB
Text
= A brief history of Colossal Cave Adventure =
|
|
by Eric S. Raymond
|
|
|
|
Adventure is the fons et origo of all later dungeon-crawling computer
|
|
games, the grandaddy of interactive fiction, and one of the hallowed
|
|
artifacts of hacker folklore.
|
|
|
|
The very first version was released by Crowther in 1976, in FORTRAN on
|
|
the PDP-10 at Bolt, Beranek, and Newman. (Crowther was at the time
|
|
writing what we could now call firmware for the earliest ARPANET
|
|
routers.) It was a maze game based on the Colossal Cave complex in
|
|
Kentucky, including fewer of the D&D-like elements now associated with
|
|
the game.
|
|
|
|
Adventure as we now know it, the ancestor of all later versions, was
|
|
released on a PDP-10 at the Stanford AI Lab by Don Woods in 1977
|
|
(some sources, apparently erroneously, say 1976). That version is
|
|
sometimes known as 350-point Adventure.
|
|
|
|
Between 1977 and 1995 Crowther and Woods themselves continued to work
|
|
intermittently on the game. This main line of development culminated
|
|
in the 1995 release of Adventure 2.5, also known as 430-point Adventure
|
|
|
|
The earliest port to C was by Jim Gillogly under an early Unix running
|
|
at the Rand Corporation in 1977; this version was later, and still is,
|
|
included in the BSD Games collection. I have it from Don Woods directly
|
|
that "[Jim Gillogly] was one of the first to request and receive a copy
|
|
of the source" but that Woods did not actually know of the BSD port
|
|
until I briefed him on it in 2017. (This contradicts some implications
|
|
in third-party histories.)
|
|
|
|
Many other people ported and extended the game in various directions.
|
|
A notable version was the first game shipped for the IBM Personal
|
|
Computer in 1981; neither Crowther nor Woods nor Gillogly were paid
|
|
royalties.
|
|
|
|
The history of these non-mainline versions is complex and
|
|
murky. Functional differences were generally marked by changes in the
|
|
maximum score as people added puzzles and rooms; however, multiple
|
|
ports of some versions existed - some in FORTRAN, some in C,
|
|
some in other languages - so the maximum point score is not
|
|
completely disambiguating.
|
|
|
|
Same articles at <<DA>> are a narrative of the history of the
|
|
game. There is an in-depth study of its origins at <<SN>>.
|
|
Many versions are collected at The Interactive Fiction Archive
|
|
<<IFA>>; note however that its dates for the earliest releases
|
|
don't match other comments in the code or the careful reconstruction
|
|
in <<SN>>.
|
|
|
|
Future versions of this document may attempt to untangle some of the
|
|
non-mainline history. For now, it will suffice to explain the chain of
|
|
provenance that led from the original Adventure to the version
|
|
distributed with this document.
|
|
|
|
The original 350-point ADVENT on the PDP-10 had been one of my
|
|
formative experiences as a fledgling hacker in 1976-77. Forty years
|
|
later, in February 2017, while doing some casual research into the
|
|
history of text adventure games, I looked through some source code at
|
|
<<IFA>> and was delighted to learn of Adventure 2.5, a version of the
|
|
Crowther-Woods mainline later than I had ever played.
|
|
|
|
Adventure 2.5 had been shipped long enough ago that today's conventions of
|
|
open-source licensing were not yet fully established. The Makefile
|
|
contained a rights reservation by Don Woods and that was it.
|
|
|
|
I wrote to Don asking permission to release 2.5 under 2-clause BSD;
|
|
he replied on 15 May giving both permission and encouragement.
|
|
|
|
Here is what Don said about differences between the original Adventure
|
|
and 2.5:
|
|
|
|
............................................................................
|
|
> The bulk of the points come from five new 16-point treasures. (I say "bulk"
|
|
> because I think at least one of the scores included some padding and I may
|
|
> have tweaked those.) Each of the new treasures requires solving a puzzle
|
|
> that's definitely at the tricky end of the scale for Adventure. Much of the
|
|
> new stuff involves trying new directions and/or finding new uses for stuff
|
|
> that already existed; e.g. the forest outside is no longer a small number of
|
|
> locations with partially random movement, but is a full-fledged maze, one
|
|
> that I hope has a character different from either of the previous two.
|
|
>
|
|
> As the text itself says, V2.5 is essentially the same as V2, with a few more
|
|
> hints. (I think I came up with a better one for the endgame, too.) I don't
|
|
> seem to have a copy of the similar text from V2, so I don't know whether/how
|
|
> it described itself to new and seasoned players.
|
|
>
|
|
> The other big change, as I mentioned above, was I added a way of docking
|
|
> points at a certain number of turns. This was my second attempt to do what
|
|
> the batteries had been for: require being efficient to achieve top score.
|
|
> Alas, the batteries led to players deliberately turning the lamp off/on
|
|
> whenever they weren't moving or were in a lit area, making the game take
|
|
> even longer! I set the requirement at what felt like a hard but fair
|
|
> number of turns, then applied several sneaky tricks to shave off another
|
|
> twenty.
|
|
>
|
|
> I hacked up a wrapper around the game (still in Fortran, most likely, but
|
|
> I forget) that would try each initializing the RNG using each second of a
|
|
> given day, while feeding in a script that either worked or aborted early
|
|
> if anything went wrong (such as a dwarf blocking my path). As I recall,
|
|
> it took less than a day's worth of RNG seeds to find one that worked.
|
|
>
|
|
> I verified my script could work given a favorable RNG, and stuck
|
|
> that number in the message.
|
|
>
|
|
> I like how that final puzzle, unlike the game itself, does not readily
|
|
> succumb even given access to the game source. You really need to fit
|
|
> together not only the goals and the map and use of inventory space, but
|
|
> also details like just what _can_ you do in the dark...?
|
|
............................................................................
|
|
|
|
== Earlier non-influences ==
|
|
|
|
There is record of one earlier dungeon-crawling game called "dnd",
|
|
written in 1974-75 on the PLATO system at University of Illinois
|
|
<<DND>>. This was in some ways similar to later roguelike games but
|
|
not to Adventure. The designers of later roguelikes frequently site
|
|
Adventure as an influence, but not dnd; like PLATO itself, dnd seems
|
|
not to have become known outside of its own user community until
|
|
rediscovered by computer historians many years after Adventure
|
|
shipped.
|
|
|
|
There was also Hunt The Wumpus <<WUMPUS>>, written by Gregory Yob in
|
|
1972. There is no evidence that Yob's original (circulated
|
|
in BASIC among microcomputer enthusiasts) was known to the ARPANET-
|
|
and minicomputer-centered culture Crowther and Woods were part of
|
|
until well after Adventure was written.
|
|
|
|
(I was a developer of the Nethack roguelike early in that game's
|
|
history; we knew of Hunt The Wumpus then from its early Unix port, but
|
|
it didn't influence us either, nor in any apparent way the designers
|
|
of other early roguelikes. After my time the wumpus was included as a
|
|
monster in Nethack, but this was done in a spirit of conscious
|
|
museumization after historians rediscovered Yob's game.)
|
|
|
|
Neither of these games used an attempt at a natural-language parser
|
|
even as primitive as Adventure's.
|
|
|
|
== Sources ==
|
|
|
|
[bibliography]
|
|
|
|
- [[[IFA]]] http://rickadams.org/adventure/
|
|
|
|
- [[[DA]]] http://www.filfre.net/sitemap/
|
|
|
|
- [[[SN]]] http://www.digitalhumanities.org/dhq/vol/1/2/000009/000009.html
|
|
|
|
- [[[DND]]] https://en.wikipedia.org/wiki/Dnd_(video_game)
|
|
|
|
- [[[WUMPUS]]] https://en.wikipedia.org/wiki/Hunt_the_Wumpus
|