(Link to video)
Submission Text Full Submission Page
The idea of beating a game with no input is a compelling one, arguably allowing for perfect speedruns. However, most games in which this is possible are rather trivial. More interesting still is the idea of a game which can be completed without ever even gaining control of the character; although a game that could be won this way would likely be pointless, it turns out that there are highly-regarded games that can be lost this way.

About the game

NetHack is an old yet highly regarded RPG. Despite originally being released in 1987, it is still widely played nowadays; the most recent version, 3.4.3, was released in December 2003. Two of its properties make it particularly suited to TASing: the entire game is balanced around the idea that you cannot undo actions and cannot go back to save (and thus tends to be broken wide open merely via the use of savestates), and almost anything in the game can be luck-manipulated without spending in-game time (although it can take some time in real-time), meaning that almost anything can be caused to happen.

Replaying the run

This run plays back on JPC-RR version 11.4, but some settings changes are needed. In order to get the game to emulate correctly, you need to turn on the "shorten pipeline on self-modifying code" option (although the emulator should turn it on automatically); this is absolutely necessary as NetHack assumes the processor has a shorter pipeline than JPC-RR uses by default. Additionally, NetHack is a DPMI game; the normal way to run these on real hardware is to add a DPMI extender (such as the one that comes with Windows, or CWSDPMI) to an otherwise normal DOS system. The same thing can be done on JPC-RR to get it to emulate such games, but unfortunately most extenders don't emulate correctly. Thus, I added HDPMI32 (available via the HX website), and run it on the emulated system, to allow NetHack to load; it's the only DPMI extender I know that JPC-RR emulates correctly. (The choice of extender should be irrelevant to how the game plays, although may affect sync slightly due to lag as the extender is loading.)

Game objectives

  • Emulator used: JPC-RR 11.4
  • Dies before gaining control of the character
  • Contains speed/entertainment tradeoffs
  • Takes damage to save time make the run possible in the first place
  • Uses death as a category
  • Does nothing but skip or space through cutscenes while the game actually runs
  • Ends input as soon as possible under the above restrictions
  • Does not pass Go

Comments

