Playing NetHack in 2020

nethack

I've recently ascended in NetHack, an amazing game originally released in 1987 and still actively developed and played today. I've known about the game for 10+ years and played occasionally, but I would usually die somewhere in the Gnomish Mines.

A few months ago I decided to tackle the problem more seriously and after many hours and losing hundreds of characters in painful ways, my Neutral Human Valkyrie finally ascended to the status of demigoddess.

Why play NetHack

So why would anyone still play NetHack, a 33-year old game with no graphics and no sound, in 2020? Here are my top 6 reasons:

It is very immersive

The fact that the game has only minimal, terminal-based graphics forces you to use your imagination, which creates an amazing immersive experience. That sense of dread when you're surrounded by monsters, your lamp has gone out, your god does not answer to your prayer and your pet is shamelessly eating when it's supposed to protect you...unforgettable.

It has incredible depth

NetHack is easily one of the most complex pieces of open source software in existence. You could spend years playing and still have things to learn. The beauty of it is that you don't need to know everything, because there are multiple ways around each problem. The fact that you can polymorph into hundreds of monsters each with it's own characteristics and finish the game that way is mind-boggling to me. There are also conducts (something similar to achievements in modern games) and if that's not enough, there are NetHack variants (forks of the vanilla game) that add even more features and complexity.

You get to learn the Vim motion keys to perfection

Struggling with the h,j,k,l keys in Vim? Play a few hours of nethack and they will be forever imprinted in your mind. Make sure to disable number pad (set OPTIONS=number_pad:0 in .nethackrc or in the options) and enjoy playing like a real hacker.

It's a precursor to modern games like Diablo

If you're a fan of the Diablo series you might find similar concepts in Nethack: resistances, unique items, fountains, item identification etc. Diablo was also originally designed to be played in a turn-based manner, similarly to NetHack. You might want to git NetHack a try just to see where Blizzard got its inspiration from.

It encourages exploration and discovery

The joy of playing NetHack comes from discovering how things work. There is a lot of interaction between items and hidden game mechanics that are waiting to be discovered.

I've tried to stay away from spoilers, but I was inevitably exposed to a few of them (mainly regarding on how altars work). It is entirely possible to ascend without spoilers and I would highly encourage people not to read any online guides before they ascend. Note that spoilers in the context of NetHack usually refer to game mechanics and not story elements (the story in NetHack is extremely minimal).

It sharpens your problem-solving skills

Need to get to the other side of a pit? You can put on a ring of levitation, you can push a bolder into the pit, you can teleport to the other side or simply jump. It all depends on what items or spells are available to you at any given time. You need to learn to make the most out of your resources, just like in real life.

A few hacker tips for hacking NetHack

Here are some setup tricks, not related to gameplay, that helped me ease that learning curve.
NetHack's difficulty is legendary, but with proper configuration you can improve the quality of life and speed up your games.

Play in explore mode if you feel like dying is too punishing

In explorer mode, no score is recorded but if you die you'll be asked if you really want to die and you can simply press 'n'. A lot of people who try out nethack never get past the Gnomish Mines, die a few times then simply abandon the game, missing out on 95% of the content. Don't feel discouraged to play in explorer mode to learn the game. Simply run nethack -X. Note that even with infinite lives, you may still enter some situations where you cannot advance.

Read the official guidebook

There's a lot of information there and it's not considered spoilers.

Enable the curses interface

It makes the game look much better and removes the need to press spacebar to see the "More..." messages (especially useful when you're anxious to see if you're dead or not).

Enable dumplog

This makes the end of game information available to you in a file. It makes it easier to do a post-mortem analysis of your character and find out what went wrong there.
To enable dumplog, you need to uncomment the DUMPLOGFILE line in sysconf. The location of the sysconf file depends on your system. For Windows see directory paths

Record your terminal via asciinema

If you're on macOS or Linux, asciinema is a great way to record and analyze your games.
However I've found some issues when recording the curses interface and trying to play the recording in the browser. I'm still looking for alternative ways to record NetHack games.

Install it on your linux server and play via ssh

If you have a Raspberry Pi lying around, you might want to try this option instead of playing on a public server because it allows you to play in explorer mode (and also have different names for your characters!).
Note that if your ssh connection drops, you can save your game by sending SIGHUP to your nethack process: kill -s SIGHUP <pid>

Play on public servers via ssh or in the browser

Public servers like NAO are very convenient because you can just ssh and start playing, or even play in the browser. Note however that there is a slight lag which becomes noticable after you've played locally for a while. I would only recommend public servers if installing the game is not an option, or if you want to play from multiple locations. I played on NAO mostly to get a plublic record of my 2nd ascenscion.

