X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=notes.adoc;h=6fac22c072fe80d4eca52fed861a721c765e692b;hb=ea963d4af8ae1e591ee988b86978ea5b748ded84;hp=5cf74304e582355d21ac03c9e3131bf586a4aa61;hpb=41d65c1cab1466102f055784e79cdde34e80a047;p=open-adventure.git diff --git a/notes.adoc b/notes.adoc index 5cf7430..6fac22c 100644 --- a/notes.adoc +++ b/notes.adoc @@ -11,7 +11,7 @@ The principal maintainers of this code are Eric S. Raymond and Jason Ninneman. Eric received Don Woods's encouragement to update and ship the game; Jason signed on early in the process to help. The assistance of Peje Nilsson in restructuring some particularly grotty gotos is -gratefully acknowledged. Petr Voropaev contributed fuzz testing. Aaaron +gratefully acknowledged. Petr Voropaev contributed fuzz testing. Aaron Traas did a lot of painstaking work to improve test coverage. == Nomenclature == @@ -29,15 +29,16 @@ with the BSD Games version. == Philosophy == Extreme care has been taken not to make changes that would alter the -logic of the game as we received it from Don Woods. By policy, all -user-visible changes must be revertible with the -o (oldstyle) option. +logic of the game as we received it from Don Woods, except to fix +glitches that were clearly bugs. By policy, all user-visible +changes must be revertible with the -o (oldstyle) option. -It is a goal of this project to exactly preserve the *behavior* of -430-point Adventure, but the implementation of it is fair game for -improvement. In particular, we are concerned to move it to a form that -is (a) readable, and (b) friendly to forward translation to future -languages. It has already survived a move from FORTRAN to C; a future -as a Python or Go translation seems possible, even probable. +It is a goal of this project to exactly preserve the *intended +behavior* of 430-point Adventure, but the implementation of it is fair +game for improvement. In particular, we are concerned to move it to a +form that is (a) readable, and (b) friendly to forward translation to +future languages. It has already survived a move from FORTRAN to C; a +future as a Python or Go translation seems possible, even probable. == Functional changes == @@ -90,9 +91,14 @@ with coverage tools (we now have over 95% coverage, with the remaining confined to exception cases that are very difficult to reach). This is what you are running when you do "make check". -In the process we found and fixed a few minor bugs. Most notably, reading -the relocated Witt's End sign in the endgame didn't work. Behavior when -saying the giant's magic words outside his room wasn't quite right either. +In the process we found and fixed a few minor bugs: + +* Reading the relocated Witt's End sign in the endgame didn't work. + +* Behavior when saying the giant's magic words outside his room wasn't + quite right - the game responded as though the player were in the room. + +* Attempting to extinguish an unlit urn caused it to lose its oil. The move to modern C entailed some structural changes. The most important was the refactoring of over 350 gotos into if/loop/break @@ -137,7 +143,7 @@ ways: to fix it because doing so would (a) be quite difficult, and (b) compromise forward-portability to other languages. -* Muxh of the code still assumes one-origin array indexing. Thus, +* Much of the code still assumes one-origin array indexing. Thus, arrays are a cell larger than they strictly need to be and cell 0 is unused. @@ -145,4 +151,10 @@ ways: like a FORTRAN or BCPL program. Some (incomplete) effort has been made to introduce semantic types. +We have made exactly one minor architectural change. In addition to the +old code's per-object state-description messages, we now have a per-object +message series for state *changes*. This makes it possible to pull a fair +amount of text out of the arbitrary-messages list and associate those +mesages with the objects that conceptually own them. + // end