Following a discussion on IRC (which I thought was between me and Nach, but if it was I can't find it in my logs), the topic came up of which endings to a game are really considered wins. The NetHack community only considers the best ending, "ascension", a win; but the game itself does not define what counts as a win or a loss, and the comment /* super big win */ in the source code next to the code for ascension implies that there may well be other, less super big, sorts of win.
I'm not entirely sure if dying before you gain control of the character counts as a win, but it has to count for something.
Of course, a game where you routinely never gained control of the character would not really be particularly fun to play; in fact, it would be considered more of a video than a game. (Admittedly, this seems to be the goal of some modern RPG designers, but NetHack is not like that.) In NetHack, a death this early has an extremely low probability (almost certainly below 1 in a million, although it's hard to calculate); although the exact rerecord count was lost in a computer crash, I spent over 4 million (and probably around 4 and a half million) automated rerecords aiming for it, using nethack-tas-tools (the project I'm working on with dwangoAC to produce our joint serious TAS of Nethack, which is still a WIP; although I think this run was done entirely with my own code). The run was converted to JPC-RR format after it had been produced.
Everything happens so fast that it may be difficult to follow what's going on, so here's an explanation: first I TAS the FreeDOS boot process in an attempt to end input as soon as possible, then I start HDPMI32 and NetHack, then I load the keyboard buffer with keystrokes necessary to skip cutscenes and clear message boxes, then I end input, then the game loads. (It's a pity JPC-RR doesn't put up the "Movie end" overlay.) The speed/entertainment tradeoff in the run is that I don't skip the game-over cutscene, but instead space through it as fast as possible; I could and the run would go slightly faster, but then it would be almost impossible to see what had happened at all. (Change the last three presses and releases of space, to a press and release of escape, to skip that cutscene too and get a marginally faster run.) In the game itself, a female Tourist comes into the dungeon, finds a shiny artifact silver saber (Grayswandir) on the stairs she entered by (probably the most unlikely thing to manipulate in the run), picks it up (the default options pick up all items you come across), takes damage from touching the artifact (a 1 in 4 chance for an unintelligent crossaligned artifact like the lawful Grayswandir for a neutral Tourist; there are no intelligent artifacts capable of spawning there), and dies from the damage (around a 52% chance for a starting Tourist due to their low starting hitpoints, much lower or even zero for other characters). The game's turn counter says 1, but it always says that before the first turn, and we get the "Do not pass go" message that normally comes from dying on the first turn, a whole turn later than when we actually die (although the message never appears onscreen, as it's skipped by the Esc in the keyboard buffer).
The luck manipulation itself was done by changing the system date and time, which are used to seed the random-number generator.
Some questions people familiar with TASing might be wondering about: the reason there's an unusually long pause after the "e" of "nethack" is that I was tab-completing its name in order to be able to fit more into the keyboard buffer and end input earlier (although it delays the movie end somewhat); the reason that the character selection is specified on the command line, rather than in-game (which would be faster in terms of ending input) is that I don't want to have any control over the character at all once the game's loaded; and the reason that the Tourist is female rather than male is a parser abuse (the "correct" way to specify female is to write "-fem" at the end of the name, and to specify male is to write "-mal", but "-f" is recognised as female and "-m" as choosing a Monk, so the gender was forced to save one keystroke).
Some questions people familiar with NetHack might be wondering about: the item on the starting stairs is picked up via autopickup (which is non-time-consuming (thus the blast happens before the first player action of turn 1, on an effective "turn 0"), and controlled by a game option). The default setting for autopickup in the DOS version of NetHack 3.4.3 is on, thus I had no need to change the options; this run uses the default options. Additionally, there is a bug in NetHack 3.4.3 that causes items on the starting stairs to be autopicked up even if the autopickup option is turned off, so the setting of the option is actually irrelevant to the run. Although I haven't checked, I believe that a sensible pickup_types option setting (that excluded weapons, almost universally true among NetHack players who customize it) would prevent the artifact being autopicked up.

Probability of this happening

The item generation algorithm is actually room-based; it seems that apart from a few special cases (which don't apply here), and excluding certain item types like chests and scrolls of teleport that have other codepaths via which they can also generate, there is a 1 in 3 chance of items in any given room, with a 4 in 5 chance of one item, 4 in 25 of two, 4 in 125 of three, 4 in 625 of four, etc. (Things like stacks of 7 candles count as just one item, internally.) Then a random location in the room is chosen for each item, in order to place it.
In order to determine the chance that we get an item on the upstairs, we need to calculate the average area of a room. The level generation algorithm makes this very hard to calculate, as it depends on a huge number of things, but on dungeon level 1 it seems most likely to use the "completely random" algorithm, which it tries first before constraining things in order to increase the chance that the room can be placed. This gives a width of 3 to either 14 or 10 inclusive, depending on how much space is available; and a height of 3 to 6 inclusive, with (width-1)*(height-1) capped at 50 by reducing the height. Let's approximate the width as the range 3..14 as there will typically be a lot of space on the level when placing just a few rooms; then trying all combinations, and taking the harmonic average of the areas (necessary because we're trying to find the expectation of 1/area), we get an average area of about 28.149. On average, we have about 0.4167 items per room, so the chance that any item generates on the upstairs is approximately 1 in 67.5.
For any given item, the first thing that is generated is its item type (all randomly generatable artifacts are weapons, so 10% chance of a weapon); then the base item is chosen. The base items of randomly generatable artifacts, and the chance the base item has of generating given that a weapon generates: Demonbane*, Sunsword*, Giantslayer, Vorpal Blade, Fire Brand, Frost Brand = long sword (5%), Grayswandir*, Werebane = silver saber (0.6%), Snickersnee* = katana (0.4%), Cleaver = battle-axe (1%), Magicbane = athame (0%), Mjollnir, Ogresmasher = war hammer (1.5%), Grimtooth* = orcish dagger (1.2%), Orcrist* = elven broadsword (0.4%), Sting* = elven dagger (1%), Stormbringer* = runesword (0%), Dragonbane = broadsword (0.8%), Trollsbane = morning star (1.2%). (Note that some artifacts are marked as randomly-generatable, but don't because their base items don't generate.) The artifacts that can blast neutrals are shown with asterisks; a random weapon has a 5% chance of being an artifact if possible, so the chance that a random weapon can blast neutrals is (0.05*2/6 + 0.006/2 + 0.004 + 0.01 + 0) * 0.05 = about 0.001683333. Taking into account the 10% chance the item is a weapon, and the average 1/67.5 number of items that generates on the upstairs at all, we can calculate the chance of a blasting artifact at about 1 in 400000.
Finally, this needs to be combined with the 1 in 4 chance that the artifact actually blasts the character (only unintelligent artifacts can be spawned this way, as intelligent artifacts either don't generate randomly or have a base type that doesn't generate randomly), and the approximately 52% chance that the blast does enough damage to kill a starting Tourist, to get a final probability of 1 in 3 million.

Stage by stage comments

I never gain control of the character, so these are kind-of pointless.

Other comments

Obviously, this is not the most entertaining category for this run, but it's still pretty surprising. (I'm currently working on a "best ending, in-game time" TAS with dwangoAC.) In this category, though, I wouldn't be surprised if the run was completely optimal, due to the narrow definition of what is allowed; to beat it, either a faster route will have to be found (which seems really implausible), a different keystroke sequence to get the same effect (possibly more plausible), or a faster TAS of the boot process (which is obviously irrelevant, but could affect the time; this is the best I can do, although it's plausible that someone else could figure out a faster way to boot DOS).
Encoders, please allow the game to run back to the command prompt before ending the encode, or you'll cut out the entire game. (NetHack's credits are shown in-game by pressing V, rather than coming up at end-of-game, so those can't easily be included.)

