Posts for ais523


Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
OK, with a new cat-based replay method, I got this to sync on my own computer, so that's sync verified, at least. There are still plenty of others where it doesn't work, though; on the system dwangoAC and I were using to host the TAS tools, it desyncs very early (on dlvl 2). It seems to desync consistently at the same time on each system' something's different between systems that we're not sure what it is.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I'm actually hoping that this can be resynced via a Lua script, to save the effort in having to TAS it manually. Assuming pausing the game doesn't affect luck (which is something we have to hope for, and might or might not be the case), it'd just be a case of writing a script to input the weapon switches on frames where the movie currently says to change weapon, and delaying the rest of the movie the according number of frames. It could be that there are people here other than diggidoyo who could work on such a script.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
For what it's worth, a few years ago I submitted a run on April 1 that got excellent audience feedback, and even nowadays is often talked about by people outside the TAS community. It got rejected for breaking the rules. (See #3080: ais523's DOS NetHack "fastest death" in 00:01.15 for details.) Submitting the run was very worthwhile, as it makes linking to the submission page possible to have somewhere to discuss the run. In retrospect, though, I believe the judge was correct in rejecting it as it doesn't really fit alongside the other movies on the site.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
OK, so we've made a few attempts at encoding this. Thanks to Deewiant and keylie, both of whom have a system on which IO::Pty::HalfDuplex works. Unfortunately, in both those cases, there was a desync on turn 109 (the first sign is traps in subtly different places, followed by an obvious "Unknown command ' '"; it looks like something made extra RNG calls or omitted RNG calls for some reason). I've been unable to determine what causes it (given that my own system can run sync-correctly past this point, and that we've replayed past turn 109 several times in the making of the gametime TAS); the most plausible idea is some sort of bug in the encoding script, but the encoding script has worked to create ttyrecs beyond that turn in the past. I also get a desync on my own system, but it comes much later, in the "new" part of the TAS that I haven't seen before. I haven't looked too much into what causes it (which is awkward to determine without savestates; I've been replaying via copy-and-paste).
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I can say right away that this is unoptimized, given that the start of the run is aiming for one goal and the end of the run for another. (Not to mention that the start of the run has known errors anyway.) If anything, the best description for this is a testrun, and we don't normally submit those. I'm actually surprised you didn't re-TAS from the start aiming for speed as the goal. A realtime TAS would look quite different from a gametime TAS, and likely make different route choices. One of the reasons I haven't worked towards one is a) people seemed to prefer gametime and b) gametime is easier to optimize. This also arguably fails to beat all existing records. nht has an UnNetHack TAS in 16 seconds. UnNetHack is not the same game; it actually contains *fewer* bugs (nht used it due to the turn 2000 barrier not existing in UnNethack, and also because Un's set seed feature was buggy and made this possible to pull off on public servers). Because nht's run did only minimal luck manipulation, it is likely possible to go much faster than that. OTOH, I suspect that much of the reason for nht's advantage simply comes from using a faster computer. Anyway, I appreciate that this run was meant to troll me, and despite believing it shouldn't be published, that doesn't mean I can't enjoy it. I'd like to make an encode but the Perl library IO::Pty::HalfDuplex (which I normally use for the purpose) has been broken for a while and I'm not immediately sure how to fix it. If someone is on a UNIXy system on which the command cpanm -S Term::VT102 IO::Pty::HalfDuplex runs to completion without freezing during IO::Pty::HalfDuplex's tests (note that this uses sudo in order to install some Perl modules, and you might need to install cpanm first), please let me know and we might be able to use your system to make the encoding. (It fails on recent Linux, but might hopefully work on old Linux or perhaps a BSD.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
We've had "real time encodes" of other games before (basically, you take a screenshot whenever the real time counter advances by a frame, and the encode is made out of those). They're used to compare things like realtime runs of Super Metroid. I think that it'd be possible to make a run like this with no cheating involved (it might even be possible to hex this run), then create a watchable encode of it. That wouldn't fall afoul of any rules except possibly primary encode rules, which are much less important than the no-cheating rule.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I really like this idea, and would love it if it were possible for the run to be published. Perhaps it would be possible to do a run of the unmodified game, then edit the pauses out of the encode? I've seen other heavily pause-based TASes for other games to use this technique. I assume that refilling weapon energy doesn't count against in-game time? Often, you spend a lot of time refilling a weapon for only a marginal time gain firing it.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
billybobfred wrote:
I always understood "softlock" as meaning "the game is technically still going, but you cannot provide any meaningful input ever again (until you reset)". (As opposed to a "hard lock", where the game just Stops.) The scenario discussed here was always called "unwinnable" or "trapped" or "stuck" or some such. It's only in the past few days that I've ever seen "softlock" used this way. From multiple different sources at once, actually, which is odd.
I also used to think that the meaning of "softlock" was "state in which the game is still responding to some things, but it's clearly impossible to do anything productive or make any progress", typically because the non-pause controls don't respond or because the character was trapped in the wall. Increasingly, I'm seeing it used for any unwinnable state, no matter how much control is available. I don't think I've seen any other meaning used for months, and this discussion has reminded me of the old one. Not sure when the meaning changed.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
This is probably the longest TAS to game completion ever. (adelikat's infinitely long TAS fails to complete the game.) This movie also makes a very similar point to one I was planning to make a while back (but never got round to), while undermining it at the same time. (I was planning to use pre-initialized memory to get around the need to send an ACE payload over the controller cable, in order to argue that allowing pre-initialized memory is a bad idea. This makes an excellent counterpoint, in that it proves that there's no theoretical reason to send the payload at all.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
In very old versions of NetHack, levels below the Valley instantly killed you if you didn't have fire resistance. The rule was added so that level teleportation with a random destination didn't instantly kill players who happened to go from above the Valley to below. As a result, there was no reason to ban movement the other way. Lack of fire resistance below the Valley is no longer fatal, but the Valley levport block still exists.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
No. We need to do the following on the first action of turn 2000: get 20 alignment, and get permission from Neferet. Getting permission can be done on either a player or a monster action, but the player action at the start of turn 2000 comes before any monster actions. So if we use a turn boundary for getting 20 alignment, we don't have any use for the player action anyway; the thing that needs to come next is to get permission from Neferet, and we can either do that ourself by #chatting to her, or on the monster action by letting her talk to us. If turn 2000 started with a monster action, then it would save time, as it'd allow us to use that monster action to unlock the Quest rather than having to wait for the player's action to gain alignment.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
http://nethack4.org/pastebin/new-2003-turn-plan.txt I think we have a plan! This is grindless (defined as "with a requirement to repeat the same action 100 or more times during the setup", we actually probably have less than 10 repeats of most things, with the only dubious setup being eggs), and even has one action spare (which can be used at various points, but most likely will be used on Fire in order to make the luck manipulation there much easier). One of the saved actions comes from the things I discussed earlier in the thread: we can set up equipment removal storage on turn 1999 (rather than doing it on the run) and sustain it throughout the run until the point where it's needed. This means that the mandatory turn we have to spend in the Sanctum can be spent equipping an amulet of life saving, allowing us to cancel one of the earlier actions. The other saved action was discovered today, and is a ridiculous one: we save the action by not ringing the Bell. This is untested, but as far as I can tell, the Bell is automatically rung at the moment the level containing it generates (due to the default initialization of the "age" object member), and the reason nobody had noticed so far is that they didn't expect people to do the Invocation within 5 turns of entering the Quest goal level. I'm not going to be completely dismissive of the idea of saving another three actions and doing the run in 2002 turns (there is a small chance that you can save 1 action via a riding-heavy strategy; I haven't worked out the details because that would require a lot of grinding), but I consider it to be very unlikely; multiple new glitches would have to be found. So I'm pretty happy with this new plan. The next steps involve testing that the plan works (with something this complex and intricate there are likely to be unforeseen issues, although the spare action is encouraging as it gives leeway for disasters), and working out how much of the run so far we'll have to redo. The new plan arguably involves rather less setup than the old plan did (mostly because going faster mean we do fewer things and thus need less setup for those things), and most of the setup it does need is deep in Gehennom, on the vibrating square level. As such, we may have to rewind to before we did the raid on the potion shop, as most of the things we did past that point don't help in the new plan. At least that isn't a huge amount of work lost.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
BioSpark wrote:
I did this several years ago: https://www.youtube.com/watch?v=XoQgkXjNGaQ https://www.youtube.com/watch?v=q1C-1f2F7Fk https://www.youtube.com/watch?v=pt5oGtR1yzQ The other cases are not interesting. It almost always says "Target eradicated". There's text associated with every single event, so there aren't any text glitches. Also, none of these actually softlock. That would only happen if you clip through blocks you can't break yet and you have no other ways to get back. Edit: Also, there's a ton of early power bombs now. I might make a video in the future that has all of them, but I'd have to find all the new ones first.
I'd actually already seen these; I was hoping there'd be more, but I suspect the same thing would happen again. What happens if the game expects you to enter a navigation room next, but you go to the wrong one? Or to kill a boss next, and you kill the wrong boss? (I think the existing tests have been on leaving a sector when the game expects you to kill a boss?)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
At some point, it may be fun to create a collection of "navigation rooms entered at times you aren't supposed to be able to enter them", partly to show off how the game reacts, partly to show off how breakable the game would be if it didn't have such a tendency to softlock. (I'm also secretly hoping that one of the combinations will have nonterminated text or something exploitable like that.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Right, the problem is that you need to set up the gallop twice more to gain an extra action (basically for subpixel-related reasons). That puts a large restriction on what gains you can get from it.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
It wouldn't help unless riding, and that requires 2020 actions to train up to a state where it doesn't conflict with like half the ascension run. Even with all appropriate speed modifiers in place, that's going to take up an appreciable portion of the setup and wouldn't be very fun to watch. So we want to avoid it unless possible. (Also it costs a "oLS, and finishing reading the Book loses the storage.) I'm not sure what you're trying to achieve with this.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Hurtling on Fire would require a source of levitation (which we can't have earlier because it would prevent us autopicking up the Amulet as part of the fast Amulet transport glitch), and would run into polyform trouble (air elementals can't kick). Also, you can't double-store hurtle cancels; you can only store one item at a time in the "taking_off" variable, which is how the storage works. (Because of the reason storage glitches happen – values left in variables that should have been reset – you normally can't store two of the same type of storage at once. This is true for games generally, not just NetHack.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Two more discoveries, both to do with the very start of the turn 2000 unlock. One is that it's possible to gain alignment on a turn boundary, after the cap increases, thus saving a portion of an action on turn 2000 (no time saving yet as we'd need to find some way to do the quest unlock in zero time, but encouraging). The first method I found via which to do this is via the "You feel that Thoth is well-pleased" prayer result (which happens as the last thing during turn boundary), but this is mutually exclusive with galloping on turn 1999 (as we'd be busy praying). Looking at the code, stinking clouds probably also work, and have the advantage that they don't conflict with anything. Another is that it's possible to get storage for the farmove state. (I should really look for more storage glitches; it seems like a fruitful direction to go in.) One method is to die to a delayed instadeath during a farmove command (and because this can happen before turn 2000, the "oLS it costs is no big deal; we can just put on another). This gives us much more flexibility in how we do gallop refresh actions. This probably doesn't save time even on a riding-based strategy, though, because it's cancelled by any multiturn action at the end of the action (notably, reading the Book), and by various other things, the most notable being wallwalking (!). As such, if this is practically useful, it's almost certainly just to provide more flexibility for turn 1999.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
OK, so it's impossible to cancel a gallop speed boost maintenance action without spending time (strangely, even a "oLS seems not to help). However, my guess about the beartrap was correct; it is one of several methods that allows you to do such an action without losing storage. The trick is to enter a farmove command in a direction that isn't towards a wall. This leaves you stuck in a multiturn action at the turn boundary, which normally you'd need a wallwalk to cancel, but it gets automatically lookaround-cancelled at the start of the next turn, which I didn't realise was a game mechanic until I started writing this post. I think this might be enough to hit the 2003. We set up storage on turn 1999 (entering a bear trap before doing so, and with the new gallop maintain action afterwards). Everything then follows the previous plan until action 4 (which is "oLS-cancelled) and the previous action 8, now 7, which we use to re-equip the "oLS. Then we just follow the previous plan up until what was action 13 (now 12), and spend one action manually polymorphing, which solves the polyform problem without disturbing the rest of the plan. I'd need to run through this to make sure that the changed turn boundaries don't throw anything off, though (such as monster charges).
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I don't mean "doing it as a monster action wouldn't save time". I mean "it is not possible to do this as a monster action; there is no setup with which a monster action would cause this to happen". In other words, it's a case of "it's impossible" rather than "it's not helpful". However, I've just noticed that the farmove flag (used by galloping) gets set even with invalid movement commands into walls! The problem is that it gets cleared immediately afterwards. I'm going to try to find a way to cancel a gallop speed boost maintenance action without spending time or a "oLS; that would probably save one action, possibly two.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Neither of those is possible as a monster action; the whole reason we can't do fast amulet transport directly from the sanctum is that there's no way to leave it on a monster turn, and reaching Earth requires either use of the stairs or a c!oGL, it can't be done via levporting (or we'd just go there directly). (Also, exiting the sanctum as a monster action wouldn't help because changing level on a monster action prevents anything further being accomplished on that action.) EDIT: (editing your posts so much makes them very hard to respond to because they keep changing while I'm trying to reply to them) Setting up a hurtle cancel only costs one action, so there's no point in sacrificing an action just to be able to skip that part of things; you only break even.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
I mean, downwards to get to Quest Goal. The regular entrance portal won't help there. Cancel 4, replace on 9 doesn't work because 9's scheduled action is a levport, and levporting on a monster action is a full stop that prevents you going any further. I think you probably meant cancel 4, replace on 8? This actually looks really promising. The problem is that we need action 8 for the hurtle cancel setup in the current plan. Perhaps there's some other way to a) do the setup or b) maintain the setup from turn 1999, though. (At the moment, the setup gets cancelled by the last action of turn 1999 because we have to be galloping into a wall at turn boundary to get the full five actions. Now I'm wondering what happens if we don't move during the gallop due to a bear trap or something; perhaps we could make it work.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
Turns always start with a player action (unless the player is depleted on movement points, which is clearly suboptimal in this situation), and the alignment gain needs to happen before anything else. The only thing that happens beforehand is the turn boundary. If we could somehow find a way to gain alignment on the turn boundary, we'd run into the problem that #chat (the action required to gain acceptance to the quest on a player action) is not "oLS-cancellable. Also, I'm not 100% convinced that it's possible to leave Quest Home on a monster action; I don't think it generates levport traps and I'm pretty sure you can't dig a hole there.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
So the basic situation here is, we have some time periods where we're capped by player actions, and some where we're just capped by actions total (which implies level changing, as in non-level-change situations, we can just use more monsters to get more actions). "oLS-cancelling a player action gives us two actions in a row (assuming that the first can be cancelled; not all can be), at the cost of a player action later. That action would have to be immediately after a monster-action level change, and in a situation where we benefit from a monster action immediately afterwards. A "oLS-cancel is severely limited in what it can do, though. In the current plan, turn 2000 action 1 looks like this: gain alignment (player), get accepted to quest (monster) Action 2 looks like this: go to quest goal level (player), get eye/bell (monster; requires several monsters but it's doable); leaving the level via monster would cost no additional time Using a "oLS-cancel doesn't help on these actions (and I agree with you that they're the most promising); if we cancel the gain of alignment we don't get accepted to the quest (as you don't get a monster action after a "oLS-cancelled action), if we cancel the visit to the quest goal level we're now on the level but don't save any time because we don't have the eye/bell.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1022
If you "oLS-cancel an action, there isn't a monster action after it, and I think this means that there's no action we can cancel to save time (this isn't inherent in "oLS-cancels, just that there happens not to be one on which it would help). Good idea otherwise, though; I hadn't considered leaving the quest the intended way because it's so much slower. There's also the problem of somehow getting the Bell with a single player action. I'm not sure if that's possible; I guess we might be able to steal it. (We don't need the Eye in this scenario, and in fact it would be simpler not to pick it up; how's that for an unintuitive strategy?) I'm not convinced that this sort of idea doesn't help, but haven't found a place at which it's useful.