Another nice thing is that you can watch other players (if you're not interested in avoiding spoilers) and even send them emails which will be received in the game. To send someone an email, start watching their game then press ? to get a list of commands, m is for mail.

nethack_mail


Customize your .nethackrc

NetHack is very configurable, you might want to take some time to dig through those options. Here are a few that I've found very useful.

    # prevent attacking friendly shopkeepers by moving diagonally with 'y'
    OPTIONS=paranoid_confirmation:attack pray
    
    # enable autopickup but don't pick up any items except the ones thrown
    OPTIONS=autopickup,pickup_thrown
    AUTOPICKUP_EXCEPTION=">.*"
    
    # move the tools higher in the inventory list
    OPTIONS=packorder:")[?+!=(/%$*`0_
    
    # forgot to equip your weapon?
    MSGTYPE=stop "You begin bashing monsters .*"
    
    # don't follow monsters into holes by mistake
    MSGTYPE=stop ".* has made a hole in the floor."
    

There are several other message types where I stop the game to prevent accidental mistakes. You may want to add your own as you play.

Don't be afraid to raise issues if you find them

I was pleasantly surprise that my humble suggestion was implemented in the game and will be available in the 3.7 release. It's an extremely small change with absolutely no gameplay impact, but it really shows the attention to detail the Dev Team puts into this game.

Write obituaries for your characters to learn from mistakes

NetHack gives you a short description of what killed you, but that's often not the real cause of death. I made the habbit of writing short notes on the death of my characters to keep track of what happened and learn from mistakes. Besides, why blame yourself when you can blame some imaginary characters as if they played on they're own!

Here are a few stories:

3.6.3 2291 2 6 6 0 55 1 20191227 20191227 1000 Bar Hum Mal Cha Shaorma,killed by a watch captain
He used a lock-pick to open a door in view of the guards. He didn't pay attention to their initial warning.

3.6.3 643 0 4 4 0 15 1 20191226 20191226 1000 Pri Elf Mal Cha Silver,killed by a forest centaur
Used an unidentified wand on a jackal turning it into a centaur. Got trampled to death shortly after.

3.6.3 84512 0 13 14 0 96 1 20191221 20191219 1000 Val Hum Fem Neu Jazz,killed by a touch of death
She had multiple pets, one of which polymorphed into an arch-lich. After some time this pet went wild but remained friendly. She decided to put the arch-lich to rest but was unaware of what the monster was capable of.

3.6.3 113 0 2 2 0 18 1 20191218 20191218 1000 Val Dwa Fem Law Soni,killed by overexertion
Slept with an incubus which took off all of her clothes, then teleported in close proxymity. Before she could put anything on, the incubus came back for another round.

3.6.3 723 2 5 5 0 20 1 20191228 20191228 1000 Wiz Gno Mal Neu Rain,killed by a giant bat, while sleeping
He received a djinn as a pet from a lamp. In the Mines the djinn stepped into a sleep trap but our hero didn't notice. Switching places with it, he fell asleep and died.

3.6.3 3306 2 6 6 0 42 1 20191231 20191231 1000 Arc Dwa Mal Law Tibi,killed by a bolt of cold
An invisible nimph stole a wand of cold and zapped him with it. Thrice.

3.6.3 5570 2 6 8 0 63 1 20200206 20200206 1000 Cav Gno Mal Neu Maxx,killed by a fire ant
Found the gauntlets of power as literally the first item on the floor and was expecting an easy start. While hauling some items, he entered a difficult situation, ambushed by rothes and orcs while his pet was eating. Praying didn't restore his health but he somehow managed to escape by digging through a passage. In low health, he entered Gnome Town but found a fire ant waiting for him there. Unable to outrun it, he died in flames.

3.6.3 8638 0 10 13 0 63 1 20200207 20200207 1000 Kni Hum Mal Law Sven,killed by a soldier
His life was short but adventurous. In the Mines, his passage was blocked by a narrow corridor. Unable to find a pickaxe, he decided to return to the surface but on his way out he got ambushed by a group of bees and reduced to 5 strength. Unable to carry much, he only kept his lance and armor, mounted his pony and rode on. Further down the dungeon, he accidentally woke a throne room by blowing a whistle, his pony died and he was left bashing monsters with his lance. He narrowly escaped by locking himself in a room. Luckily, he found another pony nearby, went back to clear the throneroom, recovered his saddle and rode on. In another stroke of luck, he found a dead unicorn trapped in a pit, took its horn and recovered his strength. When his troubles seemed to be over, he found an inscription saying "Vlad was here" and a hole nearby. Not thinking too much he jumped right in but found himself a lot further down the dungeon where difficult monsters lurked. He escaped a large room full of monsters by jumping and praying, but his luck eventually ran out when he got sadwitched between a soldier and a killer bee queen. So died a great adventurer.

3.6.3 11919 0 7 8 0 75 1 20200208 20200208 1000 Tou Hum Fem Neu Invoker,killed by a winter wolf, while praying
This guy started as a neutral male, but soon found himself as a chaotic female. She remained a female for the rest of her short life, until a werewolf and his pack of wolves devoured her.

2020-02-18

Comments