Ready to ship 2.8
[super-star-trek.git] / doc / HACKING
index 32bccdcec4ec69cde1a0e0aaa9dea3c70b6397e2..e9404396b90eca07c6469aba67e9c6207687743a 100644 (file)
@@ -40,11 +40,15 @@ Dave also says the Space Thingy should not be preserved across saved
 games, so you can't prove to others that you've seen it.  He says it
 shouldn't fire back, either.  It should do nothing except scream and
 disappear when hit by photon torpedos.  It's OK that it may move
-when attacked, but it didn't in the original.  (Whether the Thingy
-can fire back is now controlled by OPTION_THINGY and turned off if the
-game type is "plain" or "almy".  The no-save behavior has been restored.)
+when attacked, but it didn't in the original. (The no-save behavior
+has been restored.)
 
-The Faerie Queen, black holes, and time warping were in the original.
+Dave says the Faerie Queen, black holes, and time warping were in the
+original.  However, either he is misremembering about time warping or
+the original implementation was lost during the FORTRAN-to-C
+translation, as Stas Sergeev added a time-warping feature not
+previiusly present in 2006.  Tom Almy also claims to have added
+timewarping!
 
 Here are Tom Almy's changes:
 
@@ -56,7 +60,7 @@ however mine had some feature it didn't have. So I merged its
 features that I liked. I also took a peek at the DECUS version (a
 port, less sources, to the PDP-10), and some other variations.
 
-1, Compared to the original UT version, I've changed the "help"
+1. Compared to the original UT version, I've changed the "help"
 command to "call" and the "terminate" command to "quit" to better
 match user expectations. The DECUS version apparently made those
 changes as well as changing "freeze" to "save". However I like
@@ -210,27 +214,38 @@ and added more:
 the LRSCAN command is no longer needed.  (Controlled by OPTION_AUTOSCAN
 and turned off if game type is "plain" or "almy".)
 
+10. I imported Tom Almy's SCORE, CAPTURE, and CLOAK command from his
+2013 version.
+
+11. I added color.
+
 TESTING:
 
 This code has been designed to be tested.  A simple shellscript
 included in the distribution, 'replay', automatically reruns the
 last game you played.
 
-Here are some interesting seeds for debugging and regression testing
-For each one, I list the seed, the options, and the last svn revision
-for which it is known to have given the described behavior.
+See the "test" directory for regression-test logs and checkfiles.
+Please run 'make check' every time you change this game to be sure
+you haven't broken anything.  
+
+When you fix a bug, add the log of the game that triggered it (and
+a checkfile) to the regression tests. This is how we improve the code
+coverage of the suite. 
 
-1160647745 regular short good fancy    (r769)
+Two things to do to the log before dropping it in the test directory:
 
-Starts you in a quadrant with the Super-Commander in it.  Slamming three
-torps at him will kill him.  You can use this to regression-test both
-torpedo tracks and the Deep Space Probe. Known bug: "probe aut 2 8"
-triggers manual navigation.
+(a) Strip out all lines beginning with "#curses:" - these are for debugging
+the curses interface and are not needed for regression testing; removing
+them makes it easier to see the game commands.
 
-1160707235 regular short good fancy    (r769)
+(b) Add a header comment line explaining what the log is a test for.
+It should begin with "# Tests". This is what gets echoed before each
+regression test is run.
 
-Do sr/mov aut 5 4/sr/sensors/orbit/transport; you'll get a transporter
-failure.
+Then drop it into the test directory and "make buildregress" to create
+the check file. (Don't forget to commit and push the log and checkfile
+to the repository.)
 
 NOTES ON THE PYTHON TRANSLATION:
 
@@ -287,3 +302,7 @@ clockface-to-radian conversions.  For this reason, and others, the
 trig code is still a bit wacky and obscure.  Modify with caution
 and test thoroughly.
 
+Adding or remobing random() calls is very likely to break lots of
+regression tests. If you have to add new one, wrap them in a
+save/restore of the LCG state; there's an example of this around
+the setup for the Space Thingy.