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