DarkKobold: Claimed.

DarkKobold: This is clearly a funny concept, and probably the best April Fools submission of 2011... but it really doesn't follow the rules of the site:

The movie must be complete

Your movie should begin from the console power-on and end when the last decisive action has been delivered. There are no specific rules for an exact endpoint but it must adhere to the following rules:
  • It must beat the game.
  • It must be able to reach the credits or end screen without the viewer needing to do anything; all input must come solely from the input file (e.g. configuring the emulator to autofire after the end of playback is not allowed). An exception has been allowed for Rygar.
  • It must not be needlessly long.
Under special consideration we might allow movies that play a single level only or a part of the game only.
While one might say that it plays only part of the game, the run ... doesn't really. It doesn't actually even get a chance to play any of the game! Amusing concept, great execution, but I don't see it fitting with the site. Rejecting for goal choice.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14876
Location: 127.0.0.1
This topic is for the purpose of discussing #3080: ais523's DOS NetHack "fastest death" in 00:01.15
Editor, Player (44)
Joined: 7/11/2010
Posts: 1022
I have no idea why TasVideoAgent didn't give this thread a title. On any other day, I'd complain, but on April 1 I'm fine with it. I didn't do that deliberately, though, so please don't judge my submission on TVA's glitches.
Banned User, Former player
Joined: 3/10/2004
Posts: 7698
Location: Finland
The thread not having a title makes it amusingly difficult to open it, especially after you have read it once (in which case that "new post" icon which you could click isn't there anymore).
Active player (292)
Joined: 12/16/2008
Posts: 458
Location: Houston
where am I, how did I get here edit, yes from me
NitroGenesis
He/Him
Editor, Experienced player (551)
Joined: 12/24/2009
Posts: 1873
errror1 wrote:
where am I, how did I get here
Now that you're here, make me a sandvich.
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
Sir_VG
He/Him
Player (39)
Joined: 10/9/2004
Posts: 1911
Location: Floating Tower
Warp wrote:
The thread not having a title makes it amusingly difficult to open it, especially after you have read it once (in which case that "new post" icon which you could click isn't there anymore).
Not really. Just click on "Go to the Last Post" icon on the right of the screen.
Taking over the world, one game at a time. Currently TASing: Nothing
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14876
Location: 127.0.0.1
Error! Error! Glitzfrick framus gobbledegook!
NitroGenesis
He/Him
Editor, Experienced player (551)
Joined: 12/24/2009
Posts: 1873
TASVideoAgent wrote:
Error! Error! Glitzfrick framus gobbledegook!
I asked for a sandwich you idiot.
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
Joined: 10/31/2005
Posts: 329
Location: The Netherlands
your dinosaur got (re-)coloured :)
Joined: 11/17/2005
Posts: 278
Location: Massachusetts, USA
Voting best 4/1 TAS of 2011. Each of these really needs to have their own encode ready to go. But since this run is under 2 seconds anyway I'll just open a command prompt and close it. There. I'm entertained.
Joined: 6/23/2009
Posts: 150
Loosing a game before even gaining control of the character!? That has to count for something. Well done!
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Requesting HD Encode for my BluRay player. seriously, please make an encode of some sort.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Editor, Skilled player (1172)
Joined: 9/27/2008
Posts: 1085
I request an encode in the form of an animated image. As there generally isn't any sound in Nethack, there are relatively few colors to see, and how short this run is, I believe an animated image might actually work. Feel free to tell me otherwise if there's any barrier to such an encode.
Joined: 7/2/2007
Posts: 3960
I'm with FatRatKnight. An animated GIF ought to serve just fine here. Also, Twoflower really needs to pick his champions more carefully...or is it less carefully?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Editor, Player (44)
Joined: 7/11/2010
Posts: 1022
It comes to 60 metric megabytes as an animated GIF, unless there's some ingenious way to reduce the size of those that I don't know of. (The run's quite watchable from the GIF, though.) Here's a suitably silly lossless encode: (edit: this was a pastebin link, but it's now died) That's a UUencoded gzipped tarball of PNG files representing individual frames. You can make an animated GIF out of those, if you like.
Active player (292)
Joined: 12/16/2008
Posts: 458
Location: Houston
ok here are two encodes, this one has a constant fps http://www.gamefront.com/files/20179835/nethack+0115+fools.png this one pauses so you can read it http://www.gamefront.com/files/20179838/nethack+0115+readable.png
Editor, Experienced player (608)
Joined: 11/8/2010
Posts: 4012
Voting Yes for fastest death in TAS history.
Joined: 1/8/2011
Posts: 74
Location: Saturn Valley Medical Center
Voting Yes because I WANT TO!!!!!!!
Samus plays the SA-Xaphone
Post subject: Easy yes vote - I dare someone to die faster
Moderator, Senior Ambassador, Experienced player (898)
Joined: 9/14/2008
Posts: 1007
This was amazing. I can't imagine what a poor player encountering this in a non-TAS game would think. Voted Yes for fastest death. Next up: fastest in-game time (I think "best ending" is implied there although it'd sound silly to call this Mundane Ending, Fastest Death. :) A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Joined: 7/2/2007
Posts: 3960
I remember an old roguelike called Omega had a similar death. While in the outdoors, there was a rare chance to get struck by a cosmic ray, which would cause some damage. IIRC your first turn was spent for you, going from the outdoors into the city; it was theoretically possible to get struck and killed by a cosmic ray in that turn.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 1/27/2011
Posts: 78
Location: Minnesota, USA
I think this is at least as impressive as King's Bounty. A terrific yes vote from me.
Joined: 8/7/2006
Posts: 344
I suspected something like this, though I thought it'd be from being spawned in the same room as a goblin with a wand of death in main inventory. Obviously wouldn't be a 0 turn death, but still a pretty funny thing to happen.
Joined: 11/17/2005
Posts: 278
Location: Massachusetts, USA
Now that the encode has been published, I'd like to upgrade my yes to a serious yes. Why not publish this? It's clever, it's well made, and it doesn't ask much of your time. (I've played fewer than 10 hours of NetHack in my life. I never knew that touching artifacts could damage you.)
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Yes vote due to showing how the gods truly hate you. Now, who will do a serious Good Ending run?
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2224
Location: Georgia, USA
I showed this to a few of my friends who play NetHack a lot. They thought it was quite impressive, though they felt it was more like "cheating" because auto-pickup was turned on. I don't personally care, and I'm quite impressed with the effort that's needed to die this quickly. Yes vote, and I look forward to an ascension run.
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.