Don't build with two -std options.
[open-adventure.git] / history.txt
1 = A brief history of Colossal Cave Adventure =
2 by Eric S. Raymond
3
4 Adventure is the fons et origo of all later dungeon-crawling games,
5 the grandaddy of interactive fiction, and one of the hallowed artifacts
6 of hacker folklore.
7
8 The very first version was released by Crowther in 1976, in FORTRAN on
9 the PDP-10 at Bolt, Beranek, and Newman. (Crowther was at the time
10 writing what we could now call firmware for the earliest ARPANET
11 routers.) It was a maze game based on the Colossal Cave complex in
12 Kentucky, lacking most of the D&D-like elements now associated with
13 the game.
14
15 Adventure as we now know it, the ancestor of all later versions, was
16 was released on a PDP-10 at the Stanford AI Lab by Don Woods in 1977
17 (some sources, apparently erroneously, say 1976). That version is
18 sometimes known as 350-point Adventure.
19
20 Between 1977 and 1995 Crowther and Woods themselves continued to work
21 intermittently on the game. This main line of development culminated
22 in the 1995 release of Adventure 2.5, also known as 430-point Adventure
23
24 The earliest port to C was by Jim Gillogly under an early Unix running
25 at the Rand Corporation in 1977; this version was later, and still is,
26 included in the BSD Games collection.  It was blessed by Crowther and
27 Woods and briefly marketed in 1981 under the name "The Original
28 Adventure".
29
30 Many other people ported and extended the game in various directions.
31 A notable version was the first game shipped for the IBM Personal
32 Computer in 1981; this, for which neither Crowther nor Woods nor
33 Gillogly were paid royalties, what "The Original" was competing
34 against.
35
36 The history of these non-mainline versions is complex and
37 murky. Functional differences were generally marked by changes in the
38 maximum score as people added puzzles and rooms; however, multiple
39 ports of some versions existed - some in FORTRAN, some in C,
40 some in other languages - so the maximum point score is not
41 completely disambiguating.
42
43 Same articles at <<DA>> are a narrative of the history of the
44 game.  There is an in-depth study of its origins at <<SN>>.
45 Many versions are collected at The Interactive Fiction Archive
46 <<IFA>>; note however that its dates for the earliest releases
47 don't match other comments in the code or the careful reconstruction
48 in <<SN>>.
49
50 Future versions of this document may attempt to untangle some of the
51 non-mainline history. For now, it will suffice to explain the chain of
52 provenance that led from the original Adventure to the version
53 distributed with this document.
54
55 The original 350-point ADVENT on the PDP-10 had been one of my
56 formative experiences as a fledgling hacker in 1976-77. Forty years
57 later, in February 2017, while doing some casual research into the
58 history of text adventure games, I looked through some source code at
59 <<IFA>> and was delighted to learn of Adventure 2.5, a version of the
60 Crowther-Woods mainline later than I had ever played.
61
62 Adventure 2.5 had been shipped long enough ago that today's conventions of
63 open-source licensing were not yet fully established. The Makefile
64 contained a rights reservation by Don Woods and that was it.
65
66 I wrote to Don asking permission to release 2.5 under 2-clause BSD;
67 he replied on 15 May giving both permission and encouragement.
68
69 == Nomenclature ==
70
71 This project is called "Open Adventure" because it's not at all clear
72 to number Adventure past 2.5 without misleading or causing
73 collisions. Various of the non-mainline versions have claimed to be
74 versions 3, 4, 5, 6, 7 and for all I know higher than that.  It seems
75 best just to start a new numbering series while acknowledging the
76 links back.  I have reverted to "Advent" to avoid a name collision
77 with the BSD Games version.
78
79 == Functional changes in Open Adventure ==
80
81 A "seed" command has been added.  This is not intended for human use
82 but as a way for game logs to set the PRNG (pseudorandom-number generator) so
83 that random events (dwarf & pirate appearances, the bird's magic word)
84 will be reproducible.
85
86 A -l command-line option has been added. When this is given (with a
87 file path argument) each command entered will be logged to the
88 specified file.  Additionally, a generated "seed" command will be put
89 early in the file capturing the randomized start state of the PRNG
90 so that replays of the log will be reproducible.
91
92 Using "seed" and -l, the distribution now includes a regression-test
93 suite for the game.  Any log captured with -l (and thus containing
94 a "seed" command) will replay reliably, including random events.
95
96 The adventure.text file is no longer required at runtime.  Instead, it
97 is compiled at build time to a source module containing C structures,
98 which is then linked to the advent binary.
99
100 == Sources ==
101
102 [bibliography]
103
104 - [[[IFA]]] http://rickadams.org/adventure/
105
106 - [[[[DA]]] http://www.filfre.net/sitemap/
107
108 - [[[SN]]] http://www.digitalhumanities.org/dhq/vol/1/2/000009/000009.html