|
|
1.1 root 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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.