Hacker News new | past | comments | ask | show | jobs | submit login
The story behind NetHack's first update since 2003 (gamasutra.com)
145 points by FroshKiller on April 18, 2016 | hide | past | favorite | 81 comments



Ascending isn't particularly difficult, it's just that it requires levels of attention to detail and preparation that verge on tedium for some.

One example: in order to pass through the Elemental Plane of Water on the Astral, you need to find the (moving!) portal. In order to do this with optimal safety, you want to have: genocided all sea monsters, so you don't need to worry about krakens and the like have a means of magical breathing, in case you do end up in the water rustproofed all your metal armor and other gear have a large stash of Scrolls of Gold Detection, in a Bag of Holding (itself blessed and stored inside and oilskin sack so that water doesn't get in and erase your scrolls) have a means of safely giving yourself the Confused status (reading scrolls of Gold Detection while Confused lets you detect magic portals) a means of swiftly removing said Confusion, so that you can... *use your Boots of Speed (or other speed-boosting effect) to close rapidly on the moving portal.

And that's ONE challenge on ONE level (although its deep in the endgame and considered one of the harder things in the game). Now imagine doing that for 100+ levels of gameplay... you CAN virtually guarantee a win in Nethack, but its never fast.

I spent a couple years playing hard in college. I read spoilers, and save-scummed for a while, then stopped save-scumming because it wasn't fun and I didn't need to anymore. I've lost track of my legitimate ascensions - at least one with every class, and then I started in on conducts and score maximization.

Now, I still play on and off for a week here or a week there. I can ascend about 1 in 4 times with the easy starting classes like Valkyrie. My YASDs inevitably come from rushing or not thinking things through, plus very occasionally getting screwed early by the RNG.

And I'm not particularly good at the game. Really good players can virtually ascend at will, with the only limitation being their available time.


I think what's not obvious to people casually familiar with Nethack is that success is hugely bound to memorizing spoilers (the NH community term for any non-obvious peculiarity of the game).

In the early game that means knowing what the various meaningless messages mean ("You have a strange feeling for a moment, then it passes"), knowing how to identify items from context (cost, weight, results of innocuous actions) and so on. In the late game it means knowing all the harmful stuff coming up and what counteracts it, knowing all the statuses and interactions (Gold Detection while confused, etc).

That kind of stuff is what wound up driving me from the game - anything past the early stages just felt like bookkeeping.


For me, reading the source code was part of what made the game fun. It was a sort of metagame, learning how to cast "real-world" spells by studying the arcane tomes that held the secrets of the universe. It by no means made me invincible (my death/ascension ratio was still topheavy) or even cut out the mystery; it just moved some of the action and exploration from the game screen to a text editor. Two games in one.

Every 5-10 years I end up losing a couple days to NetHack. I'm overdue.


I've been a NetHack player since about 1990, and have ascended every class at least once, and I agree with you about the tediousness.

One roguelike I'm really enjoying these days is Dungeon Crawl Stone Soup. It's very much like Nethack in many ways, but the developers have made it a conscious priority to remove all of the tedious elements or the need for spoilers. They have been mostly successful with this, IMO.


Your example is a bit exaggerated, though I agree with you directionally. There aren't quite 100+ levels (more like 50-60 including the Mines and the Quest), and you don't have to do all those things: I rarely genocide sea monsters; my magical breathing is usually just a ring of levitation, which you need in other parts; you can easily get by without rustproofing your armor; the means of removing confusion and the speed boots are both things that you want/need earlier in the game too (vs a special preparation just for the Planes).

Once you've beaten it a few times and have a generally strong command on all the game mechanics and interactions, I think the fun part tends to be figuring out just which things are really necessary and which aren't, and generally optimizing your plan along some dimension or another (conducts, time, minimizing tedium, going for a streak, etc).


The article is a bit low on actual details why the release happened and what events lead to it.

"Why not" doesn't adequately describe how ESR released the in-development code to the community without the rest of the devteam knowing about it. This lead directly to new members joining the devteam and the 3.6.0 release.


I found this much better at explaining what went down before the 3.6 release: https://tung.github.io/DynaHack/2016/02/18/stepping-down-fro...


I've just been reading about the foundations of NetHack and other roguelikes, which is quite interesting: http://www.amazon.com/Dungeon-Hacks-NetHack-Angband-Roguelik...


