Posts for ais523


Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Because it's relevant, I've checked the source, and in-game tests, for the timing of prayer. It seems that prayer costs 3 turns and 1 action.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
errror1 wrote:
for horizontal movement wouldn't Teleportitis and insane luck be the quickest?
Not in the endgame, where horizontal teleports are blocked. EDIT: And vertical ones, for that matter.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I don't see any reason why it would be a great burden to spend all the coins and collect them; you could spend on the signposts as you went around the map (probably leaving the backgrounds for the end), and it might even help reduce lag or at least make route planning a little more interesting. Nobody wants to watch the player running around spending all the coins right at the end, but there's no reason to do it that way, because it's almost certainly suboptimal. And when the game has an in-game definition of 100%, why not use it?
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
thewumpus wrote:
My sympathy goes out to whichever poor soul ends up having to calculate the shortest route to the portal on the Plane of Water.
Sequence break time! The fastest route is clearly to drown and be lifesaved, "popping out" into the bubble which happens to contain the portal. (I've wiztested this sequence break; it seems entirely possible in a TAS, and would even work in realtime if not for the luck manipulation required to end up going forwards rather than backwards.) For the other Planes, it's less obvious. The "stuck" major trouble plus prayer is one potential way to do Astral, if there's some optimal way to get trapped behind boulders (wishing would work but is slow); I'm not sure if it's faster than the "traditional" jumping+teleport enemies mechanism. (I need to check if prayer takes five actions, or five turns; there'd be quite a difference in a minimum-turns speedrun, although not in a minimum-keystrokes speedrun.) On the planes of Earth and Fire, it'll be a matter of manipulating the portal as near to the starting location as possible, and travelling there as fast as possible (possibly via jumping, which would require being a Wizard). Air I'm not sure about, though; the game forces the player and the portal to start at opposite ends of the map, and thus finding a sequence-break to get from one end of the map to the other would probably be a lot faster than having to walk all the way across, without even the opportunity to jump!
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
It's probably best to count the time after turn 2000 in time-consuming actions; that abstracts away the effects of bonus speed turns, air elemental form, riding a hasted spurred-on warhorse, etc, and is likely to apply whatever goal we aim for (except possible pure realtime, but it may be relevant even then). To start with, we need a call to adjalign() with a positive quantity on or after turn 2000; on is obviously faster. There are a huge number of places it can be called, but all of them seem to take nonzero time. Thus, it's one action (the first on turn 2000) to gain enough alignment. From the Quest to the Sanctum goes as Kerio has described, I think; unlock the quest (one action), teleport to the quest nemesis (one action). I'm far from certain it does cost one action to actually kill the quest nemesis, though; after the teleport, there would be an opportunity for a monster's turn if the monster had the right speed (I think; someone check me on this...), and a stray monster (not the player, not the nemesis) could potentially try to attack the player with a wand or similar weapon and hit and kill the nemesis by accident. It would be horrifically unlikely, but hey, that's what luck manipulation is for! From then, it's one action to move to and pick up the Bell (using autopickup); if playing a Wizard, the Eye could be picked up on this turn (any other class could, and would have had to, wish for it before turn 2000). One more action branchports to either the VotD or Vlad's Tower (as far as I can tell, it doesn't matter which); one levports to the vibrating square (requiring a lot of luck manipulation to land there directly rather than on the same level); then it's two actions for the Invocation (the Bell and the Book; I see no reason why the Candelabrum can't have been burning all this time). One more levport takes us into the Sanctum, next to the High Priest. Total so far: 9 actions. I'm having difficulty conceiving of a way to kill the High Priest on the monster's turn immediately after the levport (if indeed there is one at all); as far as I can tell, there are going to be no other monsters in range except monsters that followed the player through the levports (which could have been carefully pre-lured to locations in the VotD or Vlad's to "pick them up"), and the monsters would have to get a turn then (is it even possible immediately after following?), attack the High Priest that turn (due to desire for the Amulet, tameness, or due to conflict), and actually kill the High Priest. (Alternative scenario: steal the Amulet from the High Priest and die in the same turn.) Potentially, we'll have to spend an action actually killing something right then, making 10. In either case, we'll need to move to and autopickup the Amulet, making 11 actions. Next the ascension run. I'm assuming we luck-manipulate away the infamous "mysterious force", meaning that there isn't a need to be Chaotic here like there is in non-TAS speedruns (manipulating the Force away is equally difficult whatever your alignment; it's just the severity of its behaviour that depends on your alignment). The fastest way to go up, in terms of actions, is almost certainly the (rather boring and cheap) cursed potion of gain level. The minimum possible size for Gehennom (counting the Sanctum and Valley) is 20 levels, making 20 potions of gain level, and 20 actions, to rise up from the Sanctum to the Castle. An alternative method is to sequence-break, which works like this: Sanctum (level 20) -> 2 actions -> real fake wizard's tower (manipulatable to level 18) -> jump onto the portal (1 action) -> bottom of Rodney's Tower (manipulatable to level 13) -> throw Amulet at wall (1 action) -> teleport Amulet (1 action) -> #sit or levport down (1 action) -> levport back to bottom of Rodney's Tower, landing exactly on level 13 and picking up the Amulet (1 action) -> 13 potions of gain level up to the Castle (13 actions). This is a total of 20 actions, the same as the other route, and would be a lot more impressive to watch. The upside, timewise, is that it skips 4 otherwise mandatory levels altogether, which would save the time the game would take to generate those levels, and also probably has slightly less text (and incidentally, works just as well given a non-minimum-depth Sanctum, because it skips more levels to compensate for more levels existing); the downside is that it requires considerably more luck manipulation to pull off. So far, this is 31 actions to the Castle. From the Castle to the Plane of Earth, I see no reason why any strategy would be faster than simply using cursed potions of gain level on the way up (potentially landing exactly on upstairs and climbing those, to reduce the number of potions needed, or simply to reduce the very repetitive text). The minimum depth for the Castle is dungeon level 25, meaning 24 potions and 24 actions to reach dungeon level 1, and one more action to climb the stairs to the Plane of Earth if going up the conventional way (or one more action to drink the one last potion of gain level if going up the way DeathOnAStick so famously did by mistake). So the total number of actions from turn 2000 to the Plane of Earth is 56 (57 if the Nemesis can't be killed the turn he comes into vision; 55 if the High Priest can); the other thing to optimise, depending on the goal, would be the number of actions obtained per turn, which is pretty much independent of other considerations. I'll try to work out the fastest route through the Planes later. Here, we're moving horizontally rather than vertically, which gives much more scope for creativity and thus makes it a lot harder to calculate.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
rhebus wrote:
Speed-related options (depending on speed metric) include autopickup, autodig, autoquiver, pickup_types, confirm, menustyle, extmenu, mail. I don't think much advantage is gotten by setting them ingame, because if you know NH well enough to know what the option means, you can recognise when it's in effect without needing to be told.
This is mostly correct, except for "mail". On the DOS version, the occurrence of mail daemons happens at random, and thus the option does not just change speed, but also has an effect on luck manipulation.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Kerio wrote:
Shortest gametime is probably the best option, being NetHack a turn-based game; the defaults.nh file should be provided by the TASer, since there's no way to set some of the options from within the game (it's popular to set monsters in a way that shows ghosts as 8 or X instead of a blank space, and it makes some areas more interesting to watch - I'm also thinking of autopickup exceptions, which are possible to set ingame but the interface is flunky and having a premade file lets the watchers also know what's going on without having to go frame-by-frame at the beginning of the game).
I disagree with allowing custom configuration before the game starts that doesn't count towards a time limit; it would be different from every other TAS out there, every other game that wants to change options changes them in-game and takes the time penalty. Also, autopickup exceptions aren't even in the official version of NetHack (but rather, a common patch or hack on the game); you'd be playing a different game if you used them.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Ilari wrote:
As for byte-to-byte identical disk images, Nethack might be special case that syncs even with quite different ROMs. One can edit the image name in movie if one wants to try if it syncs. No guarantees that such editing will give movie that syncs.
I managed to get the Linux version to sync with the DOS version, with a few changes. If even that syncs, slightly different ROMs are likely to have no issues.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
BadPotato wrote:
That said, I didn't browse the source code of the game, but I'm sure that nethack have an action/command history with at least one entrie(last action). So, in order to evaluate how many action you get so far... maybe we could check some in game data memory or increment an "action counter" with lua everytime the last action/input is overwrited. (I don't know if this is possible if the player do the same action consecutively, but there should be a way).
Unfortunately, it doesn't work like that. NetHack uses something like three or four different and conflicting mechanisms to do what you're assuming is just the one mechanism, including things like recording keypresses; movement is handled differently from other actions, for instance. Also, the action repeat code is mixed in for the code for paralysis, and also with the code for multi-turn actions. Memory watching isn't, therefore, going to lead to a particularly sane definition of what an action is.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Another possibility for the goal, after discussion on IRC: minimum in-game turncount, minimum realtime without sacrificing turns. It's probably possible to calculate a definitive lower bound on the number of turns needed to win; and hopefully it wouldn't take a massively long time to achieve it. I've also been wondering about strategy in the endgame (where teleportation is banned and c!oGLs don't help). The fastest way to move on the plane of Earth appears to be to box yourself in with a scroll of earth, then pray, so that (with a bit of luck manipulation) your god drops you next to the portal to rescue you from your predicament. Similarly, the fastest way to move on the plane of Fire is quite possibly to fall into lava and get life-saved (although I haven't tested this). I hope that these techniques are optimal, because they would certainly be dramatic and fun to watch. (It's not often that you can "damage boost" in NetHack!)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Kerio wrote:
I'm not exactly convinced that a non-glitched any% NetHack TAS would be so entertaining to watch, because it's something the community has already watched, somehow, in nht's (2185 turns) and maud's (2239 turns) games. On the other hand, a glitched any% TAS would involve starting a tourist, wielding and then applying a cream pie, dropping and picking up things and then whacking a monster, or something like that - NetHack has a couple of serious bugs that allow for memory manipulation, involving a dangling pointer due to object destruction without cleared references.
Those are not TASes. They did not use savestates, and did not manipulate luck (except via the mechanism of starting the game repeatedly until good inventory was found, in Maud's case). They also both abused bones files. Just because a good non-TAS speedrun exists does not mean a TAS would not be interesting. A glitched any% could be a fun diversion, but would hardly show any of the game; it would consist of a few random actions on the dlvl 1 upstairs, followed by arbitrarily winning. (And it would be hard to define just what counted as a "win" in a situation where running arbitrary code is possible.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
On the subject of counting actions... There are several ways in which it's possible to count time in a NetHackish way (i.e. entirely independent of the system clock). Luckily, each can be counted objectively. The common method of counting used for "gametime speedruns" in the NetHack community is in-game turn count. This can be displayed on the screen (via the "score" option), and corresponds, objectively, to the number of times line 138 of src/allmain.c runs. This has the issue with luck manipulation explained above. Another possibility would be to count "number of time-consuming actions"; that is, counting movement, fighting, item use, etc, but not inventory check, setting options, etc. It corresponds, objectively, to the number of times a hypothetical command inserted on line 296 of src/allmain.c runs (that line is blank in the NetHack source). This has the same problem with luck-manipulation, though, as luck can be manipulated entirely via non-time-consuming actions. Another possibility is what the NetHack source terms "number of player inputs", counting any time the user gives a command to the game that returns back to the main loop. This is most easily measured at line 304 of src/allmain.c, and would count a repeated command like n20s as 20 commands; I think it also counts a "run" command, like G2, as multiple commands, though, which might or might not be unexpected, and I'm having trouble working out how it counts things like "m6" (as one or two commands). One downs ide to this method is that the number of player inputs is not easily extractable from the game, and would be hard to compare with non-TAS speedruns. (However, you could create an encode with a version of NetHack hacked to show player-input count.) Also possible would be to count various lines in rhack(); for instance, src/cmd.c line 1810 or 1813, which would both count inputs in slightly different ways. (rhack() has two jobs: requesting input from the player, and actually running the command the player requested.) Finally, you could simply count keystrokes, which at least has the advantage of being objective without a need for any modification to the source.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
rhebus wrote:
PS I'm working on a tool to simulate and explore the RNG, to indicate what the results of mkobj(), makemon(), etc would be if executed using any upcoming RNG values. Hopefully this should make it easier to farm necessary items without having to go to the trouble of repeated savestate abuse.
If you do this, remember to use the algorithm DOS NetHack uses, rather than one of the many others NetHack can use. It uses DGJPP's standard library random number generator, but happily it turns out to use exactly the same algorithm as the one in NetHack's sys/share/random.c (even the code is almost identical). My own RNG-search version of NetHack is modified to use that copy.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
upthorn wrote:
You're thinking about this the wrong way. Truncated's proposal is to change from "minimum turns" to "minimum actions", considering any command to the game as an action whether it advances the turn counter or not. Which would basically be nethack's equivalent to aiming for lowest real-time instead of lowest game-displayed time.
In that case, mightn't "fewest keystrokes" work as a goal? Similar to "minimum actions", but easier to count. (It does have the problem of typing something like "n1000k" to walk into a wall 1000 times, though.) EDIT: Kerio pointed out on IRC that repeating actions this way doesn't work on actions that fail, like walking into walls. So perhaps it wouldn't be abusable like that.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Truncated wrote:
I am in favor of a "fewest turns"-movie. About advancing the RNG by moving into a wall, perhaps this could be counted somehow, either adding it to the regular turns or counting the number of "dead" turns. Nobody wants to see someone walking into a wall 50 times. Another question for those of you who have digged into the source: are all of the levels layouts and monster placements done when the game starts? Or when you reach that level?
When you reach the level. The level graph (which level connects to which) is decided at the start of the game, but levels that actually match those connections are only generated when they're necessary. You would need to be very careful about trying to define a "minimum turns and RNG manipulations" run, by the way. There are other ways to manipulate the RNG that don't involve turn-taking actions at all (repeatedly renaming an item to an invalid name, for instance), but they're slower than simply walking into a wall and also more annoying to watch. (At least it would be clearer what was going on.) I sort-of dislike arbitrary goals, though. Would a run requiring no more than 50 manipulations per turn be obsoleted by a run requiring no more than 60, for instance, if it were ten turns faster? The reason I still believe realtime would be the best goal is that at least it's non-arbitrary, and tends to encourage speed and lack of dawdling by its very nature. (You could make a slowed-down encode on the same path so that people could see what was going on, if it wasn't clear enough.) FWIW, minimum (turns + manipulations) wouldn't be very different from minimum realtime anyway, as those are the actions that would be taking up most of the time; the major difference would be that it would be necessary to polyself into a particularly fast form to save turns (hasted air elemental seems to be the usual choice), and as air elementals are intrinsically blind, we'd have the problem of running around the entire dungeon blind that was mentioned above.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
That's a good point about the Eye. In non-TAS gametime speedruns, there's some debate about whether Priest or Wizard is faster; Wizards get the best starting inventory for a speedrun (especially with RNG manipulation involved via setting the initial real-time-clock time), but they are the only class which cannot wish for the Eye. (Wizard seems to be faster without TAS tools involved, incidentally, so maybe the Eye doesn't save that much time. An interesting additional point comes up with regards to the starting seed; NetHack's difficulty level depends on the date and the phase of the moon (which I'd forgotten about until recently). Would it be worth starting a game on the least optimal date/moon combination - a new moon on Friday 13 - in order to "play at hardest difficulty"? (If allowing an arbitrary start time, you'd probably want a neutral moon phase to reduce the amount of text that you have to skip through.) If the stairs are very close to each other, it's conceivable that walking between the stairs and climbing them normally could be faster than a c!oGL due to the smaller amount of text that's displayed. (I agree that c!oGLs are a very useful item when optimising the ascension run, though; and I've been wondering what the fastest way to manipulate the 50 or so you'd want for a TAS is. Polypile or alchemy, using a large potion shop for feed material, most likely.) There is, incidentally, a rather neat sequence break on the ascension run; I've confirmed it exists, but it's still an open question as to whether it saves time or not. The trick is to take the Amulet through the portal into the Wizard of Yendor's Tower, then teleport the Amulet out of the tower (this is the bit that's probably a bug in the game), go back through the portal and level-teleport to where the Amulet is, thus skipping several levels of Gehennom (luck manipulation could maximise the number of levels that could be skipped this way). Whether it's optimal or not depends on the length of time those levels would take to be generated by the game; if it generates them quickly than c!oGLing through would probably be faster. As for whether blindness helps, I'm not sure; that would need to be tested. (You'd get some idea of what was going on anyway due to walking into walls as a method of luck manipulation, which reveals the walls.) Being blind generally costs in-game turns when you walk over an item, but not if you know the item's there in advance and use m-direction to move. It's also possible that hallucinating is the fastest method to manipulate luck, which wouldn't work well in conjunction with blindness.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Tristal wrote:
My questions would be as follows: -How do you plan to present this TAS? Nethack doesn't really have 'frames' per se, if you input commands as fast as possible, the resulting output would be an unreadable disaster.
DOS games are emulated on a CPU which has a comparable speed to an actual DOS system; thus, relatively slow. Inputting commands as fast as possible leads to moving about 3 squares per frame on a relatively empty level; hardly unwatchable.
-What are your goals? I think the only goal should be fewest number of turns to ascend without Explore Mode or Wizard Mode or Bones Files. All three of these are obviously cheating to me.
Fewest number of turns has the problem of the optimal solution involving years/decades/centuries of luck manipulation, almost certainly. There needs to be some limit on the amount of luck manipulation, or the game will come out longer than Desert Bus. I agree that Explore Mode is obviously out (not hardest difficulty, prevents winning); Wizard/Debug Mode is even more obviously out (requires a password to enter, even easier difficulty, also prevents winning), and that bones files are either banned or massively inefficient depending on your point of view (because a TAS must start from a clean save).
-Since you have so much leeway in that you have a lot of turns before you can start the quest to prepare an ascension kit, might I suggest you also go for challenges? No wishes/genocides is probably still easy, but much more entertaining to watch. (I figure a wishful TAS would involve t1 moving onto a square with a WoW 0:2, which seems kind of boring honestly) A lot of the challenges are probably gimmies anyway...
Wishing is actually probably inefficient. Compare the difficulty of luck-manipulating a low-probability wand of wishing, plus the time spent to type in the desired wish, to the difficulty of luck-manipulating the item you would have wished for. (Admittedly, there are some things that can be wished for but not otherwise generated at random; it's not obvious that a TAS would have much use for them, though, as they're mostly good defensive items.) Wishing is definitely one of those strategies a lot more useful in realtime than when TASing. Also, if you haven't yet, you should try watching a gametime non-TAS speedrun to get an idea of the sort of strategies that work. There are normally plenty of uses for the 2000 turns that you get before the Quest unlocks (shortening paths in Gehennom, obtaining cursed potions of gain level by any means possible, etc); wasting time showing off is likely inefficient even in a gametime run (with some sort of limitation on the amount of luck-manipulation needed). In a realtime run, burning through those 2000 turns in the normal course of things is likely the best strategy, to avoid having to wait for the Quest to unlock.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
CX gamer wrote:
I've read that the RNG is affected by the time passed since january 1st 1970, so should a tas start at that time?
Probably not. There's no reason to believe that an initial seed of 0 would be any better than an initial seed of our choosing. And there is indeed likely to be a lot of RNG brute-forcing involved. The fastest method would probably be to use a hacked version of NetHack that syncs with a non-hacked version to actually make the TAS, and then just play back the input at the end. Fast brute-forcing would obviously be useful, but route planning is much more important; manipulating events of low probability, which is what takes the most brute-forcing, also takes the most realtime (unless you're very lucky) and so should be avoided at the route planning stage as much as possible. (The exception is the initial seed, which can be manipulated by setting the clock.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
errror1 wrote:
this game is so epic, I think a lowest real time would be the best. You can get closer to that 20 alignment record by killing certain monsters right?
Alignment is very easy to raise (killing more or less any monster does it). The issue is that alignment is capped, initially at 10; the cap increases by 1 every 200 turns, meaning you need to wait until turn 2000 to get an alignment of 20. If you've ever watched a non-TAS gametime speedrun, you'll see the player check their alignment (in a way that doesn't cost an action) on turn 1999, then kill a monster on 2000 and check again, seeing that it's now high enough to enter the Quest. (Note that a gametime speedrunner would be getting several actions per turn at this point; for a realtime TAS, there's an interesting tradeoff between actions-per-turn (which almost certainly reduces lag due to reducing the need to calculate monster actions) and the need to reach turn 2000 as quickly as possible so the Quest can be entered.) Because this is a major bottleneck, I've spent hours staring at the source to try to find a glitch to get round of it, but that part seems completely bulletproof (barring memory corruption glitches, which would be better used to skip straight to the end of the game). This leads to another reason realtime would be more interesting than gametime (measured in turns), by the way; having to wait until turn 2000 to do a particular part of the game is basically a massive frame rule which would render a wide range of improvements pointless. Luckily, of all the major sidequests, it's possible to leave the Quest until last (this is not the recommended way to play the game, because it's "too risky" to leave it until after killing the Wizard of Yendor, but hey, this is a TAS!); gametime speedruns always do this at the moment, using the preceding 1999 turns to do the other mandatory sidequests (taking up only a small portion of the time) and preparing for what comes later (taking up most of the time). A gametime TAS (with some sort of limit on luck manipulation delays) would look similar; at the moment, I'm not sure if a realtime TAS would look like that or whether it would do things in an entirely different order.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
CX gamer wrote:
Hi, can anyone explain what stuffed bones are, and why they won't be allowed, please?
An explanation in terms more familiar to typical TASvideos players: Bones are similar to NetHack's version of a New Game+: you can use items obtained in previous games to help you with a current game. The difference is that instead of carrying over stats from a previous game that you won, you're carrying over items from a previous game that you, or someone else, lost. The other difference is that you can't choose whether you hit bones or not; it just happens at random, thus making non-luck-manipulating speedruns on non-clean installs almost incapable of avoiding them (at least on servers with many more losses than wins, which is typically the case in NetHack). Due to the typical requirement to start from a clean install, there won't be any bones available immediately, so in order to create them, you'd have to play for a while, gaining the items you wanted, and then suicide. Such time is typically not counted in non-TAS speedruns, thus leading to artificially small times for a "bones-abusing" ascension. Ethically, I think bones preparation time would have to be added to the time for measuring a TAS; thus the realtime record to compare to would be for a non-bones-abusing run. (Still, I suspect even the best bones-abusing runs done without TAS tools will be slower than a non-bones-abusing TAS.) On another subject, doing minimum-gametime or minimum-score runs (i.e. conditions that do not cap the number of actions, or the amount of realtime taken) have the issue that optimal luck manipulation would probably take years. The easiest way to luck-manipulate in NetHack is to attempt to walk into a wall; this costs no turns, and its only effect on the game is to erode engravings on your current square by a random amount, with a random number being generated for this purpose even if there are no actual engravings to erode. (That it does anything at all is probably a bug.) When not next to a wall, other possibilities are available, but much slower; the best-known is attempting to name an item to an invalid name (upon which your "finger slips" and typoes a random letter), but I haven't investigated closely to see whether there are others. As a result, if we want a TAS that's at all possible to watch, we want to minimize realtime (maybe under certain conditions), to avoid years of apparently nothing happening. (NetHack's random number generator has a very large seed space, after all.) In order to avoid sacrificing entertainment due to the huge speed involved (and who's to say that insane speed is bad in a TAS?), it would be entirely possible to make a second encode where the game was played deliberately slowly. NetHack doesn't care about the actual time to any accuracy more precise than which hour it is; and so slowing input does not usually cause a desync, thus making it possible to see every move.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
A TAS of NetHack is something that the NetHack community have been interested in for a while, probably ever since RNG exploits (what TASers call luck manipulation) became widely known. (NetHack is one of the few games that can be sensibly luck-manipulated in realtime.) Due to some work on JPC-RR by Ilari and I, it now emulates properly, and so I'm interested in starting (or maybe in aiding someone else, if someone else is interested). As a bonus, the game is open-source and a free download, so it's easy both to test theories about how the game works, and to download the equivalent of a ROM legally. For those who don't know about NetHack, it's a very old "roguelike" game; vaguely similar to an RPG, except that there's basically no plot (mostly a plus for TASing beacuse it means no long cutscenes to sit through, slightly a minus because it reduces the opportunities for interesting sequence-breaks), and that pretty much everything in the game is random and thus luck-manipulatable (a huge plus). It does, however, date from before graphics and music were common in games, instead using ASCII art to show what's going on, possibly making it less accessible to people who haven't played it before (but good commentary could help to explain a lot). Still, it should be clear even to people who haven't played it before that something crazy is going on. Before even starting a run, there are various things to consider. One is the goals of the run: the only sensible ones are a typical any% (going for minimum realtime), a glitched any% (glitches exist in the game that allow basically the entire game to be skipped, although exploiting them is rather fiddly), and a playaround (luck manipulation lets you do almost anything in this game, including colouring colons that represent dinosaurs). Minimum gametime has been suggested, but unfortunately, as it's possible to manipulate luck without spending any gametime and the RNG seed space is incredibly large, minimum gametime would probably take several decades or even centuries to watch. 100% runs of NetHack (killing every enemy that doesn't respawn infinitely) are famously boring, and bad material for a TAS. (Incidentally, NetHack has been ported to a wide range of platforms, but out of the TASable ones, DOS is the truest to the "original" game. There are multiple versions, but 3.4.3 has been out for over five years now, with no sign of another version in the immediate future, and so has become the de-facto standard. Note that for it to emulate correctly in JPC-RR, HDPMI32 (from the HXDPMI suite) must be used as the 32-bit extender; NetHack requires such an extender to run, but is capable of using any of a range of extenders.) The major problem with a glitched any% would be figuring out exactly how to do the glitch, as it requires overwriting memory which is unfortunately in dynamic addresses. (To actually perform the glitch in question, you need to destroy a wielded or worn item in a way the game doesn't check for, such as by hitting yourself in the face with a cream pie while you're holding it.) The other problem is trying to determine what exactly counts as completing the game, as the glitch can do almost anything; does jumping right to the high-score table count, for instance? Jumping right to the end of the game with the appropriate item? Glitching debug mode on and later off again such that the game thinks it was played without using debug cheats? For a standard any%, the major difficulty would be route planning; with the ability to manipiulate almost anything into happening at the cost of time needed to luck-manipulate, there are a huge number of possibilities for possible routes. The interesting bottleneck, which gametime speedruns keep coming up against in non-TAS runs, is that it's impossible to access the Quest, which contains one of the items absolutely necessary to complete the game, before turn 2000, which puts some interesting constraints on the run. (I've checked the code around that point very carefully, and there seems to be no way around it without memory corruption glitches.) A playaround could also be interesting, especially as it could be played relatively slowly so the player could see what was going on (you can move multiple times per frame in NetHack, meaning that some bits would be entirely invisible). The scope for luck-manipulation lets you do all sorts of ridiculous things (such as the aforementioned dinosaur-colouring, but also things like manipulating monsters represented by letters to spell out words), but it might get boring after a while even with all the possibilities. What do people here think? Is there anyone here competent enough at NetHack to help with route planning for an any%? Any suggestions/comments?
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I finished watching your encode of this before you even submitted (I'm assuming the encode matches the movie file). An impressive and amusing run, helping to get the best out of the game. The game itself doesn't really live up to its promise; the music isn't all that good, apart from the music you create yourself with your weapons. Why did you skip the fast-forward around level 7 (I can't remember the exact location), by the way? EDIT: "Contains no entertainment tradeoffs but aims to be entertaining" could probably be written more clearly as "Aims for maximum entertainment without sacrificing speed", to make it clear that this is a strong secondary goal.