83 lines
4.0 KiB
Plaintext
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)
|