Typo fix.
[open-adventure.git] / history.adoc
1 = A brief history of Colossal Cave Adventure =
2 by Eric S. Raymond
3 // SPDX-FileCopyrightText: (C) Eric S. Raymond <esr@thyrsus.com>
4 // SPDX-License-Identifier: CC-BY-4.0
5
6 Adventure is the fons et origo of all later dungeon-crawling computer
7 games, the granddaddy of interactive fiction, and one of the hallowed
8 artifacts of hacker folklore.
9
10 == Origin and history ==
11
12 The very first version was released by Crowther in 1976, in FORTRAN on
13 the PDP-10 at Bolt, Beranek, and Newman. (Crowther was at the time
14 writing what we could now call firmware for the earliest ARPANET
15 routers.) It was a maze game based on the Colossal Cave complex in
16 Kentucky, including fewer of the D&D-like elements now associated with
17 the game.
18
19 Adventure as we now know it, the ancestor of all later versions, was
20 released on a PDP-10 at the Stanford AI Lab by Don Woods on June 3rd,
21 1977 (some sources erroneously say 1976). That version is sometimes
22 known as 350-point Adventure.
23
24 Between 1977 and 1995 Crowther and Woods themselves continued to work
25 intermittently on the game. This main line of development culminated
26 in the 1995 release of Adventure 2.5, also known as 430-point Adventure
27
28 The earliest port to C was by Jim Gillogly under an early Unix running
29 at the Rand Corporation in 1977; this version was later, and still is,
30 included in the BSD Games collection.  I have it from Don Woods directly
31 that "[Jim Gillogly] was one of the first to request and receive a copy 
32 of the source" but that Woods did not actually know of the BSD port
33 until I briefed him on it in 2017.  (This contradicts some implications
34 in third-party histories.)
35
36 Many other people ported and extended the game in various directions.
37 A notable version was the first game shipped for the IBM Personal
38 Computer in 1981; neither Crowther nor Woods nor Gillogly were paid
39 royalties.
40
41 The history of these non-mainline versions is complex and
42 murky. Functional differences were generally marked by changes in the
43 maximum score as people added puzzles and rooms; however, multiple
44 ports of some versions existed - some in FORTRAN, some in C,
45 some in other languages - so the maximum point score is not
46 completely disambiguating.
47
48 Same articles at <<DA>> are a narrative of the history of the game.
49 There is an in-depth study of its origins at <<SN>>.  Many versions
50 are collected at The Interactive Fiction Archive <<IFA>>; note however
51 that IFA's historical claims are thinly sourced and its dates for the
52 earliest releases don't match either comments in the code or the
53 careful reconstruction in <<SN>>.
54
55 == Open Adventure ==
56
57 An attempt to untangle and document a lot of the non-mainline history
58 has been made by Arthur O'Dwyer at <<QUUX>>.  For our purposes, it
59 will suffice to explain the chain of provenance that led from the
60 original Adventure to the Open Adventure distributed with this
61 document.
62
63 The original 350-point ADVENT on the PDP-10 had been one of my
64 formative experiences as a fledgling hacker in 1976-77. Forty years
65 later, in February 2017, while doing some casual research into the
66 history of text adventure games, I looked through some source code at
67 <<IFA>> and was delighted to learn of Adventure 2.5, a version of the
68 Crowther-Woods mainline later than I had ever played.
69
70 Adventure 2.5 had been shipped long enough ago that today's conventions of
71 open-source licensing were not yet fully established. The Makefile
72 contained a rights reservation by Don Woods and that was it.
73
74 I wrote to Don asking permission to release 2.5 under 2-clause BSD;
75 he replied on 15 May 2017 giving both permission and encouragement.
76
77 Here is what Don said about differences between the original Adventure
78 and 2.5:
79
80 ............................................................................
81 > The bulk of the points come from five new 16-point treasures.  (I say "bulk"
82 > because I think at least one of the scores included some padding and I may
83 > have tweaked those.)  Each of the new treasures requires solving a puzzle
84 > that's definitely at the tricky end of the scale for Adventure.  Much of the
85 > new stuff involves trying new directions and/or finding new uses for stuff
86 > that already existed; e.g. the forest outside is no longer a small number of
87 > locations with partially random movement, but is a full-fledged maze, one
88 > that I hope has a character different from either of the previous two.
89
90 > As the text itself says, V2.5 is essentially the same as V2, with a few more
91 > hints.  (I think I came up with a better one for the endgame, too.)  I don't
92 > seem to have a copy of the similar text from V2, so I don't know whether/how
93 > it described itself to new and seasoned players.
94
95 > The other big change, as I mentioned above, was I added a way of docking
96 > points at a certain number of turns.  This was my second attempt to do what
97 > the batteries had been for: require being efficient to achieve top score.
98 > Alas, the batteries led to players deliberately turning the lamp off/on
99 > whenever they weren't moving or were in a lit area, making the game take
100 > even longer!  I set the requirement at what felt like a hard but fair
101 > number of turns, then applied several sneaky tricks to shave off another
102 > twenty.
103 >
104 > I hacked up a wrapper around the game (still in Fortran, most likely, but
105 > I forget) that would try each initializing the RNG using each second of a
106 > given day, while feeding in a script that either worked or aborted early
107 > if anything went wrong (such as a dwarf blocking my path).  As I recall,
108 > it took less than a day's worth of RNG seeds to find one that worked.
109 >
110 > I verified my script could work given a favorable RNG, and stuck
111 > that number in the message.
112
113 > I like how that final puzzle, unlike the game itself, does not readily
114 > succumb even given access to the game source.  You really need to fit
115 > together not only the goals and the map and use of inventory space, but
116 > also details like just what _can_ you do in the dark...?
117 ............................................................................
118
119 Great care has been taken to preserve 2.5's exact gameplay as intended
120 by Don.  We have added a "version" command.
121
122 However, under the hood Open Adventure is rather different from 2.5.
123 Where 2.5 was written in FORTRAN mechanically translated into
124 extremely ugly C, Open Adventure has been translated into much more
125 modern and idiomatic C.  The extremely cryptic and opaque format of
126 the original database of rooms, objects, and strings has been moved to
127 YAML; this makes the brilliant design of it much easier to comprehend.
128
129 == Earlier non-influences ==
130
131 There is record of one earlier dungeon-crawling game called "dnd",
132 written in 1974-75 on the PLATO system at University of Illinois
133 <<DND>>.  This was in some ways similar to later roguelike games but
134 not to Adventure.  The designers of later roguelikes frequently cite
135 Adventure as an influence, but not dnd; like PLATO itself, dnd seems
136 not to have become known outside of its own user community until
137 rediscovered by computer historians many years after Adventure
138 shipped.
139
140 There was also Hunt The Wumpus <<WUMPUS>>, written by Gregory Yob in
141 1972. There is no evidence that Yob's original (circulated
142 in BASIC among microcomputer enthusiasts) was known to the ARPANET-
143 and minicomputer-centered culture Crowther and Woods were part of
144 until well after Adventure was written.
145
146 (I was a developer of the Nethack roguelike early in that game's
147 history, in the late 1980s; we knew nothing of PLATO dnd.  We did know
148 of Hunt The Wumpus then from its early Unix port, but it didn't
149 influence us either, nor in any apparent way the designers of other
150 early roguelikes. After my time the wumpus was included as a monster
151 in Nethack, but this was done in a spirit of conscious museumization
152 well after historians rediscovered Yob's game.)
153
154 Neither of these games used an attempt at a natural-language parser
155 even as primitive as Adventure's.
156
157 == Sources ==
158
159 // asciidoc and asciidoctor both foo up on bare links ending in ')'.
160 [bibliography]
161
162 - [[[IFA]]] http://rickadams.org/adventure/[Colossal Cave Adventure Page]
163
164 - [[[DA]]] http://www.filfre.net/sitemap/[The Digital Antiquarian]
165
166 - [[[SN]]]
167   http://www.digitalhumanities.org/dhq/vol/1/2/000009/000009.html[Digital
168   Humanities Quarterly]
169
170 - [[[DND]]] https://en.wikipedia.org/wiki/Dnd_(video_game)[dnd (video game)]
171
172 - [[[WUMPUS]]] https://en.wikipedia.org/wiki/Hunt_the_Wumpus[Hunt The Wumpus]
173
174 - [[[QUUX]]] https://github.com/Quuxplusone/Advent[Quuxplusone/Advent]