NetHack is pretty complex game and one could probably write a whole book dissecting different parts of it and design decisions behind them. Instead of writing a book that would takes me ages and that not that many people would find that interesting, I’ll pick some aspects of the game and write about them.
There are various versions of NetHack for different platforms. This article looks into NetHack 3.6.0 as played on Windows. Originally NetHack used ASCII graphics to represent the world as shown in the image below.
While this is really crude if judged by today’s standards, it was pretty revolutionary back in the day when Rogue, NetHack’s ancestor, was released in 1980. That’s 36 years ago and NetHack is only 5 years younger.
NetHack’s levels are relatively small 80 times 20 tiles or so. This fit on a single terminal screen without scrolling and was probably easier to program than bigger level would have been. Levels are pretty compact and while there are some walking in empty rooms involved, the levels don’t feel deserted. Since size of level is known, it makes easier to guess if there are any hidden doors at seemingly dead end rooms or corridors, which makes exploring less tedious. Nothing is more frustrating than trying to hunt down a secret door on a huge map.
NetHack takes very liberal approach to what actions one can perform to items. Nothing prevents player trying to eat an amulet or throwing a gem. In certain circumstances those actions might even be beneficial. Here is one of the greatest strengths and weaknesses of the game. There are so many options to do with items and so many hidden effects that finding all of them will be difficult without using a guide. However, nothing beats that feeling when you actually manage to discover something that you previously didn’t know and it actually sort of makes sense.
Where NetHack shines is consistency. Same rules apply to each and every denizen of Dungeons of Doom. Nothing prevents a lowly goblin picking up and zapping that powerful wand of death or nymph stealing your cockatrice corpse without wearing gloves. And effects do have their twisted internal logic, that makes perfect sense after you realize why things are happening as they’re happening.
As mentioned earlier, levels aren’t big. Also, there aren’t that many of them. Even when content of the levels is procedurally generated, the overall layout of the dungeon remains more or less the same. NetHack sprinkles levels with special rooms and locations. None of these are cosmetic as far as I can tell, but have special monsters or other functions for the player to try out. This is a good way to keep player interested in exploration and trying to find out new places to go.
In general, there are very little things that are just cosmetic. Everything seem to have some special function. Ambient noises indicate what kind of features the level has, while little clues tell observant player what items are cursed or generally worthless. The amount of information thrown to the player is staggering and it’s good that the game is turn based as real time game would quickly be too much to handle.
Some of the items may be cursed, uncursed or blessed. Figuring out which ones are cursed is generally easy after the player learns how. More trickier is trying to find out what each potion, tome, scroll, ring or other knick-knack does as they are randomized in the beginning of the game too. This feels sometimes a bit of a chore, but sometimes manages to create nicely tense moments. Player might be forced to make a decision to try and survive with low health or drink an unknown potion and hope for the best.
Generally NetHack manages to be a game that is much, much deeper than long. It is possible to play through in a single sitting (provided that you know what you’re doing), yet there are tons and tons of little things to try out and discover. Eventually the game starts repeating itself (there’s only so much that procedural generation can do for you), but generally it has very high replayability value.