1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510
|
glHack README
=============
by Andrew Apted, updated to NetHack 3.4.3 by James Bentler.
Version: 1.2
Last revised: 24th June 2004.
This is the main README file for glHack. The other glHack-related
documents are NEWS.GL, CHANGELOG.GL and TODO.GL. Note that the
original NetHack docs haven't been changed, and can be inconsistent
with glHack in some places (especially the installation instructions,
like sys/unin/Install.unx, which should not be followed).
For newcomers to NetHack, the file "doc/Guidebook.txt" is essential
reading, covering all aspects of the game itself.
GLHACK INTRO
------------
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 too.
glHack is just one of the many NetHack front-ends. Others include
the original text-terminal (TTY) version, one for the X Window
System, and one for GNOME called GnomeHack.
glHack site: http://glhack.sourceforge.net/
Official NetHack site: http://www.nethack.org/
NEWS
----
The news has been moved out, please read the NEWS.GL file.
See also CHANGELOG.GL for all the gory details.
IMPORTANT CHANGES FOR NETHACK 3.4.0
-----------------------------------
Firstly, NOTE WELL: if you are updating from a version prior to 0.9.5,
you cannot use "make update" with this release. The bone and save
files changed format in the new NetHack version. If you have a good
game in progress, finish it before re-installing.
Secondly, some glHack options have been replaced or removed, because
NetHack 3.4.0 introduced some standard options which do the same thing
(the "WINCAP" options). For backwards compatibility, glHack still
accepts the old options in the config file, but not on the command
line. These options are:
tilesize : use tile_height instead.
mapfont : use font_size_map instead.
textfont : use font_size_message instead.
msglines : use vary_msgcount instead.
The replacements need to be put on an "OPTIONS" line in the config
file (instead of "GL_OPTIONS"). For example:
before:
GL_OPTIONS=tilesize:16
GL_OPTIONS=msglines:4
after:
OPTIONS=tile_height:16
OPTIONS=vary_msgcount:4
INSTALLATION
------------
The glHack source comes pre-configured for a Linux system. The
install directories and permissions follow the example of the Debian
nethack and gnomehack packages (see below). (P.S. Debian recently
changed to /var/games/nethack).
The following commands should install everything:
make
su -c 'make install'
and then just type "glhack" in an X terminal to play.
The following manpages will be available:
glhack(6) glhackrc(5) nethack-guidebook(6)
If your OS is a recent Debian or Mandrake Linux, you can install
glHack into the desktop menus using one of these commands:
su -c 'make debian_install'
or
su -c 'make mandrake_install'
Installation directories:
-------------------------
/usr/lib/games/glhack/ : all the read-only game data goes here,
like dungeon files and PNG images.
/var/lib/games/glhack/ : the persistent game data goes here, such
as the high score table and saved games.
/usr/bin/ : the glhack executable goes here. It's really just a
script that sets up some important shell variables
and runs the real executable in the read-only dir.
Installation permissions:
-------------------------
The executable is run setgid, with group "games". This is needed
so that it can write/modify the persistent game files. More
precisely, the owner/group is root.games with mode 02755.
The read-only files are root.games with mode 0644.
The directory in /var holding the persistent data also has the
setgid bit, with group "games", with mode 02775 (i.e. group
writable). This means files creating in that directory will be
placed into the same group ("games") automatically.
The persistent data files themselves are root.games with mode 0664
(i.e. group writable).
The recovery program `recover_glhack' exists in the read-only dir,
and requires root privileges to run.
KEYBOARD CONTROLS
-----------------
Press the `?' key to bring up a help menu (while in the game). One of
the choices will show what all of the keys do.
The `S' key will save (and leave) the current game. To quit the
current game altogether (without saving), type `#quit' and press
return. Note to newcomers: there is no way to save the current game
and keep on playing, like you can in many other games. Once you die,
that's it, game over. That's the nature of NetHack, though it can
seem stupid or frustrating at first. There's always the "Explore"
mode (the `X' key) which I recommend to anyone who is really stuck.
The arrow keys can be used to move the player, or scroll through
menu/text windows. Using them with SHIFT will scroll menu/text
windows by a larger step, and with CTRL they will scroll as far as
possible. Using them with ALT scrolls the map window.
Other Keys:
-----------
PGUP - zoom the map out.
PGDN - zoom the map in.
CTRL-PGUP - set zoom to maximum (smallest tiles).
CTRL-PGDN - set zoom to default level.
HOME - toggle the text-mode view of the map.
END - center the screen on the player.
CTRL-P - scroll back through history buffer.
CTRL-O - scroll forward through history buffer.
F4 - toggle permanent cursor on the player.
MOUSE CONTROLS
--------------
Clicking on a place in the map will take you there (if nothing gets in
the way). This is the new "travel" feature in NetHack 3.4.0. Also,
clicking on a monster next to you will attack it, plus you can open
doors this way, even push boulders. Try it !
When a menu is displayed, you can click on an item to select it (for
menus requiring a single choice), or toggle the item on/off (for menus
which allow multiple items to be chosen).
Text windows can be scrolled by clicking in them. The mouse cursor
will change shape to an arrow to show the direction you can scroll.
Pressing the ALT key allows you to scroll menu windows and the map
window with the mouse as well.
SELECTING THE RENDERER
----------------------
glHack now supports software rendering. It is selected using the
standard NetHack option "windowtype" with the value "SDL". The value
"GL" selects the OpenGL renderer. For example:
# glHack Config file
OPTIONS=windowtype:SDL
The in-game option screen (the `O' key) shows the current type.
When glHack hasn't been told what video-mode or depth to set (using
command line or config file options), it tries to autodetect them.
[ This feature is new in version 1.1 ]. It hasn't been well tested,
but seems to work OK so far. You can override this by putting your
own values in the config file.
For software rendering, it is important to get the correct depth
value. The wrong depth can result in wrong colors and/or much slower
rendering. The autodetected value will usually be OK, so here I'll
just mention some tips when setting it by hand. Roughly speaking, the
depth should match what the X server is using: if the X server is in 8
bit mode, then you should use "depth:8", if it's in 16 bit mode, then
use "depth:16", and for X servers in 24 bit mode, "depth:32" seems to
be fastest. The xdpyinfo program is useful for showing information
about the X server.
The depth can be important for OpenGL rendering too, e.g. really slow
rendering suggests that hardware acceleration is NOT being used. For
Voodoo 3, both the X server and glHack should be in 16 bit mode. More
modern cards may support 24 or 32 bit depths.
COMMAND-LINE OPTIONS
--------------------
Some standard NetHack options that are worth mentioning here (see the
NetHack docs for a complete list) :
-u UserName Name of your character in the game. Normally this
is determined automatically from your login name.
This option allows you to play multiple games at
the same time (with different characters).
-p Profession Profession (role) of your character.
-r Race Race of your character.
-@ Choose remaining character attributes randomly.
-s Shows the current high-score list.
glHack Command-Line Options:
----------------------------
The glHack command line options all begin with `--'. 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.
The available options are:
--help Show a help page.
--version Show the current glHack version. This can also be
done within the game using the #version command.
--mode 640x480 Use the specified 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 32 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 Open in a window. Default is fullscreen.
--gamma=-1 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 value (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 64 (as shown).
--fontsize 22 Choose the font size, out of 8, 14, 20 or 22. The
default is 20. The size will be used for all text
windows, overriding any wincap settings in the
config file.
CONFIG FILE
-----------
The config file for glHack is ".glhackrc" in your $(HOME) directory.
If you already have a ".nethackrc" file, you can copy it to .glhackrc
and it should work fine.
The config file can contain both standard NetHack options (lines that
begin with "OPTIONS=") as well as glHack-specific options (with lines
that begin with "GL_OPTIONS="). The glHack options follow the same
conventions:
1. multiple options are separated by commas.
2. boolean options are enabled by just including their names, or
disabled by placing an `!' character before their name.
3. options with values put the value after a `:' character.
Examples:
GL_OPTIONS=!windowed,jailsize:10
GL_OPTIONS=mode:1024x768,altprev
GLHACK CONFIG OPTIONS
---------------------
Here is the list of all available glHack config file options. Options
shown without values are booleans (on or off).
mode:1024x768 \
|
depth:8 |
| Same as the command line (see above).
windowed |
|
gamma:-1 /
jailsize:60 Sets the "jail" size, which is a percentage of
the size of the screen. Usable range is 1 to 100.
The jail controls when the map window scrolls: when
set to 1, the player will always be centered and
the map always scrolls when moving. When set to
100, the map will only scroll if the player tries
to move off the edge of the screen.
This option is ignored when "jumpscroll" is enabled
(see below).
defzoom:16 Sets the default zoom factor, in pixels. Use 0 to
make it the same as the tile size (i.e. 1:1 scale)
which is the default. Use 8 to mean the text-mode
view.
keyrepeat:never
Enables/disables keyboard auto-repeat. Use "never"
to disable it everywhere, "always" to enable it
everywhere, and "partial" is a compromise which
enables auto-repeat for scrolling windows (etc) but
disables it for game commands (moving, etc).
altprev Enables the alternate previous history (CTRL-P)
mode, which is more like the TTY version: the lines
are limited to the message window, and you don't
need to press CTRL-O, space or escape to dismiss
the window.
prevstep:3 Number of lines to step through the previous
message history. For altprev mode, using the same
value as the message window height (vary_msgcount)
gives the best results. That's the default for
altprev mode, for normal mode the default is 1.
reformat Causes text windows that don't fit across the
screen to be reformatted. The default is off.
shrinkwrap Shrinks the fonts on text windows if they don't
fit across the screen. It's mainly an alternative
to the `reformat' option. Default is off.
flipping Flips monster tiles horizontally so the direction
they face on-screen matches the direction they are
moving in. NOTE: this only works in GL mode, and
it doesn't work with the Isometric 3D tiles.
jumpscroll Scrolls the map window in large jumps, rather than
single steps, which improves speed when using the
software renderer. When enabled, the standard
NetHack option "scroll_margin" will be used to
decide when to scroll.
invisfx Draws monsters which are invisible (but can be
seen by the player) using alpha blending (i.e.
translucently). Default is off.
WINCAP OPTIONS
--------------
The WINCAP (Window port Capability) options are new in NetHack 3.4.0,
and are described in the Guidebook (section 9.5). glHack currently
supports these ones:
align_message, align_status,
color, hilite_pet,
font_size_map, font_size_message, font_size_status,
font_size_menu, font_size_text,
scroll_margin (but only when jumpscroll is enabled),
splash_screen,
tile_height,
vary_msgcount.
SHELL VARIABLES
---------------
glHack supports the same shell variables (also called "environment
variables") as standard NetHack, in particular the NETHACKOPTIONS
variable. See the NetHack man page or Guidebook for full details.
glHack also supports a new shell variable "GLHACKOPTIONS", which can
be used to set glHack-specific options. The format is the same as
NETHACKOPTIONS (and very similiar to the config file). For example,
using the bash shell you could type this:
export GLHACKOPTIONS=mode:1024x768,altprev,keyrepeat:partial
If the line contains `!' marks, they will need to be escaped by
putting a backslash (`\') before them, otherwise the shell will
get confused (`!' usually has a special meaning).
EXAMPLE CONFIG FILE
-------------------
If you don't already have a glHack config file, and would like to
permanently set some NetHack options, just copy and paste the
following lines into $(HOME)/.glhackrc, and edit to taste. Lines
beginning with `#' are comments.
#
# glHack Config file
#
OPTIONS=windowtype:SDL
OPTIONS=tile_height:32,vary_msgcount:3
OPTIONS=font_size_message:20,font_size_map:14
OPTIONS=dogname:Woofer,catname:Morris
OPTIONS=horsename:Tally,fruit:mango
OPTIONS=color,hilite_pet,safe_pet
OPTIONS=verbose,lit_corridor,confirm
OPTIONS=pickup_burden:U,pickup_types:$?!/="
OPTIONS=!showexp,showscore,splash_screen,!time
OPTIONS=toptenwin,tombstone,menustyle:partial
OPTIONS=!prayconfirm,pushweapon,disclose:yi ya yv
#
GL_OPTIONS=!windowed,keyrepeat:always
GL_OPTIONS=altprev,prevstep:3
GL_OPTIONS=flipping,!jumpscroll
NOTE FOR CVS USERS
------------------
The sources in CVS only contain the glHack-specific parts (including a
few NetHack files that were modified to work with glHack). To compile
and install after checking out glHack from CVS, you need (a) the PNG
images and (b) the original NetHack sources. See the "CVS Extras"
section on the download page of the glHack site.
Putting the PNG files in place is easy enough, just unpack in the top
glhack directory. Putting in the NetHack sources is a bit harder, but
fairly straightforward. Unpack the nethack-340.tgz file someplace
(I'll use /tmp for this example), then cd into the original glhack
directory and type:
cp -a -v * /tmp/nethack-3.4.0/
and build from there. The -a option ensures that subdirectories get
copied recursively and symbolic links are preserved. The -v option
just shows you what files are copied.
NO WARRANTIES
-------------
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.
AUTHORS
-------
Jay Fenlason (+ Kenny Woodland, Mike Thome and Jon Payne) wrote
the original hack, very much like rogue (but full of bugs).
Andries Brouwer continuously deformed their sources into an
entirely different game.
Mike Stephenson has continued the perversion of sources, adding
various warped character classes and sadistic traps with the help
of many strange people who reside in that place between the worlds,
the Usenet Zone. A number of these miscreants are immortalized in
the historical roll of dishonor and various other places. The
resulting mess was then called NetHack, to denote its development
by the Usenet.
Andrew Apted wrote the window port to SDL and OpenGL, later adding
a pure software renderer (based on a patch from Allister MacLeod).
This little beasty was called glHack. When NetHack 3.4.0 was
released it got updated to match, but then stagnated for a while,
until James Bentler came along and updated it to 3.4.3.
|