Commit | Line | Data |
---|---|---|
15637ed4 RG |
1 | Hack is a display oriented dungeons & dragons - like game. |
2 | Both display and command structure resemble rogue. | |
3 | (For a game with the same structure but entirely different display - | |
4 | a real cave instead of dull rectangles - try Quest) | |
5 | ||
6 | Hack 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. | |
9 | Basically it was an implementation of Rogue, however, with 52+ instead of 26 | |
10 | monster types. | |
11 | The 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 | ||
16 | Files 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 | ||
40 | System 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 | ||
47 | How to install hack: | |
48 | 0. 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.) | |
55 | 1. If it didnt exist already, introduce a loginname `play' . | |
56 | 2. 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. | |
74 | 3. 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). | |
79 | 4. 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 | ||
83 | The 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). | |
88 | The shell file hack (in this kit called hack.sh) takes care of | |
89 | calling hack with the right arguments. | |
90 | ||
91 | Send complaints, bug reports, suggestions for improvements to | |
92 | mcvax!aeb - in real life Andries Brouwer. |