Use bool for clarity.
[vms-empire.git] / README
1 /*
2  *    Copyright (C) 1987, 1988 Chuck Simmons
3  * 
4  * See the file COPYING, distributed with empire, for restriction
5  * and warranty information.
6  */
7
8 C Empire Sources (now called vms-empire).
9
10 VMS-Empire is a simulation of a full-scale war between two
11 emperors, the computer and you.  Naturally, there is only
12 room for one, so the object of the game is to destroy
13 the other.  The computer plays by the same rules that you
14 do.  This game is the ancestor of all the multiplayer 4X
15 simulations out there, including Civilization and Master of Orion.
16
17 Organization:
18
19         empire.h   -- definitions of data structures
20         extern.h   -- definitions of global variables
21         data.c     -- constant data
22         main.c     -- option parsing
23         empire.c   -- main program loop and outermost command handler
24         usermove.c -- move the user's pieces
25         compmove.c -- move the computer's pieces
26         edit.c     -- handle the user's edit mode commands
27         game.c     -- saving, restoring, and initializing the game board
28         display.c  -- update the screen
29         term.c     -- deal with information area of screen
30         math.c     -- mathematical routines
31         object.c   -- routines for manipulating objects
32         attack.c   -- handle attacks between pieces
33         map.c      -- find paths for moving pieces
34         util.c     -- miscellaneous routines, especially I/O.
35
36 Debugging notes:
37
38         From command mode, there are two special commands that
39         can be used to turn debugging mode on or off.  "++" turns
40         debugging mode on.  "+-" turns debugging mode off.
41
42         When debugging mode is turned on, the following commands are
43         available:
44
45         "#" -- display a sector of the computer's map.
46
47         "%" -- enter "movie" mode.  The computer continuously makes
48                moves, and the computer's map is shown on the screen.
49                This is useful for debugging the algorithm used by the
50                computer when it makes a move.  Don't confuse this
51                with saving a movie and replaying it.
52
53         "@" -- enable/disable "trace pathmap" mode.  If this command
54                is followed by a "+", trace pathmap mode is enabled.
55                If this command is followed by a "-", trace pathmap
56                mode is disabled.  In this mode, every time a "pathmap"
57                is created, it is displayed.  This is useful for
58                debugging the subroutines that search for an optimal
59                path along which to move a piece.
60
61         "$" -- enable/disable "print_debug".  This command is also
62                followed by either a "+" or "-".  In this mode,
63                various messages will be printed out at times which
64                may indicate that something is being done non-optimally.
65
66         "&" -- enable/disable "print_vmap".  This command is followed
67                by a char that specifies the type of vmap to be
68                displayed.  Values are
69
70                 "a" -- army load maps
71                 "l" -- transport load maps
72                 "u" -- transport unload maps
73                 "s" -- ship maps
74                 "i" -- pruned explore map
75
76                Any other character disables the printing of vmaps.
77
78         The program will not provide any prompts for the debugging
79         commands.  If you make a mistake, the computer just beeps.
80
81         You can also replay a saved movie with the normal "W" command
82         when debugging mode is turned on.
83
84         Also, the -DDEBUG flag can be turned on to cause consistency
85         checking to be performed frequently on the internal database.
86         This consistency checking is fairly exhaustive and checks for
87         all sorts of screwed up pointers.  My measurements suggest
88         that consistency checking causes the program to run half
89         as fast.
90