Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / games / hunt / README
blob3bc2728c1dac2e4995bef6276efdfb2c4f2aaefb
1 What *is* hunt?
3         Hunt is a multi-player search-and-destroy game that takes place
4         in a maze.  The game may either be slow and strategic or fast
5         and tactical, depending on how familiar the players are with the
6         keyboard commands.
8 Distribution Policy:
10         Hunt is part of the user-contributed software distributed by
11         Berkeley in 4BSD.  The sources are copyrighted by the authors
12         and the University of California.  You may redistribute freely
13         as long as the copyright notices are retained.
15 Words of Warning:
17         hunt uses the socket mechanism of 4BSD Unix, so if you are on
18                 System V (my sympathies), you're on your own.
19         If your machine does not permit non-setuid-root processes to
20                 broadcast UDP packets, then hunt uses a *very* inefficient
21                 method for locating the hunt server: it sends a packet
22                 to every host on your network.  If your machine falls
23                 into this category, we strongly recommend that you use
24                 either standalone or inetd mode *and* start hunt by
25                 specifying the hunt server host.
26         hunt can be configured to use Unix-domain sockets, but that
27                 code has not been tested in recent memory.  Also, since
28                 4.2BSD Unix-domain sockets are buggy, running hunt on
29                 4.2BSD with Unix-domain sockets will probably crash
30                 your system.  If you want to experiment, feel free to
31                 do so.  However, don't say I didn't warn you :-).
32         hunt uses a fair amount of CPU time, both in user time (for
33                 computing interactions) and system time (for processing
34                 terminal interrupts).  We found that a VAX 750 can
35                 support about three users before the system is
36                 noticeably impacted.  The number goes up to about 8 or
37                 10 for a VAX 8650.  On a network of Sun 3/50's with the
38                 server running on a 3/280, things work much more
39                 smoothly as the computing load is distributed across
40                 many machines.
41         hunt may be dangerous to your health.  "Arthritic pain" and
42                 "lack of circulation" in fingers have been reported by
43                 hunt abusers.  Hunt may also be addictive, and the
44                 withdrawal symptoms are not pretty :-)
46 Installation:
48         1. Edit file "Makefile" and make sure the options selected are
49                 reasonable.  There are four "make" variables that you
50                 should check: GAME_PARAM, SYSCFLAGS, SYSLDFLAGS, and DEFS.
51                 GAME_PARAM controls what features of the game will be
52                 compiled in (e.g. reflecting walls).  The optional features
53                 are listed in comments above where GAME_PARAM is defined.
54                 If you want to try them, just add the ones you want to the 
55                 GAME_PARAM definition.
57                 DEFS is where most system configuration is described.
58                 If your system is 4.3BSD, Sun, Ultrix, Convex, HPUX
59                 v6.0.1, or SGI, you're in luck.  We provide the
60                 appropriate definitions for these systems and you just
61                 need to select one of them (e.g. if you have an Ultrix
62                 system, just change the line
63                         DEFS=   $(GAME_PARAM) $(DEFS_43)
64                 to
65                         DEFS=   $(GAME_PARAM) $(DEFS_ULTRIX)
66                 ).  If your system is *not* listed above, then you may
67                 need to do some experiments.  All of the options are
68                 documented in the Makefile, be brave.
70                 SYSCFLAGS and SYSLDFLAGS are used for "unusual" systems
71                 and you probably won't need to deal with it.  An
72                 example of an unusual system is the Silicon Graphics
73                 IRIS, which keeps the network socket code in a BSD
74                 emulation library that is in -lbsd.  Edit these only if
75                 you *know* your system is "different."
77         2. Edit file "Makefile" and look at the "install:" target.  By
78                 default, files are installed in /usr/games,
79                 /usr/games/lib, and /usr/man/man6, which are "standard"
80                 locations for games.  If your system has a local games
81                 directory, you'll need to change these.
82         3. Edit file "pathname.c" and make sure the file names and port
83                 numbers are reasonable.  You can ignore the first set
84                 of variables as they are used only for debugging
85                 purposes.  The second set is used in the installed
86                 version of hunt.  The important variables are "Driver"
87                 (where the server is kept), "Test_port" (the Internet
88                 UDP port number that new players should use to contact
89                 the server), and "Stat_file" (where scoring statistics
90                 and body counts are written).  The only tricky variable
91                 here is "Test_port".  The default value is chosen so
92                 that it is unlikely to conflict with other service port
93                 numbers, but you can change it if you want to.
94         4. Type "make install", which will compile and install the
95                 programs and manual pages.  Now you're almost ready to
96                 go (see next section).  There may be some warnings during
97                 compilation.  Ignore them.
99 Setting up the network:
101         Hunt may be set up in one of three modes: standalone, inetd, or
102         nothing.  In "standalone" mode, there is always a hunt server
103         running on a server machine.  All players who enter the game
104         will be talking to this server.  This is the mode we use at
105         UCSF.  The cost is one entry in the process table on the server
106         machine.  In "inetd" mode, the server is started via inetd.
107         Again, only one machine should be set up to answer game
108         requests.  The cost is having to edit a few system files.  In
109         "nothing" mode, no server is running when there is no one
110         playing.  The first person to enter hunt will automatically
111         start up a server on his machine.  This, of course, gives him
112         an unfair advantage.  Also, there may be race conditions such
113         that players end up in different games.  The choice of which
114         mode to use depends on site configuration and politics.  We
115         recommend using "standalone" mode because it is simple to set
116         up and starts up rapidly.
118         -----
120         FOR STANDALONE MODE, put these lines in /etc/rc.local on the
121         server machine.  THERE SHOULD ONLY BE ONE SERVER MACHINE!
123         # start up the hunt daemon if present
124         if [ -f /usr/games/lib/huntd ]; then
125                 /usr/games/lib/huntd -s & (echo -n ' huntd')    >/dev/console
126         fi
128         Also, you should start one up (on the off chance that you will
129         want to test this mess :-) by typing "/usr/games/lib/hunt -s".
131         -----
133         FOR INETD MODE, then things get more complicated.  You need to
134         edit both /etc/services and /etc/inetd.conf.  In /etc/services,
135         add the line
137         hunt            26740/udp
139         26740 corresponds to the default "Test_port".  If you changed
140         that variable, then you should put whatever value you used here
141         as well.  In /etc/inetd.conf, add the line
143         hunt    dgram   udp     wait    nobody  /usr/games/lib/huntd    huntd
145         This works for 4.3BSD.  I don't remember the configuration file
146         format for 4.2BSD inetd.
148         See the huntd.6 manual page for more details.
150         -----
152         FOR NOTHING MODE, do nothing.
154 Testing:
155         Now you are ready to test the code.  Type "/usr/games/hunt" or
156         whatever you call the hunt executable.  You should be prompted
157         for your name and team.  Then you should get the display of a
158         maze.  At this point, you should read the manual page :-).
160 ======
162 Hunt is not officially supported by anyone anywhere (that I know of);
163 however, bug reports will be read and bug fixes/enhancements may be
164 sent out at irregular intervals.  Send no flames, just money.  Happy
165 hunting.
167                                         Conrad Huang
168                                         conrad@cgl.ucsf.edu
169                                         Greg Couch
170                                         gregc@cgl.ucsf.edu
171                                         October 17, 1988
173 P.S.  The authors of the game want to emphasize that this version of hunt
174 was started over eight years ago, and the programming style exhibited here
175 in no way reflects the current programming practices of the authors.