READ_ME revision 1.1
11.1ScgdHack is a display oriented dungeons & dragons - like game.
21.1ScgdBoth display and command structure resemble rogue.
31.1Scgd(For a game with the same structure but entirely different display -
41.1Scgda real cave instead of dull rectangles - try Quest)
51.1Scgd
61.1ScgdHack was originally written by Jay Fenlason (at lincolnsudbury:
71.1Scgd 29 East St., Sudbury Mass., 01776) with help from
81.1Scgd Kenny Woodland, Mike Thome and Jon Payne.
91.1ScgdBasically it was an implementation of Rogue, however, with 52+ instead of 26
101.1Scgd monster types.
111.1ScgdThe current version is more than thrice as large (with such new features as
121.1Scgd the dog, the long worms, the shops, etc.) and almost entirely rewritten
131.1Scgd (only the display routines are the original ones - I must rewrite these
141.1Scgd too one day; especially when you are blind strange things still happen).
151.1Scgd
161.1ScgdFiles for hack:
171.1Scgd	hack		The actual game
181.1Scgd	record		Top 100 list (just start with an empty file)
191.1Scgd	news		Tells about recent changes in hack, or bugs found ...
201.1Scgd			(Just start with no news file.)
211.1Scgd	data		Auxiliary file used by hack to give you the names
221.1Scgd			and sometimes some more information on the
231.1Scgd			objects and monsters.
241.1Scgd	help		Introductory information (no doubt outdated).
251.1Scgd	hh		Compactified version of help.
261.1Scgd	perm		An empty file used for locking purposes.
271.1Scgd	rumors		Texts for fortune cookies.
281.1Scgd			(Some of these contain information on the game,
291.1Scgd			others are just plain stupid. Additional rumors
301.1Scgd			are appreciated.)
311.1Scgd	hack.sh		A shell script.
321.1Scgd			(We have hack.sh in /usr/games/hack and
331.1Scgd			hack in /usr/games/lib/hackdir/hack and all the other
341.1Scgd			hack stuff in /usr/games/lib/hackdir - perhaps this
351.1Scgd			will make the script clear.
361.1Scgd			There is no need for you to use it.)
371.1Scgd	READ_ME		This file.
381.1Scgd	Original_READ_ME Jay Fenlason's READ_ME
391.1Scgd
401.1ScgdSystem files used:
411.1Scgd	/etc/termcap	Used in conjunction with the environment variable
421.1Scgd			$TERM.
431.1Scgd	/bin/cat
441.1Scgd	/usr/ucb/more
451.1Scgd	/bin/sh		Used when $SHELL is undefined.
461.1Scgd
471.1ScgdHow to install hack:
481.1Scgd0. Compile the sources. Perhaps you should first look at the file config.h
491.1Scgd   and define BSD if you are on a BSDtype system,
501.1Scgd   define STUPID if your C-compiler chokes on complicated expressions.
511.1Scgd   Make sure schar and uchar represent signed and unsigned types.
521.1Scgd   If your C compiler doesnt allow initialization of bit fields
531.1Scgd   change Bitfield. When config.h looks reasonable, say 'make'.
541.1Scgd   (Perhaps you have to change TERMLIB in the makefile.)
551.1Scgd1. If it didnt exist already, introduce a loginname `play' .
561.1Scgd2. The program  hack  resides in a directory so that it is executable
571.1Scgd   for everybody and is suid play:
581.1Scgd	---s--s--x  1 play	206848 Apr  3 00:17 hack
591.1Scgd   Perhaps you wish to restrict playing to certain hours, or have games
601.1Scgd   running under nice; in that case you might write a program play.c
611.1Scgd   such that the program play is suid play and executable for everybody
621.1Scgd   while all the games in /usr/games are readable or executable for
631.1Scgd   play only; all the program play does is asking for the name of a game,
641.1Scgd   checking that time-of-day and system load do not forbid playing,
651.1Scgd   and then executing the game. Thus:
661.1Scgd	-r-sr-sr-x  1 play	 13312 May 24 12:52 play
671.1Scgd	---x------  1 play	206848 Apr  3 00:17 hack
681.1Scgd   If you are worried about security you might let play do
691.1Scgd   chroot("/usr/games") so that no player can get access to the rest
701.1Scgd   of the system via shell escapes and the likes.
711.1Scgd   If you #define SECURE in config.h then hack will not setuid(getuid())
721.1Scgd   before executing a chdir(). Hack will always do setuid(getuid()) with
731.1Scgd   a fork. If you do not define UNIX then hack will not fork.
741.1Scgd3. The rest of the stuff belonging to hack sits in a subdirectory hackdir
751.1Scgd   (on our system /usr/games/lib/hackdir) with modes
761.1Scgd	drwx------  3 play	1024 Aug  9 09:03 hackdir
771.1Scgd   Here all the temporary files will be created (with names like xlock.17
781.1Scgd   or user.5).
791.1Scgd4. If you are not really short on file space, creating a subdirectory
801.1Scgd   hackdir/save (modes again drwx------) will enable users to save their
811.1Scgd   unfinished games.
821.1Scgd
831.1ScgdThe program hack is called
841.1Scgd$ hack [-d hackdir] [maxnrofplayers]
851.1Scgd(for playing) or
861.1Scgd$ hack [-d hackdir] -s [listofusers | limit | all]
871.1Scgd(for seeing part of the scorelist).
881.1ScgdThe shell file hack (in this kit called hack.sh) takes care of
891.1Scgdcalling hack with the right arguments.
901.1Scgd
911.1ScgdSend complaints, bug reports, suggestions for improvements to
921.1Scgdmcvax!aeb - in real life Andries Brouwer.
93