Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
First NetHack bot ascension (reddit.com)
196 points by ivank on Feb 3, 2015 | hide | past | favorite | 85 comments


You can watch players (and bots) play NetHack in real time:

    telnet nethack.alt.org
...then hit "w" to watch games that are in progress. You might need to resize your window, and some players might be using a different character set than your terminal.

If you want to start playing, telnet there, create an account, hit "p" to play a game and then "?" to read basic help. http://nethack.alt.org/ will keep logs of your game as well as other stats.

This post also mentions previous bot attempts such as the Tactical Amulet Extraction Bot (TAEB), which is also worth looking at: http://taeb.github.io/

Warning, SPOILERS: If you're okay with spoiling the game to some extent (e.g., solutions to common puzzles, which corpses are safe to eat, strategies), check out the NetHackWiki: http://nethackwiki.com/wiki/Main_Page


It's worth pointing out that no one ever finishes (ascends) a game of Nethack without looking at the spoilers, so they're really not spoilers, they're more like the instruction manual.

It is definitely more fun to try playing the game for several hours without reading the spoilers, but you're not going to figure out stuff like the Invocation Ritual without reading the spoilers.


There is at least one self-described unspoiled ascension, in 2010:

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

This did involve use of wizard mode (not for the unspoiled ascension itself, but beforehand for learning stuff).

People often ask how someone would learn how to perform the Invocation without spoilers. One intended answer by the DevTeam is to pay the Oracle for a series of major consultations, one of which (somewhat elliptically) explains the Invocation. The Oracle consultations aren't considered spoilers if you pay for them in-game.


Technically, the Oracle is supposed to dispense enough information to figure out most of the important stuff.

Of course, you'd have to be good enough at the game to survive to the Oracle and have the cash to pay for the major consultations. And you'd have to know that information source exists.

Since Nethack is a game where not knowing the details of some minor edge case can and will kill you dead, or deader than dead, I don't know of anyone who actually relied on that (though there may very well be someone).


Well, the Oracle will tell you about the Invocation Ritual.

What's you're not going to figure out spoiler-free are things like magic cancellation. Which is maybe not literally essential to winning, but you're going to have a tough time without it.


The beauty/terror of NetHack is that even if you play with the wiki/spoilers at hand it's still a difficult game to master and win, even survive. YASD and the RNG kill most people, and often.


Folks, do yourself a favor, and check out the bot's source: https://github.com/krajj7/BotHack/blob/master/src/bothack/bo...

It's really, really neat. Even to those of us who know little or nothing about the game, from the nested Englishy descriptors piled up into short conditions for things-the-bot-might-want-to-do, the basic strategies can be discerned...


... and then there's some things that probably only make sense if you're very familiar with Nethack:

    (def desired-shirt
      (ordered-set "T-shirt" "Hawaiian shirt"))


This one's actually not that hard to explain. Shirts can be worn under your armor, and these are the only two kinds of shirts. Normally, a shirt adds nothing to your armor class, but it can be enchanted (up to +7 safely), so it's nice to have one if you can find one. The problem with the Hawaiian shirt is that shop keepers will assume you're a tourist, and charge you extra.


> The problem with the Hawaiian shirt is that shop keepers will assume you're a tourist, and charge you extra.

Absolutely cannot tell if you're fucking with me, or if this is an actual game mechanic - and if so, why this shirt would be desirable.


> Absolutely cannot tell if you're fucking with me, or if this is an actual game mechanic

Welcome to the world of nethack! The amount of special case situations that have been programmed into this game over the last few decades are truly amazing. (Mostly because it somehow still works.)

I still remember the first time I ran into a kitchen sink.


NetHacks DevTeam are so famous for their special cases that the TVTropes article for obscure special cases was named after them. Here's the subarticle for NetHack examples:

http://tvtropes.org/pmwiki/pmwiki.php/TheDevTeamThinksOfEver...


I lost it at this entry:

