NetHack - Over 40 Years Of Hacking

Game
NetHack
Type
Original
Languages
C, Lua
Source
GitHub
License
NGPL

Introduction

NetHack is a traditional roguelike, and is quite possibly the archetypical example of the genre (apart from the original Rogue), as it fulfills every factor of the controversial Berlin Interpretation, and predates it by two decades.

NetHack sees the player's character delving into a series of ever deeper levels within the "Dungeons of Doom" in search of the fabled Amulet of Yendor, with the goal of offering it to their patron deity. Standing between the player and their goal is an innumerable number of fantastical creatures, from Elves, Dwarves and Hobbits ripped from Tolkien's works, to ever more dangerous threats such as Cockatrice, Mind Flayers and angry Shopkeepers.

The first and most apparent aspect of the game is the art style - rather than utilizing graphical assets, NetHack presents its world using pure ASCII displays. The player's character is usually represented with an `@' symbol, and will first need to fight their way through some Jackals represented as a red 'd'. Not to worry, if you're getting hungry, green 'F's are a great source of nutrition.

Being a roguelike, each time you create a new character, the dungeons are randomly generated, and when you die, all of your progress is lost. As such, the key to pushing further into the game isn't to learn the world, but to learn the systems that make up the world - the more familiar you are with the game's rules, the better your chances of getting just a bit further than you did last time. Having the NetHack wiki open doesn't hurt either.

A word of caution: It might take a few hours to learn the hotkeys, but the wiki has a page listing the commands - push through that initial learning hump, and you'll discover an amazing game. Don't forget to tweak the config file to your liking as well - keyboard users might be best served by adding this to the end:

# Control your character with the numpad
OPTIONS=number_pad:1

Interesting Features

Character Options

First, let me get this out of the way: NetHack's developers are a bunch of nerds, in the best way possible. You'll find a multitude of references to Dungeons and Dragons, Terry Pratchett, J. R. R. Tolkien and many more. In fact, the foundations of the game's systems are derived from Dungeons and Dragon's early editions, including the descending armor class.

One such holdover is the race, role and alignment chart. With 5 races and 13 roles (analogous to classes in other RPGs), certain races have access to only specific roles, with humans having access to all. Likewise, each race is restricted to a specific alignment (lawful, neutral or chaotic), except humans, whose alignment options are defined by their role.

This is very different from the approach of most modern games, but presents a certain kind of play style for each available option, simply by restricting the other. I should also note that the gender of your character can be selected (either male or female), except for the Valkyrie role, which is always female, but it doesn't seem to have an impact.

Time, Date and Lunar Cycles

NetHack recognizes the time of day based on your machine's internal clock - during the night (defined as 10:00pm to 6:00am), you're more likely to encounter lycanthropes such as the Warejackal - a nasty and aggressive monster that shifts between animal and human forms. If you're bitten by one of these creatures, you'll be similarly infected with lycanthropy - how you deal with that is up to you.

During the midnight hour (defined as 12:00am to 1:00am), undead creatures, which are quite common, will deal double damage. There are other effects, but I won't list them here - I think using the IRL clock as a game element is fascinating, but isn't taken far enough, at least in the base version.

Another interesting element of this system are the phases of the moon - the current phase of the IRL moon, as calculated from the internal clock, will impact the certain monsters - during a full moon, lycanthropes will be in their animal forms, and a new moon will make cockatrice more dangerous.

Be aware that, if you're playing on a server such as NAO (see below), the time and dates are dependent on the server's clock.

Bones Of The Dead

One of the most interesting features are bones files - a collection of dungeon levels that are saved when a character dies, including all of their dropped items at their grave site, and even a lingering ghost. These levels can often be found on public servers like NAO (see below), and act as a kind of pseudo-multiplayer aspect for the game. They can give an immense boost to your run or, if you die on the same level, multiple characters can be interred in one place.

It's quite an interesting feeling, seeing the effects that past adventurers on the dungeon - just be careful not to fall victim to whatever got them.

Open Source Code

The easiest place to find the source code is at GitHub, or on the official website NetHack.org, the latter of which looks like it hasn't been updated since the 80s.

Still, from these sites you can download either binary versions (targeting Windows 3.1 and MSDOS???) or build the game from source yourself - make sure you're building an official release version, such as v3.6.7 (the most recent at the time of writing) - thankfully, the recent versions each have git tags.

NetHack is released under the NetHack General Public License, which is based on the BISON General Public License by Richard Stallman, which itself would be adapted into what we know as the GNU GPL. As such, the intent of the license can be summed up by the last line of the text:

In other words, go ahead and share NetHack, but don't try to stop anyone else from sharing it farther.

Where To Play

The easiest place to play would be at alt.org, commonly abbreviated to NAO, either through the web-based browser terminal, via telnet or ssh - each option is detailed on NAO's main page. In addition, an IRC channel at 'irc.libera.chat', '#nethack', is filled with veterans of the game who can help with any issues, and answer your questions. Just... don't badger them like I do.


Tags: Open Source