1Hack is a display oriented dungeons & dragons - like game. 2Both display and command structure resemble rogue. 3(For a game with the same structure but entirely different display - 4a real cave instead of dull rectangles - try Quest) 5 6Hack was originally written by Jay Fenlason (at lincolnsudbury: 7 29 East St., Sudbury Mass., 01776) with help from 8 Kenny Woodland, Mike Thome and Jon Payne. 9Basically it was an implementation of Rogue, however, with 52+ instead of 26 10 monster types. 11The current version is more than thrice as large (with such new features as 12 the dog, the long worms, the shops, etc.) and almost entirely rewritten 13 (only the display routines are the original ones - I must rewrite these 14 too one day; especially when you are blind strange things still happen). 15 16Files for hack: 17 hack The actual game 18 record Top 100 list (just start with an empty file) 19 news Tells about recent changes in hack, or bugs found ... 20 (Just start with no news file.) 21 data Auxiliary file used by hack to give you the names 22 and sometimes some more information on the 23 objects and monsters. 24 help Introductory information (no doubt outdated). 25 hh Compactified version of help. 26 perm An empty file used for locking purposes. 27 rumors Texts for fortune cookies. 28 (Some of these contain information on the game, 29 others are just plain stupid. Additional rumors 30 are appreciated.) 31 hack.sh A shell script. 32 (We have hack.sh in /usr/games/hack and 33 hack in /usr/games/lib/hackdir/hack and all the other 34 hack stuff in /usr/games/lib/hackdir - perhaps this 35 will make the script clear. 36 There is no need for you to use it.) 37 READ_ME This file. 38 Original_READ_ME Jay Fenlason's READ_ME 39 40System files used: 41 /etc/termcap Used in conjunction with the environment variable 42 $TERM. 43 /bin/cat 44 /usr/ucb/more 45 /bin/sh Used when $SHELL is undefined. 46 47How to install hack: 480. Compile the sources. Perhaps you should first look at the file config.h 49 and define BSD if you are on a BSDtype system, 50 define STUPID if your C-compiler chokes on complicated expressions. 51 Make sure schar and uchar represent signed and unsigned types. 52 If your C compiler doesnt allow initialization of bit fields 53 change Bitfield. When config.h looks reasonable, say 'make'. 54 (Perhaps you have to change TERMLIB in the makefile.) 551. If it didnt exist already, introduce a loginname `play' . 562. The program hack resides in a directory so that it is executable 57 for everybody and is suid play: 58 ---s--s--x 1 play 206848 Apr 3 00:17 hack 59 Perhaps you wish to restrict playing to certain hours, or have games 60 running under nice; in that case you might write a program play.c 61 such that the program play is suid play and executable for everybody 62 while all the games in /usr/games are readable or executable for 63 play only; all the program play does is asking for the name of a game, 64 checking that time-of-day and system load do not forbid playing, 65 and then executing the game. Thus: 66 -r-sr-sr-x 1 play 13312 May 24 12:52 play 67 ---x------ 1 play 206848 Apr 3 00:17 hack 68 If you are worried about security you might let play do 69 chroot("/usr/games") so that no player can get access to the rest 70 of the system via shell escapes and the likes. 71 If you #define SECURE in config.h then hack will not setuid(getuid()) 72 before executing a chdir(). Hack will always do setuid(getuid()) with 73 a fork. If you do not define UNIX then hack will not fork. 743. The rest of the stuff belonging to hack sits in a subdirectory hackdir 75 (on our system /usr/games/lib/hackdir) with modes 76 drwx------ 3 play 1024 Aug 9 09:03 hackdir 77 Here all the temporary files will be created (with names like xlock.17 78 or user.5). 794. If you are not really short on file space, creating a subdirectory 80 hackdir/save (modes again drwx------) will enable users to save their 81 unfinished games. 82 83The program hack is called 84$ hack [-d hackdir] [maxnrofplayers] 85(for playing) or 86$ hack [-d hackdir] -s [listofusers | limit | all] 87(for seeing part of the scorelist). 88The shell file hack (in this kit called hack.sh) takes care of 89calling hack with the right arguments. 90 91Send complaints, bug reports, suggestions for improvements to 92mcvax!aeb - in real life Andries Brouwer. 93