> Additionally, throwing a cockatrice corpse up (<) will result in it hitting you on the head and, unless you're wearing a helmet, petrifying you instantly. Cause of death? "Petrified By Elementary Physics"

Some of these I knew, most I did not. Thanks for sharing that.


Oh my, there's some really magnificent stuff, I started giggling while reading this:

  The Quantum Mechanic monster is basically one big physics joke.
  Its attack will randomly teleport you, and eating a Quantum
  Mechanic corpse will give you the intrinsic speed ability (or
  remove intrinsic speed from you if you were already fast). Upon
  death, the Quantum Mechanic also has a small chance to drop a
  box. When you open the box, a cat named Schrodingers Cat will be
  found inside. 50% of the time, the cat will be alive, and 50% of
  the time, the cat will be dead.
  
  What brings this into The Dev Team Thinks of Everything territory
  is that if you look at the game's source code, you discover that
  unlike every other box in the game, the state of the box's
  contents (whether the cat is alive or dead) is not determined
  until you open the box and look.


Another fun one is to fall down the stairs while wielding a cockatrice corpse in your gloved hand. Or getting engulfed by a purple worm and subsequently regurgitated onto a cockatrice corpse laying on the ground, petrifying you.


Now that is one hell of a in joke...


He's not kidding, actually. This is why enchanted t-shirts are preferred for a little extra AC under your normal armor.


It's usually not a first choice, but the tourist starts the game wearing it.


* +5 safely. +7 is elven armor.