Such C. Much ANSI.

    STATIC_OVL void
    mkcavepos(x, y, dist, waslit, rockit)
    xchar x, y;
    int dist;
    boolean waslit, rockit;
    {
        register struct rm *lev;
        ...
    }


... as in, "this is actually a quite nice and readable old-style ANSI C codebase". Seriously, the downvotes...


Yeah. I made a mod many years ago (it made you the "drunken master" if you were master level in unarmed combat and drank potions of booze). It was really, really easy. I have rarely worked on a code base of that size that was so easy to understand and modify.


If you don't want downvotes, put some text in your comment that is not nonsense-for-the-sake-of-nonsense.


Maybe you were downvoted because that is K&R style, not ANSI style. ANSI requires the type declaration next to the name in the parameter list.


ANSI still allows K&R style, refer to the grammar in section 6.7.6 and the semantics in 6.7.6.3 (of C11).


Has anybody beat the game without patching the source or running it in the debugger?


I have. I've ascended four times over about 18 years of (non-continuous) playing. And without resorting to the use of Elbereth. For those who don't know, you can engrave "Elbereth" on the ground, and most monsters will refrain from killing you. I considered it a cheat, so I never used it.

After a while, you tend to get really good at the game and it becomes much easier. The trick is not to do something stupid. If you can prevent yourself from doing that, all you need is a fair amount of luck and patience, and you'll make it to the end.

The problem is not doing anything stupid. For example, for me it was common to die while attacking an enemy, or usually multiple ones in a swarm, even though I had the items to escape them right there in my inventory. A simple zap with a wand of digging and you'll drop to the level below and make your escape.

After a while, if I got myself in a pickle, I'd just open the inventory screen, read through it a few times, go for a cup of tea or a good night's sleep. When I figured out a solution, I would continue the game. It is, after all, turn based so there is no hurry.

It's great fun.


> The trick is not to do something stupid. If you can prevent yourself from doing that, all you need is a fair amount of luck and patience

This is why I never got that far in NH. It inevitably killed me, are there was just far too much tedium involved. I greatly prefer Dungeon Crawl Stone Soup[1] over it. DCSS felt like it didn't require you to have encyclopedia-level knowledge of the game, and most deaths, if they felt like stupid mistakes, were because I overestimated my character's abilities and did not retreat when I had the chance. But I had the chance.

(I've retrieved the Orb of Zot, but not ascended with the amulet, so there's that, too. Also DCSS has absolutely beautiful graphics.)

[1]: https://crawl.develz.org/


From the article:

"“There has been some complaints about how we ‘broke’ the game when the Elbereth nerfing was found out," he says. "But I consider the old E behaviour to be the broken one -- it was just too strong and exploitable. Some people have even said they will not update to the newest version, which is of course their prerogative"

Notable victories: http://nethack.wikia.com/wiki/Notable_ascensions

One of the players ascended 18 consecutive times (playing on a server too, so it was all logged)


That was probably Marvin (or kevin? I don't exactly remember his name). He's considered a god among Nethack players.


Sounds like playing Spelunky. "Of course throwing the rock upwards is a risky and stupid idea, why did I try to do it again?" But there, the time is working against you so no breaks... One day I'll stop throwing stuff, running near spikes, angering shop keepers, running into bones, and all the other stupid stuff and maybe finally win!


I've won Spelunky only a handful of times. (I suggest playing with the fan made patches for the gamemaker version.)

But, I've seen sub ten minutes run on Youtube using only the original items, and no hearts lost.


Yeah, some aspect of Spelunky's spirit are obviously pulled from NetHack (Derek Yu, the creator, explains so specifically in the book about Spelunky).


"The problem is not doing anything stupid."

Lest you find yourself reporting YASD after you choke on that corpse.


I think people's replies to this thread are commonly confusing ascending without modifying source with ascending without reading source (even though some people have answered correctly). Just to clarify the two different issues, there is only one person known to have ascended unspoiled.

https://groups.google.com/forum/#!topic/rec.games.roguelike....

However, people frequently ascend without modifying or tampering with the code. Essentially all of these people have been spoiled by studying source code or spoiler files derived from it (although some people study spoilers extensively and some people just consult them for very specific topics). You can see ascensions in real time every single day by watching other people play on nethack.alt.org. Especially on weekends, there will be several victories per day!


Surprisingly, many people have (for a certain definition of many). There are a lot of successful ascensions you can read on RGRN on Usenet [0]. For me, I managed to go about halfway down the dungeon before dying, maybe I'll beat this game sometimes next decade!

[0] https://groups.google.com/forum/#!forum/rec.games.roguelike....


I found it more worthwhile to move to Dungeon Crawl Stone Soup and Brogue than beat my head against Nethack until I ascend. Something to be said for a game with a clear vision vs the kitchen sink.


Of course, NetHack literally added kitchen sinks as a game element (I think in the early 1990s) as a response to being accused of containing everything plus the kitchen sink.


I seem to recall sinks being in there in the mid- to late-80s, but then the brain cells from that era aren't in the best shape.


Isn't "stone soup" a synonym for "everything but the kitchen sink?" Part of what gives Nethack its enduring charm is, for lack of a better work, ambiance. DCSS is fun but it is sort of a disjointed mess of stuff that doesn't always fit together very well.


Hardly with current DCSS.

They devs have ripped out so many things. There are very few "cheating" or "gimmicky" things left. They have taken out teleport evoke and teleport control along with numerous buffs. Unlike NetHack There are also very few tropes or comic relief.

IMO only brogue is the true rogue that is isn't disjointed. If you do want a whole bunch of crap .... errr content than ADOM is having a great revival on STEAM.


It's a "sneaky collaboration effort". The original tale is that travellers couldn't get any food from the nearby village, so they started a pot boiling with a stone in it. They then asked the villagers for little bits to flavor it up and after a while they had a hearty soup and just took the stone out.

How recently have you played DCSS? I find the devs have been pretty aggressive about cutting out the un-fun elements. Example: Not long ago (.16?) Trog worshipers could sacrifice corpses for his favor, but since that was practically always the Correct Decision, it was cut out and you received favor for just killing enemies.


It's been a couple years...will have to pick it back up again, the dev team was always very active.


Once you are past the castle, it's easy to ascend. Mostly boredom stopping you there.


Much to the detriment of my grades, I beat the game in college.


lots of people have. There are telnet servers that run nethack so that you can prove (assuming you trust the server operator) that you have done so.


That doesn't prove you haven't studied the source code/read wiki, which is OPs entire point.


> patching the source or running it in the debugger?

Both of those are pretty invasive. Studying the source code and wiki is pretty fair game and definitely not an "instant win"!


running in the debugger is a lot of fun


Are you talking about wizard mode or actually in gdb?


Gdb


I'd read a writeup of that - and it'd make a good HN post, too.


What would it make it interesting? I'd hook up a breakpoint to the check for 0 HP and just add HP.


It'd make a good debugging tutorial at least. The process of finding the right place to add HP isn't always simple (in other games) and you could always go through modifying game logic / items.


Heh. I think wizard mode pops up a dialog when you die "Are you sure you want to die?". Same effect, but probably less trouble!


I also want to point out that people beat rogue, which is at least within a magnitude of as difficult as nethack, but was closed source.


It IS possible to ascend without such cheats, but incredibly difficult.

I would say (and this is certainly true in my case) that an ascension without resorting to either spoilers or source-diving belongs in the "not going to happen" category.


I am not talking about reading the source or the wiki, I am talking about changing it...

-- Original Commenter


I've ascended every class except Rogue and Healer (and neither are really more challenging than Tourist, I just never got to it) over the last ~10 years of idle playing of NetHack 3.4. NetHack is not quite a solvable game, but there are fewer patterns that matter, at high-level play, than one might think. Once you are able to see those patterns (many of which are just part of your standard ascension kit) as part of the game, the solutions generally become fairly obvious and you can just drill through it.

You definitely won't win every time, of course, but you'll be pretty okay.


I found the tourist actually relatively easy. (Especially once you get started.) Archaeologist is supposed to be harder (but I've done that, too).

But that might be because I focussed on the supposedly harder classes after doing Valkyrie and Wizard.


Tourist is hard to start out with, then gets relatively easy. High-level tourists (post-Quest) used to be extremely easy due to the Platinum Yendorian Express Card and a wand of polymorph being able to provide unlimited polypiling (Dr. Efembe, I presume!). Now restrictions on recharging wands and on polypiling take away that advantage.

Archaeologists are also hard to start out, but Lawful alignment, good aptitude for the sabre skill, and a starting tinning kit make them easier later on.


I've ascended without modifying code. I did have to insert a level map from a game in explore mode because there was a bug in the version I was playing. The bug meant that there was a level where there was no up staircase generated.


You can get around that, you just need the right cursed potion - or does that not work if you have the Amulet?


You'll still be affected by the mysterious force if you're in Gehennom, but a cursed potion of gain level will work.


I played once without cheating but death at every turn mode is kind of harsh.

Cheating, I can play every class to ascension and see everything the game has to offer without needing anti-depressants.

It would be nice if they had a difficulty level setting instead of defacto Nightmare.


Plenty. Once you're well-spoiled and have a few months of practice, it's certainly doable. I've ascended with every class (though only two with the most recent release, which is definitely harder).


Sure. People do that all the time. It's easiest if you play on a public server. For two reasons:

- people on #nethack on freenode can give you advice - you are less tempted to cheat


I haven't played nethack 3.6, but you can beat nethack 3.4 routinely if you play it a lot. Yes, a standard run becomes easy when you know how to do it, and you seek greater challenges (conducts).


There are some really `evil' nearly instant wins by luck manipulation. But I guess that falls under `running in debugger', even if they don't manipulate anything with it.


No, but I escaped with the L.A.M.B. in Mission: Thunderbolt, so I consider that close enough. ;)


Yes, I've ascended four times. I had read all the spoilers, though!


I never could get into NetHack. Even today I find the game off-putting and I love rogues. I can't decide way. I think its a combination of the interface, targeting system, and spoiler knowledge required.

ADOM was my first love around 1995 I believe. It recently has had a revival but it's still showing its age particularly in the interface. I don't expect Rogue interfaces to be easy but I do expect them to be semi efficient since you are using a keyboard.

Really the only classic rogue games today that have decent interfaces (control input) that I like are Brogue and DCSS.


The thing about Nethack is that it isn't so much a game as an elaborate joke. You don't win by being good, you win by memorizing all of the tricks. And it's only fun if you play on #nethack on irc.freenode.net, because then you can kibbitz with other players, they can watch your game, you can fall into addiction together, laugh about ridiculous situations involving cockatrices, etc. It gets boring after you win a couple of times, there isn't really much difference between the classes.

I thought DCSS was boring, 15 runes is way too much of a slog and that's with an easy class. If it wasn't so grindy I would like it a lot more, the skills are fun.

ADOM is similarly just way too long and you can't reasonably beat it without spoilers.

Brogue is perfection. You should try playing in the weekly random seed contests on the forum.


>I thought DCSS was boring, 15 runes is way too much of a slog and that's with an easy class. If it wasn't so grindy I would like it a lot more, the skills are fun.

It's only 3 runs for minimal ascension, right? It's as grindy as you make it..


Does anyone know how large the codebase is?


sloccount says:

    Totals grouped by language (dominant language first):
    ansic:       233396 (95.05%)
    cpp:           7250 (2.95%)
    yacc:          2846 (1.16%)
    perl:          1161 (0.47%)
    lex:            579 (0.24%)
    sh:             210 (0.09%)
    awk:             90 (0.04%)
    sed:             11 (0.00%)
EDIT: That's the recent version 3.6.0

EDIT#2: Here's the cloc output:

    https://github.com/AlDanial/cloc v 1.66  T=1.76 s (266.7 files/s, 181757.6 lines/s)
    ---------------------------------------------------------------------------------------
    Language                             files          blank        comment           code
    ---------------------------------------------------------------------------------------
    C                                      271          24996          32675         220107
    C/C++ Header                           159           2950           4398          18318
    C++                                      5           1033           1097           6070
    yacc                                     2            320            146           2846
    Perl                                    11            280            501           1171
    Windows Resource File                    5            164            175            909
    lex                                      2             37             58            484
    DOS Batch                                3             43             14            327
    R                                        1              8              6            287
    Bourne Shell                             4             34            118            214
    Windows Module Definition                2              7              0            141
    Pascal                                   3              2              0            137
    awk                                      1              6             58             90
    sed                                      1              0             12             11
    ---------------------------------------------------------------------------------------
    SUM:                                   470          29880          39258         251112
    ---------------------------------------------------------------------------------------


cloc (http://cloc.sourceforge.net/) improves over sloccount.


I believe this is the official git repository: https://github.com/NetHack/NetHack


I consider myself fairly good at roguelikes, but surprisingly I only have one Nethack ascension. For some reason I'm just not as motivated with that game as I am with DCSS or Ragnarok/Valhalla.

Most of the time though I just play Brogue. Item identification through use and the game trying to provide everything you need to win let's me optimize around the items I get and not optimize around some set strategy.


I did enjoy long hours playing Nethack.

But you know, Rogue was win-able.


My problem with Nethack was that it actually becomes too win-able, once you know the dominant strategy. There is very little variability in building a successful "ascension kit".

Early game strategies can vary and some can be quite fun (healer/pacifist run) but in my experience the "sameness" sets in once your strategy becomes "step 1: get wand of wishing".

Of course you don't HAVE to use that wand. But it's there.


I think my favorite games are when I don't have a wand of wishing, but I still end up obtaining most of a decent ascension kit, anyway. It's very satisfying in a way that few "grinding" games are. Especially that moment of getting dragon armor "the hard way".

I think knowing what the ascension kit contains doesn't necessarily break the fun or the challenge of the game. It just makes it possible to win (whereas, while flying blind, you probably won't win the game given a normal human life span and a normal working adult's amount of available free time and willingness to keep playing and experiencing YASD after YASD).

I've seen folks suggesting NetHack is not a good game, because it requires so much spoiling in order to be winnable. But, I kinda enjoy reading the lore. It's part of the game for me; just because it happens on the internet rather than in the game terminal doesn't make it less fun.


Slightly off-topic tangent:

>I think knowing what the ascension kit contains doesn't necessarily break the fun or the challenge of the game. It just makes it possible to win (whereas, while flying blind, you probably won't win the game given a normal human life span and a normal working adult's amount of available free time and willingness to keep playing and experiencing YASD after YASD).

I didn't know what "YASD" meant so had to search it. Neat! I learned something new.

And on that same note, there is an entire game based entirely around YASD/YAAD! "I Wanna Be The Guy" a game about dying in a million different unpredictable and stupid ways combined with many ways to kill yourself through user error or forgetfulness.

I'm not sure if the completion of IWBTG is at all comparable with NetHack as I'm not too familiar with NetHack.


It's also about memorizing the tricks. I would recommend finding videos of it from Awesome Games Done Quick or Summer Games Done Quick. Bonus! An even more challenging variant exists: I Wanna Be The Boshi.

Here's the Boshi speedrun, it's entertaining even if I would never want to play myself.

https://www.youtube.com/watch?v=b8GlqtSJxmk


> I've seen folks suggesting NetHack is not a good game, because it requires so much spoiling in order to be winnable.

In fact, there is one such person commenting here! To them, learning what can happen in the game is cheating: https://news.ycombinator.com/item?id=11523094

This makes all the sense, to me, of excoriating people who want to know the rules of chess before starting to play as "cheaters".


I sort of agree with your point but your analogy with Chess is not a good one.

Chess is played with another person. Not that it is possible but reading spoilers and looking at source code is sort of like cracking open the persons brain to figure out what sort of general strategies and tactics they will use on you... it is not equivalent to learning the rules chess.


> reading spoilers and looking at source code is sort of like cracking open the persons brain to figure out what sort of general strategies and tactics they will use on you...

No it isn't. That would be running the game in a debugger so you know what will happen. Learning the rules of nethack just tells you what can happen; this is absolutely the norm for everything else you do.


One metagame I enjoyed a lot was to puzzle out scrolls and potions. It requires a lot of spoiler knowledge, but it's still a puzzle.


I felt Sporkhack fixed most of the problems I had with vanilla nethack. Wishes are harder to get, Elbereth is nerfed, ESP is nerfed, ascension kits are less binary, Gehennom is less tedious, Vlad is no longer a pushover, etc...


And that gehennom was boring. For two reasons, it was repetitive, and for the reason that you had already secured the win when you got there.


You might want to try SporkHack. The goal of SporkHack is to remove guaranteed win strategies, while making the game not harder (and perhaps even easier in some instances) for less spoiled players.


Not me.

In the 80's and 90's, I decided to do other silly things with my life, like becoming a professional guitarist and being a Dad.

I know I know...how irresponsible. :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: