RECOVER(6)RECOVER(6)NAMErecover - recover a NetHack game interrupted by disaster
SYNOPSISrecover [ -d directory ] base1 base2 ...
DESCRIPTION
Occasionally, a NetHack game will be interrupted by disas-
ter when the game or the system crashes. Prior to NetHack
v3.1, these games were lost because various information
like the player's inventory was kept only in memory. Now,
all pertinent information can be written out to disk, so
such games can be recovered at the point of the last level
change.
The base options tell recover which files to process.
Each base option specifies recovery of a separate game.
The -d option, which must be the first argument if it
appears, supplies a directory which is the NetHack play-
ground. It overrides the value from NETHACKDIR, HACKDIR,
or the directory specified by the game administrator dur-
ing compilation (usually /usr/games/lib/nethackdir).
For recovery to be possible, nethack must have been com-
piled with the INSURANCE option, and the run-time option
checkpoint must also have been on. NetHack normally
writes out files for levels as the player leaves them, so
they will be ready for return visits. When checkpointing,
NetHack also writes out the level entered and the current
game state on every level change. This naturally slows
level changes down somewhat.
The level file names are of the form base.nn, where nn is
an internal bookkeeping number for the level. The file
base.0 is used for game identity, locking, and, when
checkpointing, for the game state. Various OSes use dif-
ferent strategies for constructing the base name. Micro-
computers use the character name, possibly truncated and
modified to be a legal filename on that system. Multi-
user systems use the (modified) character name prefixed by
a user number to avoid conflicts, or "xlock" if the number
of concurrent players is being limited. It may be neces-
sary to look in the playground to find the correct base
name of the interrupted game. recover will transform
these level files into a save file of the same name as
nethack would have used.
Since recover must be able to read and delete files from
the playground and create files in the save directory, it
has interesting interactions with game security. Giving
ordinary players access to recover through setuid or set-
gid is tantamount to leaving the playground world-
writable, with respect to both cheating and messing up
other players. For a single-user system, this of course
does not change anything, so some of the microcomputer
ports install recover by default.
For a multi-user system, the game administrator may want
to arrange for all .0 files in the playground to be fed to
recover when the host machine boots, and handle game
crashes individually. If the user population is
sufficiently trustworthy, recover can be installed with
the same permissions the nethack executable has. In
either case, recover is easily compiled from the distribu-
tion utility directory.
NOTES
Like nethack itself, recover will overwrite existing save-
files of the same name. Savefiles created by recover are
uncompressed; they may be compressed afterwards if
desired, but even a compression-using nethack will find
them in the uncompressed form.
SEE ALSOnethack(6)BUGSrecover makes no attempt to find out if a base name speci-
fies a game in progress. If multiple machines share a
playground, this would be impossible to determine.
recover should be taught to use the nethack playground
locking mechanism to avoid conflicts.
9 January 1993 RECOVER(6)