NetHack is a single-player computer role-playing game, originally developed in 1987. In the game, players take the role of fantasy adventurers who must endure the challenges and dangers of the Dungeons of Doom in order to retrieve the mystical Amulet of Yendor for their patron god.
NetHack is available for download, free of charge, from www.nethack.org. The newest version available as of this writing is NetHack 3.4.3, released on December 8, 2003. Official binaries are available for all flavors of Windows, MS-DOS, Linux, Macintosh, OS/2, Amiga and Atari. Source code is also freely available, which, in addition to the above listed systems, is compatible with all flavors of Unix, BeOS and VMS. The source code is distributed under the NetHack General Public License, which is based on the GNU General Public License.
The game is renown among game aficionados for four things: its age, its text-only interface, its incredible difficulty and its addictiveness.
As to the first point, NetHack is indeed a very old game. It will be almost 20 years old as of this writing. While there are many games that are older, very few of them have either an active development team that continues to release new versions or a large, growing player community. NetHack has both.
As to the second point, the world of NetHack is displayed to players as an overhead map that uses alphanumeric and punctuation characters instead of real graphics (figure 1). Every object in the game is represented by a single character. For example, the player's avatar is represented by an "@" symbol. Most of the commands are issued as single keypresses on the keyboard. While this interface seems crude, most NetHack players consider it a virtue.
Hello Balseraph, welcome to NetHack! You are a neutral male human Monk.
------------
|..........+
|..........|
|@f........|
|..........|
|..........|
|..........+
------------
Balseraph the Candidate St:18/01 Dx:13 Co:12 In:10 Wi:9 Ch:10 Neutral
Dlvl:1 $:0 HP:14(14) Pw:5(5) AC:4 Xp:1/0 T:1
Figure 1: The beginning of a game of NetHack 3.4.3. Remember that NetHack is a text-only game, so this is an actual screenshot.
The square on the left represents a room and the player's avatar is represented by the "@" sign. Various statistics about the player character are displayed on the bottom two lines and a descriptive status bar is displayed on the top line.
As to the third point, NetHack's reputation as an incredibly difficult game is well earned. Part of this difficulty stems from the learning curve. The game manual is fairly terse, only describing the commands and interface. The rest of the information about game must be learned the hard way, through sheer trial and error. Even after players have learned everything about the game, the game itself is very difficult. The Dungeons of Doom are chock full of dangers that can instantly kill an unwary adventurer. Finally, NetHack is very difficult because death is permanent. That is, players cannot save their current game and return to it after death. When a character dies, the game is over.
As to the fourth point, despite the near impossibility of the game, NetHack still has a large, dedicated player community. They are drawn to the game by its complexity and difficulty, often to the point of near-addiction. While it is easy to die in NetHack, very few of those deaths are arbitrary. The gameplay has been crafted so that almost every failure could be avoided through cleverness. Good players learn from those mistakes and progress farther along in the game, living for the hope that one day they will finally win.
These four aspects of the game distinguish NetHack as one of the most significant achievements in the history of video games.
Specifically, NetHack is a "roguelike" game. That is, a game like the even older game Rogue. Because of this, a history of NetHack is in part a history of Rogue.
Rogue came into existence the way most games do: an older game inspired the developers to make a newer and better game using the latest technology. In the late 1970s, the earlier game was Adventure, the classic text-only interactive fiction game. The original developers of Rogue, Michael Toy and Glenn Wichmann, were students at the University of California, Santa Cruz and had access to Adventure on the school's mainframe computers. Wichman remembers that "both enjoyed playing 'Adventure' (Michael [Toy] had long ago mastered the program; [he] kept getting killed but enjoyed it anyway.)"1
However, Adventure proved to be limited in many ways. While today's gamers may find the text-only interface to be the most limiting aspect, Toy and Wichmann were most disappointed by Adventure and existing adventurelike games because they were
"canned adventures"--they were exactly the same every time you played, and of course the programmers had to invent all of the puzzles, and therefore would always know how to beat the game. We decided that with Rogue, the program itself should "build the dungeon", giving you a new adventure every time you played, and making it possible for even the creators to be surprised by the game.2
This randomly generated experience was the key gameplay innovation. Because the program would create surprises every time users played, Rogue would have nearly infinite replay value. Replay was, and still is, an important measure of game quality.
Toy and Wichman developed another game innovation, in the form of rudimentary graphics. Adventure and its direct descendents were completely text based. That is, the game resembled a normal computer terminal, where all the settings were descriptive prose ("You are standing at the end of a road before a small brick building") and all the commands were in the form of pseudo-English phrases ("go east"). Rogue, on the other hand, presented the user with an overhead map drawn using ASCII characters. While crude by today's standards, this gave players a clearer sense of the space they were playing in.
The "curses" cursor manipulation programming library developed by Ken Arnold, a student at the University of California, Berkeley, was the tool that Toy and Wichman used to give Rogue its graphics. Computer terminals of the time were generally limited to 80 characters on 24 lines for a single screen. The curses library, written in 1980, allowed programmers to easily update arbitrary parts of the screen while leaving other parts unchanged. Prior to curses, a programmer would have to refresh the entire screen manually even if he wanted to change just one character while leaving the rest of the screen unchanged. Curses provided the flexibility needed by programmers like Toy to easily create graphics.
In 1980, with Toy doing most of the programming and Wichmann providing ideas and the name, the first version of Rogue was released. Wichman recalls,
We had a playable game, without all the features yet (e.g., no armor), when Michael transferred to U.C. Berkeley, where he met up with Ken Arnold. For a while, we each moved forward with our own versions of the game, him in Berkeley and me in Santa Cruz. This proved to be too difficult to keep up logistically, so I just let Michael & Ken take over Rogue development completely.3
The object of Rogue is to retrieve the magical Amulet of Yendor, an artifact of great value, from the bottom of the Dungeons of Doom. Along the way, the player kills monsters, discovers treasure and explores the randomly generated dungeon. Fortunately (or unfortunately), Rogue is much more difficult than it sounds, and it is the difficulty and unpredictability that made Rogue so popular.
Rogue quickly became popular with the students at Berkeley and--because the popularity of Berkeley's "BSD" distribution of the Unix operating system, which included Rogue--with university students worldwide by 1983. By this time, many budding young programmers had become addicted to Rogue. This proved fortunate, because the original Rogue developers--Toy, Wichman, Arnold, and Jon Lane, who joined the team after meeting Toy working for the Italian company Olivetti--eventually lost interest in the game. Toy and Lane formed their own company, A.I. Design, to port Rogue to the IBM PC around this time. After the company was sold to Epyx, official development on Rogue ended.4
However, many of Rogue's players had already become inspired to improve or remake Rogue independently. One of the first and most successful games inspired by Rogue was The Dungeons of Moria, written in 1983 by Robert Alan Koeneke for the VAX VMS system. Moria would go on to inspire another major roguelike, Angband, in 1990.5
NetHack was not long after Moria chronologically. Hack, as NetHack was first known, was first written by Jay Fenlason, Kenny Woodland, Mike Thome, and Jon Payne in 1985, as an almost direct clone of Rogue, except with more monsters and items.6 This level of similarity, in part, makes NetHack uncommon among its fellow roguelikes. Whereas many others were just inspired by Rogue, NetHack was created from the start as an improved Rogue. Arguably, this makes NetHack a direct descendent of Rogue. Even though the original Rogue development team had nothing to do with NetHack, Fenlason et al. reimplemented Rogue with improvements, a task made easier because Rogue had been released with the BSD license.7
Even from a visual level, there is a subtle yet distinct link between Rogue and NetHack that is lacking when Rogue is compared to other major roguelikes, such as Moria, Angband and Ancient Domains of Mystery (figure 2).
-+----------
+..........+
|.....@....|
---------E--
#
#
#########
-------------+--------
| ? |
| | --------------
####+ +#########+ |
############## | %! | | ) |
| ! | | |
---------------------- --------------
Level: 1 Gold: 8 Hp: 8(12) Str: 16(16) Arm: 4 Exp: 1/9
Figure 2.1: Starting out in Rogue 5.3.
You hear noises in the distance.
------------- ---------------
------------ ............| |.............|
|..........-#### |...........+ |.............| -------
|..........| # --.--------|- ...............# |...{.|
|<.........|### #### ### -----+---------# ##.....>|
|..........|# ### # # ###|....$|
|..........|# # # # ### -------
|..........-################## ## ############
------------# # -.----.--+- #---------#
####' ## |..........######|...(...|#
------|-- |.........| #|.......-#
|........ |.........| #|....@..|
|.......| |.........| #-.......|
|.......| ## |.........| ---------
|..(.....#####..........|
|....[$.| -----------
---------
Balseraph the Candidate St:18/01 Dx:13 Co:12 In:10 Wi:9 Ch:10 Neutral
Dlvl:1 $:0 HP:14(14) Pw:5(5) AC:4 Xp:1/0 T:245
Figure 2.2: An early level of a game of NetHack 3.4.3.
##################################################################
Human #................................................................#
Mage #...........#1#######.........................########...........#
Novice #...........#########>.....#####2######.......########...........#
#...........#########......############.......#######4...........#
STR : 7 #........@..#########......############.......########...........#
INT : 14 #...........#########......############.......########...........#
WIS : 14 #................................................................#
DEX : 13 #................................................................#
CON : 13 #................................................................#
CHR : 12 #................................................................#
#................................................................#
LEV : 1 #...........######.........#########.............................#
EXP : 0 #...........######.........#########.........######..............#
MANA: 0 #...........#####5.........#########.........######..............#
MHP : 10 #...........######.........#########.........######..............#
CHP : 10 #...........######.........#########.........#####3..............#
#...........######.........####6####.........######..............#
AC : 0 #...........######...........................######..............#
GOLD: 385 #............................................######..............#
#................................................................#
##################################################################
Study Town level
Figure 2.3: The first level of The Dungeons of Moria 5.5.2.
Human
Mage
Novice
LEVEL 1
EXP 0
AU 545
# #
STR: 7 # #
INT: 17 # #
WIS: 13 #@#
DEX: 15 # #
CON: 12 %%####.#####.#########
CHR: 16 #....................#
#....................#
Cur AC 1 #....................#
Max HP 10 #>...................#
Cur HP 10 #....w................
Max SP 2 #..<.................#
Cur SP 2 #....................#
#....................#
############.#####+###
Study Lev 1
Figure 2.4: An early level of Angband 3.0.5.
^^^^^
^^^..^
^^^^^^ ^^..^^
""&&^~^^^^.^^
"&&~~~^....^
"""""&&&&&o..~^^^
""""""""&&&&&&&&&&^^
"""""""&&&&&&&&&&&~~
"""""&&@&&&&&&&&&~
="""""""&&o&&&&~~~
==""""""&&&&&&~~
&&"" &&~
Balseraph St:16 Le:12 Wi:11 Dx:12 To:11 Ch: 1 Ap:10 Ma: 3 Pe:10 N=
DV/PV: 11/1 H: 19(19) P: 3(3) Exp: 1/0 DrCh Sp: 100
Hungry
Figure 2.5: Ancient Domains of Mystery 1.1.1. Beginning to explore the world map.
...........
.............
..............
............... ...
................ .....T.
####....................
....#.....######........==
..........#.. #........=.
######.....#t. #........=..
............#.. #......T....
#............##t###......T....=
#........................T....=
##TT.....######t..@.........=....
#=T=.....# ..#.............=....
=====....####.#..T..........===..
.=====...#....#.....t...........
====.....####.#...........T....T
...............................
..............................
............................
Balseraph St:16 Le:12 Wi:11 Dx:12 To:11 Ch: 1 Ap:10 Ma: 3 Pe:10 N=
DV/PV: 11/1 H: 19(19) P: 3(3) Exp: 1/0 Vlge Sp: 100
Figure 2.6: Ancient Domains of Mystery 1.1.1. Beginning to explore a village map.
Figure 2: A comparison of Rogue and four of the most popular roguelikes: NetHack, The Dungeons of Moria, Angband and Ancient Domains of Mystery. Remember, all of these games are text-only, so these are actual screenshots.
Hack was distributed over Usenet in source code form. Because the code was distributed to the public, anyone could experiment with Hack themselves. At this point, several independent developers worked on their own versions of Hack: Andries Brouwer did a major re-write, transforming Hack into a different game, and published (at least) three versions (1.0.1, 1.0.2, and 1.0.3) for UNIX machines on Usenet. Don G. Kneller ported Hack 1.0.3 to Microsoft C and MS-DOS, producing PC HACK 1.01e, added support for DEC Rainbow graphics in version 1.03g, and went on to produce at least four more versions (3.0, 3.2, 3.51, and 3.6). R. Black ported PC HACK 3.51 to Lattice C and the Atari 520/1040ST, producing ST Hack 1.03.11.
Eventually, Brouwer lost interest in Hack. Around that time, Hack patch writer Mike Stephenson took over the reigns of development. In 1987, he gathered all the various Hacks and merged many of their improvements and additions into one program, which was renamed NetHack, to distinguish it from its parent.8
One continuing source of confusion is that the "Net" in NetHack refers to the fact that the game was developed over the Internet by many different people, not that the game is multiplayer or online.9 This open source and team-based development model has contributed greatly to the success of NetHack, in terms of quality and popularity.
The original postings of NetHac