Documentation polishing.
[open-adventure.git] / history.adoc
index f64fef91296d467dd492802b24c8890cdda99d15..86f49034250544adb7364605496f07b2ad169951 100644 (file)
@@ -1,19 +1,21 @@
 = A brief history of Colossal Cave Adventure =
 by Eric S. Raymond
 
-Adventure is the fons et origo of all later dungeon-crawling games,
-the grandaddy of interactive fiction, and one of the hallowed artifacts
-of hacker folklore.
+Adventure is the fons et origo of all later dungeon-crawling computer
+games, the granddaddy of interactive fiction, and one of the hallowed
+artifacts of hacker folklore.
+
+== Origin and history ==
 
 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, lacking most of the D&D-like elements now associated with
+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
-was released on a PDP-10 at the Stanford AI Lab by Don Woods in 1977
+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.
 
@@ -23,15 +25,16 @@ 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.  It was blessed by Crowther and
-Woods and briefly marketed in 1981 under the name "The Original
-Adventure".
+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; this, for which neither Crowther nor Woods nor
-Gillogly were paid royalties, what "The Original" was competing
-against.
+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
@@ -40,17 +43,20 @@ 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>>.
+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 IFA's historical claims are thinly sourced and its dates for the
+earliest releases don't match either comments in the code or the
+careful reconstruction in <<SN>>.
+
+== Open Adventure ==
 
-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.
+An attempt to untangle and document a lot of the non-mainline history
+has been made by Arthur O'Dwyer at <<QUUX>>.  For our purposes, it
+will suffice to explain the chain of provenance that led from the
+original Adventure to the Open Adventure 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
@@ -64,11 +70,12 @@ 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.
+he replied on 15 May 2017 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
@@ -105,39 +112,43 @@ and 2.5:
 > 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...?
-
-== Nomenclature ==
-
-This project is called "Open Adventure" because it's not at all clear
-to number Adventure past 2.5 without misleading or causing
-collisions. Various of the non-mainline versions have claimed to be
-versions 3, 4, 5, 6, 7 and for all I know higher than that.  It seems
-best just to start a new numbering series while acknowledging the
-links back.
-
-I have reverted to "Advent" for the binary to avoid a name collision
-with the BSD Games version.
-
-== Functional changes in Open Adventure ==
-
-A "seed" command has been added.  This is not intended for human use
-but as a way for game logs to set the PRNG (pseudorandom-number generator) so
-that random events (dwarf & pirate appearances, the bird's magic word)
-will be reproducible.
-
-A -l command-line option has been added. When this is given (with a
-file path argument) each command entered will be logged to the
-specified file.  Additionally, a generated "seed" command will be put
-early in the file capturing the randomized start state of the PRNG
-so that replays of the log will be reproducible.
-
-Using "seed" and -l, the distribution now includes a regression-test
-suite for the game.  Any log captured with -l (and thus containing
-a "seed" command) will replay reliably, including random events.
-
-The adventure.text file is no longer required at runtime.  Instead, it
-is compiled at build time to a source module containing C structures,
-which is then linked to the advent binary.
+............................................................................
+
+Great care has been taken to preserve 2.5's exact gameplay as intended
+by Don.  However, under the hood Open Adventure is rather different from
+2.5.  Where 2.5 was written in FORTRAN mechanically translated into extremely
+ugly C, Open Adventure has been translated into much more modern and
+idiomatic C.  The extremely cryptic and opaque format of the original
+database of rooms, objects, and strings has been moved to YAML;
+this makes the brilliant design of it much easier to comprehend.
+
+== 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 cite
+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, in the late 1980s; we knew nothing of PLATO dnd.  We did know
+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
+well 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 ==
 
@@ -145,6 +156,12 @@ which is then linked to the advent binary.
 
 - [[[IFA]]] http://rickadams.org/adventure/
 
-- [[[[DA]]] http://www.filfre.net/sitemap/
+- [[[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
+
+- [[[QUUX]]] https://github.com/Quuxplusone/Advent