Table of Contents
glhack - Exploring The Mazes of Menace
glhack [options]
glhack
-s [options]
glHack is a port of the game NetHack, using hardware
acceleration via OpenGL(R) to render the 2D tile graphics. It uses LibSDL
as the video and input library. There is good support for software rendering
as well.
NetHack is a display oriented Dungeons & Dragons(tm) - like game.
The standard tty display and command structure resemble rogue.
To
get started you really only need to know two commands. The ‘?’ command will
give you a list of the available commands (as well as other information)
and the ‘/’ command will identify the things you see on the screen.
To win
the game (as opposed to merely playing to beat other people’s high scores)
you must locate the Amulet of Yendor which is somewhere below the 20th
level of the dungeon and get it out. This is not an easy feat!
When the
game ends, whether by your dying, quitting, or escaping from the caves,
glHack will give you (a fragment of) the list of top scorers. The scoring
is based on many aspects of your behavior, but a rough estimate is obtained
by taking the amount of gold you’ve found in the cave plus four times your
(real) experience. Precious stones may be worth a lot of gold when brought
to the exit. There is a 10% penalty for getting yourself killed.
These are the standard options that NetHack supports.
- -u playername
- This option supplies the answer to the question "Who are you?".
It overrides any name from the options or configuration file, the USER
orLOGNAME shell variables, or getlogin(), which will otherwise be tried
in order. If none of these provides a useful name, the player will be asked
for one. Player names (in conjunction with uids) are used to identify save
files, so you can have several saved games under different names. Conversely,
you must use the appropriate player name to restore a saved game.
A playername
suffix can be used to specify the profession, race, alignment and/or gender
of the character. The full syntax of the playername that includes a suffix
is "name-ppp-rrr-aaa-ggg". "ppp" is at least the first three letters of the
profession (this can also be specified using the -p option). "rrr" is at
least the first three letters of the character’s race (this can also be
specified using the -r option). "aaa" is at least the first three letters
of the character’s alignment, and "ggg" is at least the first three letters
of the character’s gender. Any of the suffix parts suffix may be left out.
- -p profession
- This can be used to determine the character role. You can
specify either the male or female name for the character role, or the first
three characters of the role as an abbreviation. ‘@’ and random can also be
used to mean "choose a random role".
- -r race
- Likewise this can be used to
explicitly request that a race be chosen.
Note: Leaving out any of these
characteristics will result in you being prompted during the game startup
for the information.
- -@
- Choose all (remaining) character attributes randomly.
It doesn’t affect any characteristics that have already been specified by
other means.
- -s
- This option alone will print out the list of your scores
on the current version. The -s may also be followed by arguments -p and -r
to print the scores of particular roles and races only. It may also be followed
by one or more player names to print the scores of the players mentioned,
by ’all’ to print out all scores, or by a number to print that many top scores.
- -dec and -ibm
- These command line options are equivalent to the decgraphics
and ibmgraphics in-game options, and are provided purely for convenience
on systems supporting multiple types of terminals.
- -D or -X
- These option will
start the game in a special non-scoring discovery mode. If the player is
the game administrator, -D will start in debugging (wizard) mode instead.
- -n
- This option suppresses printing of any news from the game administrator.
- -d
- This option is usually only useful to the game administrator. If it appears,
it must be the first argument, and supplies a directory which is to serve
as the playground. It overrides the value from NETHACKDIR, HACKDIR, or the
directory specified by the game administrator during compilation (usually
/usr/lib/games/glhack). The playground must contain several auxiliary files
such as help files, the list of top scorers, and a subdirectory save where
games are saved.
These are the command line options specific
to glHack.
They all begin with a double dash (‘--’). Values are normally separated
from the option with a space, like "--depth 32".
Alternatively, a value can
be placed after an ‘=’ sign without any spaces, like "--depth=32". This should
be used if the value begins with a minus (‘-’) sign, otherwise the number
will be mistaken as a new option.
Options that take a value are shown here
with example values.
- --mode 640x480
- Specifies the video mode. Normally glHack
will autodetect the mode, but using this option will override that. The
default value (when all else fails) is 800x600.
- --depth 8
- Video depth (bits
per pixel). Possible values are 15, 16, 24 and 32, and 8 when using the
software renderer. The default value is autodetected.
- --windowed
- Play inside
a window, rather than fullscreen.
- --gamma=-2
- Gamma correction value. Range is
-5 to +5, where positive values make the screen brighter, and negative values
make it darker. Zero is the default (no adjustment).
- --tileheight 64
- Choose
the tileset, which can be 16, 32 or 64. The default is 32. To get the Isometric
3D tileset, use the value 64.
- --fontsize 22
- Choose the font size, out of 8,
14, 20 or 22. The default is 20. The given size will be used for all text
windows, overriding any wincap settings in the config file.
- --help
- Show a
help page.
- --version
- Show the current version. This can also be done within
the game using the #version command.
- USER or LOGNAME
- Your login
name (used as the player name).
- HOME
- Your home directory (used to find the
config file).
- NETHACKOPTIONS
- String predefining several standard NetHack
options.
- GLHACKOPTIONS
- String predefining several glHack-specific options.
- NETHACKDIR
- Playground directory (see -d option above).
In addition, SHOPTYPE
is used in debugging (wizard) mode.
glHack runs set-gid games. This
is needed to create/modify the persistent game files. In general, set-gid
programs are a lot more secure than set-uid programs. An attacker who successfully
compromises a set-gid game executable can only mess around with various
game data files (typically those in /var/games and /var/lib/games).
Since
glHack is based on NetHack 3.4.0, any security issues with NetHack 3.4.0 (past
or future) will almost certainly apply to this release of glHack.
Currently
there is only one place in the glHack-specific code that creates or writes
to a file: the screenshot code. Taking screenshots is restricted to the
game administrator (the "wizard" account).
As far as I know, glHack will
never execute another program. The following features of the NetHack 3.4.0
codebase which do execute other programs are disabled in glHack’s standard
(compile-time) configuration: running a compression utility (COMPRESS),
running a shell (SHELL), reading mail (MAIL), and running an external pager
(TTY code).
- ~/.glhackrc
- Configuration file for glHack. See the glhackrc(5)
manual page for more information.
- /usr/lib/games/glhack
- The static playground.
Read-only files are stored here. Files found here will be marked "(STATIC)"
in the entries below.
- /var/lib/games/glhack
- The variable playground. Persistent
(read/write) data files are stored here. These files are marked "(VAR)"
below.
- nhdat (STATIC)
- Archive containing all the stuff that NetHack requires
to play (level files, text files, help files, etc). The format is DLB (Data
LiBrarian) and is NetHack-specific.
- license (STATIC)
- Rules governing redistribution.
- glhack_recover (STATIC)
- This program can be used to recover a game after
glHack has crashed (assuming the files were not corrupted). It can only
be run as the superuser (root).
- gl*.png (STATIC)
- Images (fonts, tilesets,
etc) used by glHack.
- gl*.lst (STATIC)
- Miscellaneous data files (e.g. tile facing
info) used by glHack.
- record (VAR)
- The list of top scorers.
- logfile (VAR)
- An extended list of games played.
- perm (VAR)
- Empty file used for locking
purposes.
- bonDD.nn (VAR)
- Bone files: descriptions of the ghost and belongings
of a deceased adventurer.
- NNNNname.dd (VAR)
- Temporary files for a user who
is currently playing glHack, or after glHack has crashed. The ‘NNNN’ part
is the numeric userid, followed by the player’s name.
- save/ (VAR)
- A subdirectory
containing the saved games.
This program is free software.
It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
glhackrc(5)
nethack-guidebook(6)
The glHack Homepage: http://glhack.sourceforge.net/
The official NetHack page: http://www.nethack.org/
Dungeons & Dragons
is a Trademark of TSR Inc.
Table of Contents