Files
nethack/doc/recover.txt
T

83 lines
4.0 KiB
Plaintext

RECOVER(6) Games Manual RECOVER(6)
NAME
recover - recover a NetHack game interrupted by disaster
SYNOPSIS
recover [-d playground-directory] base ...
DESCRIPTION
Occasionally, a NetHack game is interrupted by disaster when the pro-
gram or the system crashes. Prior to NetHack v3.1, these games were
lost because 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.
Base operands tell recover which files to process. Each base specifies
recovery of a separate game.
The -d option, which must be the first argument if it appears, supplies
the directory housing the NetHack playground. It overrides the value
of the environment variables NETHACKDIR and HACKDIR, and the directory
specified by the game administrator during compilation (usually
/usr/games/lib/nethackdir). nethack(6) normally writes out files for
levels as the player leaves them, so they will be ready for return vis-
its. When checkpointing, it also writes out the level entered and the
current game state on every level change. This procedure slows level
changes.
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. Vari-
ous OSes use different strategies for constructing the base name. Sin-
gle-user systems use the character name, possibly truncated and modi-
fied 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 necessary to look in the playground to find the correct base name of
the interrupted game. recover transforms these level files into a save
file of the same name that 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 setgid 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 these 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 popu-
lation is sufficiently trustworthy, recover can be installed with the
same permissions the nethack executable has. In either case, recover
is easily compiled from the distribution 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 ALSO
nethack(6)
BUGS
recover makes no attempt to find out if a base name specifies 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 mecha-
nism to avoid conflicts.
COPYRIGHT
This file is Copyright (C) Kenneth Lorber, 2024 for version
NetHack-5:1.12. NetHack may be freely redistributed. See license for
details.
NETHACK 26 April 2026 RECOVER(6)