Ah right, thanks for the correction! (I bet you can guess how many G/SDSMs I've evaporated ;-) ... :'( ...)


I have no idea how to even parse this:

    (or (if (and (weak? player)
If it is a player or a weak player?

Or this probably simple function(?):

    (defn- want-protection? [game]
      (and (< (:protection (:player game)) 3) (> 15 (:xplvl (:player game)))))
It makes zero intuitive sense to me.


That first line is just the beginning of a statement that goes on until line 71. It decides whether to eat or pray if the player is very hungry. (In NetHack you can die of starvation if you don't have enough nutrition; nutrition can be obtained either by eating food[1], or in some circumstances by praying when hungry.)

The second function is easier for me to understand: it says that the player wants protection if the player has less than 3 intrinsic protection and has an experience level higher than 15. (In NetHack, gods grant intrinsic protection under some circumstances, which causes one to become better armored even without wearing additional physical armor. It's basically like a kind of magical armor on one's body that's independent of any physical object.) The idea seems to be that a player with at least experience level 15 ought to have 3 or more points of protection, and if the player doesn't, the player should try to go and get them.

If you're not used to reading parenthesized prefix notation, you might have a look at

https://en.wikipedia.org/wiki/Polish_notation

https://en.wikipedia.org/wiki/S-expression

https://en.wikipedia.org/wiki/Lisp_%28programming_language%2...

[1] In another example of NetHack's complexity, it's also possible in some circumstances to eat objects other than food, by turning into a monster that's able to eat the objects in question.


LISP-style languages are a pain to read, but it's purely mechanical: everything's in "polish notation", (function arg1 arg2), even when function is something that we would want to think of as an operator or an accessor method. So in Scala I'd write that function as:

    def want-protection(game) =
      game.player.protection < 3 &&
      game.player.xplvl < 15


Hi! Here's a few explaining words:

The first one is missing a whole bunch of context. But here's a start: The first thing inside parentheses is the operator/function, the rest are arguments/operands. This one is best viewed from the inside out, so... a method ending in a question mark is most likely a predicate, i.e. a true/false test returning a boolean. So we're testing for a weak player. Outside from there is an 'and', so we're looking to combine that test with another one (further to the right, that you didn't show). Maybe checking if the player is both weak and hungry, as that may mean he'll croak soon.

Every paren pair ('S-expression') in Lisp (err, Clojure) returns a value, so the "if" is not so much a control-flow construct as it's like C's ternary op: [ cond ? iftrue : iffalse ]. Its first argument will be a test, like that weak-hunger thing. Then you will have one or maybe two other arguments. The first is returned if the condition is true, the second one if false. There may not be a second argument, in which case the return value will be 'nil' or maybe 'false' - they're sorta equivalent anyway.

Finally, the "or" will evaluate and return its first subexpression if it's true, or also evaluate the second one if not and return that. You can actually have as many arguments to an "or" as you like - they will be short-circuit-evaluated until one of the arguments is true, or if you hit the right paren without finding a true, you'll get a 'false' ('nil' ?).

------------------------------------

The second example is a function definition. By convention, 'want-protection?' will be the name of a predicate, i.e. something that tests and returns true/false.

'game' is the single argument to that function. From usage later on, it looks to be a map, or you might think of it as an associative array, or a key-value mapping.

The first half tests whether the 'protection' value of the player, which itself is the 'player' value of the game (in C: game.player.protection, except those components are keys rather than fields) is less than (see the '<' operator on the left?) 3. The second half tests whether (I'm guessing) his experience level is greater than 15. The 'and' combines those, i.e. if he's at least a lvl 16 player and his prot value sucks at less than 3, he'll want protection (so return 'true').


At the risk of losing my nerd card, I've never played Nethack.

I read the reddit thread, and while it was in English, it made not a lick of sense to me. Now I know how non-engineers feel sometimes. :)

BTW, can someone tell me why this is such an amazing accomplishment? I know Nethack is very old, so is this a case of a complex problem space or just no one has tried before?


It's incredibly complicated. That's probably less of a big thing now than it was in the 80s or 90s. In the 80s or 90s it was just amazing that a game could be that intricate.

The sigil-based graphics are part of what make the complexity possible. And - the dev team have coded in all manner of combinations of things, many of which get you killed in plausible/amusing/annoying/complicated ways.

There's a culture of players looking at the source code while they play. The source is really antiquated C.

If you decide to have a go, I'd recommend printing out a copy of the manual, avoiding the spoilers for the first couple of dozen games at least. Just try to learn your way around the dungeon just from that manual, and experience the complexity and sense of mystery.

It's not a particularly 'good' game - grindy. A vogue at the moment in roguelikes is for games with as little complexity as possible. For example, I've spent far more time studying the C code to this game than I have playing it: http://trogrd.tumblr.com/post/61949503427/zoo


> The sigil-based graphics are part of what make the complexity possible

I don't think that is relevant, I have played the GUI version for many years, and it's perfectly usable.


This is the reason those games can be so complex. Want to make a character fly 10m? Just move his character ('@') 10 grid steps. Want to make a camera? A char 'c' will do it. It's awesome that this allows you to easily program whatever you wish but you still get a visual representation of what's happening.


An Expansive Camera in Nethack is the character '(', not a letter 'c'.

A letter 'c' is a cockatrice or a pyrolisk; those are both quite dangerous so I suggest you learn to recognize them for your own good.


The intended point was probably that they enabled the complexity in the interface pre-GUI.


There are a couple of things. First of all, just synchronizing the I/O is hard (there are good comments in the reddit thread there).

Combat in non-enclosed spaces is hard do to ranged attacks line-of-sight, etc.

I'm slightly surprised it has taken this long to do with pudding-farming, as that lets you get plenty of really powerful items (as well as other benefits from sacrificing the corpses)[1]. There are a few parts of the game that are super hard for a bot even with the equipment of pudding farming, but I would have thought a few thousand runs would be enough to luck through them with simpler rules.

1: Puddings are creatures which can split in two when you hit them, and each new pudding will count as a corpse (which you can sacrifice to your deity for benefits) as well as having items. I don't recall all the details, but some of the rare drops from black puddings are really powerful. The idea is you take a really crummy weapon, so you don't accidentally kill the pudding and then hit it over and over again to get lots of treasure. In this run it looks like the bot used a skeleton key as a weapon.

The main deterrent for a non-bot player doing it is that it is really boring (There's a quote somewhere from the devs that is roughly "we implemented a penalty for pudding farming, it's called 'pudding farming'" Obviously the other deterrent is the prestige of beating the game without pudding farming, and that does apply to bots too.


After watching the ttyrec of the bot ascension, I was surprised to see that the bot farmed on a sink, not an altar, and hence used the puddings only for item drops and not for sacrifices.

That makes me a lot more optimistic that the bot is close to being able to ascend without farming, especially since I believe its character already had multiple amulets of life saving and a bag of holding even before starting to farm.


I spent quite a lot of time playing ADOM, which is a roguelike like Nethack, and I can attest to enormous complexity and devilish difficulty level of such games. They are so huge - in terms of items, locations, NPC, quests and everything else - that you really can't even imagine it without a couple of weeks of playing with them; it then takes years to complete the game for yourself, and if that's not enough there are challenge games (not using certain items, never eating, finishing game naked, stuff like that).

The essence of roguelikes is that of Diablo and other similar games: you're walking around killing things, picking up items and advancing levels. In most roguelikes, however, your freedom of movement, details of the environment, number of choices to make are on a whole another level. Why have 3 (or 5) PC classes, when you can have 20 or 22, each really unique in strengths and weaknesses, utilizing different tactics and strategies? And PC race matters too, so the number of available combinations is ~(12 times 22) before you even started playing!

One in-game example of how detailed and complex roguelikes tend to be: some levels are flooded and you can't get past water without knowing how to swim... Wait, no. You of course can go into the water, no matter the swimming skill. Without swimming skill - and with swimming not trained very high - you'll lose some HP due to drowning. You can reduce the chance of drowning by leaving your heavy equipment on the ground. On the other hand, going into the water in this shiny metal armor will make it rust. After a while. Note that there are metals that do not rust, these are safe. Also, the scrolls and magic books, if not wrapped in a waterproof blanket, become unusable after some time in the water. You also obviously don't want to try lightning based magic when standing in the water. But hey, you can just build a bridge! If you have a skill for it, a hatchet and some trees nearby. Or, and this is my favourite way, you can just freeze the water with (most of) ice based spells. But don't do this when being chased by a fire using enemy: your ice bridge can easily melt. Also, keep an eye on how much your equipment weights: bridges made of ice are not very solid. You could also get a pickaxe and try to dig your way around the water, but this takes time, so maybe a wand of digging would be better...

And that's the number of options available in only one of hundreds of different and interesting situation the game puts you in. It's an experience as close to classic table-top RPG as possible without a human as a dungeon master. It also makes you forever unimpressed with "interactive environments" and "complicated plots" of modern games.


>It also makes you forever unimpressed with "interactive environments" and "complicated plots" of modern games.

Dwarf Fortress ruined modern gaming for me. I keep thinking "Why do they keep making new games when they could just make the old ones bigger and better?"

People love it when their games evolve over time. A new, small feature every week will keep people feeling refreshed and invested in the game.


Arenanet seems to be trying this with Guild Wars 2. Not sure about how well it is working out though.


Nethack is fiendish, and you only have a single life. The dungeon is procedurally generated. There are techniques to ascending but it's hard even for people to do, let alone programming a bot.

You get potions, scrolls, weapons etc but have no clue what they are until you use them (some scrolls will help you identify what other things are in advance). Nothing about them will give you any clue (scrolls have names like "AFEWA AWEBRPO", potions are just colours etc.) To survive you need to use them though. You need to drink, but the potion might be one of weakness, poison, blindness, confusion etc. You need to eat regularly, and food is scarce, but it also might poison you. A ring of slow digestion is helpful there, but until you use an identify scroll on a ring you won't know what it is. It could end up being a ring of attract monster, for example.


There are lots of advanced techniques for identifying things. If you have a pink potion you can throw it at a monster, and based on the monster's reaction you might now know what pink potions are. Most of this stuff would be hard to learn on your own though.


You can also identify rings by dropping them down wells—different rings fall down (or don't fall down) the wells in different ways—and identify wands by writing on the ground with them. Definitely hard to pick up any of that on your own, though.


I think you mean "sinks" instead of "wells" (there's at least one behavior in NetHack that's inspired by the name of the sink, and they were reputedly included in the game so that NetHack would contain "everything, including the kitchen sink").


Good catch, my mistake. Thanks.


You can also GET rings from sinks... if you know how.


I'd like to echo comments made elsewhere that this is a game-AI result so exciting that it deserves to be published.

Various people have used (a version of) Super Mario Bros. as a demonstration of planning AI recently. As a result, we see that people can write planning algorithms, based on imperfect information about the game state, that can complete a straightforward Mario level with some competence, but not up to the level of competence of, say, a typical '80s child.

Ascending in Nethack is an insanely difficult accomplishment that few people ever achieve. The game is much more complex than a Mario level, though perhaps the non-real-time aspect of it allows for more sophisticated planning.


Nethack is a very complex game, and takes a very long time to understand enough to ascend (beat the game). Think of it like dungeons and dragons on crack, with endless possibilities and variables.

The fact that someone wrote a bot to think on its feet enough to do this, is astonishing.

You should try it out in your free time, check out alt.org, there's a server where you can play and the irc channel #nethack on freenode (I believe) is very helpful and there's a few wikis available.

But beware, it becomes very addictive. The 'one more turn' rule applies heavily here.


Probably D&D with a human dungeon master would allow more possible actions, in the sense that NetHack only allows (a)pply, (C)all, (d)rop, (e)at, (E)ngrave, (f)ire, (P)ut on, (q)uaff, (Q)uiver, (r)ead, (t)hrow, (w)ield, (W)ear, (z)ap, #dip, #invoke, #name, #offer, and #rub actions with specific items in your main inventory (and most of those actions won't be applicable to most items most of the time). A human DM might allow many more verbs, like stacking things on top of one another, repairing items in a nonmagical way, building new devices or modifying the functionality of existing devices in a nonmagical way, pouring a liquid onto a specific object or dungeon feature (including one that can't be picked up), and a lot more.

I agree that the bot ascension is an astonishing achievement, and one I didn't expect to see for many years!


Then again, human DMs can also be outwitted by careful specification of actions. Like how someone managed to win the original Tomb of Horrors.


Do you have a link with some backstory on this? I'd be interested.



Thanks for the follow-up.


Was that module ever won by the first groups to encounter it?


I have no idea.


There are two major things that can make AI difficult: having too many options to choose from, and having difficulty figuring out which options are better. NetHack is nasty in both of these dimensions.

• Many options are available:

- Many different actions available at any given time (move, attack with a weapon, Zap using a wand, Quaff a potion, Wear a different piece of armor or equipment, Wield a different weapon, Read a scroll, Spellcasting, etc)

- Many different options available within each action (place to move, spot to place a fireball or lightning bolt, place to teleport to (!!), which piece of armor or equipment to use)

As a very rough estimate from someone who hasn't played NetHack much, I'd guess that a mid-level character might have 10^4 or so options immediately available to them at any given time, though many of these are combinatorial results of having thirty different spells that can be targeted on any of the hundred or so visible tiles. The branching factor for Chess is about 10^1.5, and Go is around 10^2.

• Options are difficult to evaluate:

- On an immediate mechanical level: If you want to use teleport, what's the best place to teleport to? If you want to cast Fireball, how do you use it as effectively as possible? If you want to shoot into a group of enemies, where do you aim?

- On a tactical level: Would this monster be more effectively dealt with by spending some energy to cast Fireball, using a charge from your Wand of Magic Missiles, or attacking it in melee and risking taking some damage?

- On a strategic level: Would it be more useful to clean out the rest of this level or immediately go down the stairs? What set of armor and weapons would result in the best chances in melee against the enemies I expect to encounter in the near future? Which of my items should I cast Polymorph on to maximize the chance of receiving a random item that would be useful to me?

- On a mathematical level, NetHack suffers significantly from the horizon problem. That is, many immediate tactical or mechanical decisions have strategic consequences that require an AI to simultaneously consider all of the above problems. You can't just have a mechanical planner, a tactical planner, and a strategic planner; you have to have a unified AI that can realize that it'd be a good idea to not kill that one enemy in the corner because it can kill it and eat it two hours later on its way back up to the surface.

This is an even nastier issue. Even humans can't do this effectively for NetHack. For example, if you look on the NetHack subreddit, one of the current top posts is "Help me make it out of this group of enemies alive!", and everybody who comments has a different idea of what the best solution is.


To be fair, there's not (that) much worry over which armor to use, it's more a matter of knowing what is and isn't enchanted and to what degree. There's a pretty much set kit for each class that you want to work towards.

My neutral human wizards always have either Frostbane or Grayswandir (Magicbane as backup/for MR), robes, silver dragon scale mail, boots of speed, enchanted T-shirt, gloves of dex, etc.


Frosty and Swandy are a waste for a wizard, especially because you have to #offer mountains of sacrifices to get the skills unlocked. Mbane enchanted is enough of a weapon on its own along with attack spells. And you can get dagger skill up to expert easily.

Those swords barely do any more damage than Mbane even in the hands of combat classes.


I never seem to have that much trouble unlocking them if I've gotten that far.


Of course, that's all the stuff you have after the hard part is over. Getting there and surviving the early part of the game is where all the complexity and diversity comes in.


If you find this interesting, take note that people were writing bots to beat Rogue over 30 years ago: http://en.wikipedia.org/wiki/Rogue_(video_game)#Automated_pl...


The roguelike Angband has had a bot built into it for at least 20 years... I don't know that it has ever actually beat the game, though. I used to run it as a screensaver on, I think, Windows 95. Was interesting to watch, but it wasn't a terribly clever bot.


Good stuff.

There's a bot with several wins in Dungeon Crawl Stone Soup, another roguelike. The combinations it has won are pretty rote, but it's still very impressive, particularly since I don't think it's even capable of knowing that much about the game (it uses Lua handles to pick up information about the state and I believe there's a fair chunk of the game that isn't exposed that way.)


> the bot has already managed to reach Rodney without farming and can get to the Castle and beyond fairly reliably, maybe 1 in 10 runs or so

so, the bot is also a better player than me.


One of the difficulties for a human playing Nethack is remembering all the potions and amulets and wands and scrolls and rings and monsters and their effects and many, many, many combinations. In a way a bot should have an easier time since it has basically unlimited memory.


True, also most player deaths are due to obvious mistakes - YASD (Yet Another Stupid Death), mistakes that the bot will only ever make once and then be programmed to avoid.


Yeah, I guess a major advantage for a bot is being totally disciplined and never impatient. "No, I won't read that yet; yes, I will #untrap three times; no, I won't go down these stairs with the cockatrice corpse; no, I won't eat this giant while satiated" and so on. It can be hard for human players to have absolute discipline about not doing actions that they know could theoretically cause instant death.

Also, the bot can safely walk along the edge of lava without falling in due to a typo. :-)


Yes and bots are capable of using techniques that are far too onerous for humans to pull off such as retracing your own steps perfectly whenever the need to backtrack arises. Humans invariably make mistakes while doing this and wander into traps and die.


Reading through the comments, I realized that people even do speedruns in Nethack... impressive.


Why is it surprising? (And I do not at all mean that in a snarky tone. I've been lurking in the nethack community for so long that it seems perfectly natural to me)


The speedruns most people are familiar with are the product of someone playing a meticulously planned route over and over again until the execution is almost perfect.

With the more popular games it reaches a point where they are barely even playing the game anymore, instead running on auto-pilot and hoping to make the least mistakes and get the most favorable RNG with minor things like enemy AI patterns.

Speedrunning a game with roguelike randomness is a completely different beast, requiring actual mastery of the game as it was intended to be played.


> requiring actual mastery of the game as it was intended to be played

I agree here, but I just want to emphasize that Any% speedruns (runs where you purposely exploit glitches or flaws with the game engine to trigger the final cutscene as fast as possible) still take incredible amounts of skill. More skill than playing the game as it was intended to be played, in a lot of cases. The current Ocarina of Time route involves exploiting several glitches that require pressing the correct button combination on a specific frame (N64 games run at 20fps), jumping at just the pixel perfect angle to slide through a model's corner/collision tracking, etc. Much more difficult stuff than beating the game straight through. Super Monkey Ball 2 (Gamecube game) speedruns require pulling off maneuvers trickier than anything the levels were explicitly designed for, the difficulty of which is hard to overstate. That game is hard. Speedrunning a game with true RNG everywhere like Nethack is definitely a beast of its own since you can't memorize routes, but even runs with completely static routes are incredibly difficult to pull off.


Absolutely, I didn't mean to imply that rote speedrunning doesn't require skill. It's just a different kind of skill, and a lot of patience.


Probably because to the the person familiar enough with NetHack to have played it but never immersed themselves in the community, ascension seems hard. A speedrun is one thing, doing it on a game many can't even win is another thing entirely.


I add to the point: doing it on a game many can't even make half way through.


My first nethack game? I was locked in a room without door and was killed by a falling rock. I don't even know why I ever played another game :-) And yes, there was a big gap until the next game. As a beginner that's all you ever do, die, die, die.


Similar experience with ADOM, it even has a special location which becomes reachable only after the game killed your 100th hero. Got to this point in a few days back then, I wish there was something good for 1000th death, that was when I started to know what I'm doing :)


To be fair, the second half of the game is so easy it's almost trivial. The hard part of the game is getting half-way.


Ascension _is_ hard. Or at least it still seems to me, seeing as I've personally never ascended :).


People do blindfolded runs of Mike Tyson's Punch Out! Which is also impressive.


People do ascend blindfolded characters in NetHack.

Such an ascension is aptly named "Zen Ascension".

http://nethackwiki.com/wiki/Zen#Notable_Ascensions


Blindfolded Zelda: OOT is a thing too, they did it live at AGDQ this year.

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


Really amazing achievement, kudos to duke-nh!

For those of you who are looking to get into nethack, or play it all the time... (shameless plug) I've been working on a project for some years that helps ease some of the monotony of playing.

https://github.com/samfoo/noobhack

For example, it keeps track of where you see shops, so you can come back, maps out levels and what you've seen on them, and auto-price identifies things you pick up.

There's a rudimentary plugin system so you can write your own extensions (more coming soon).


Video of the winning game: https://www.youtube.com/watch?v=unCQHAbGsAA

The author's list of milestones illustrates the key components of this achievement, as well as some limitations:

https://github.com/krajj7/BotHack#milestones-reached

Awesome work, Jan Krajicek!


That is truly impressive. I remember what a colossal achievement my first ascension felt like. Nethack is such a complex game, but the most important skill is probably patience and planning single moves, something a bot can be perfect or very good at. Now I feel like playing again.


The bot can also do things that would bore a human player to tears, such as automatically switching between items as the need arises.


Not to mention the farming. I could never do that.


I look forward to hearing about a non-farming bot ascension (as the developer of this bot has suggested is possible!).


I'm the creator of a Rogue-like game (Dead By Zombie) and love NetHack, consider it one of the masterpieces of game design I've tried to study and learn from. Lessons baked into it both in terms of game design and software. Has a lot of bang per buck, in terms of fun/value per LOC, and per square inch of screen real estate.

If anybody gets introduced to Rogue-like UI for the first time because of this article, and likes it, I also recommend checking out Dwarf Fortress. Similar but very very different in ways that people tend to either love or hate.


I'm one of those people who are just now taking a look at this genre. Can't believe how cool this is.




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

Search: