Tool-assisted Angband

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Derakon
    Prophet
    • Dec 2009
    • 9022

    Tool-assisted Angband

    For those of you not familiar with tool-assisted speedruns, they are essentially videos of what "optimal play" of videogames look like. Thanks to emulators, savestates, and RAM watching, the "player" never makes a mistake and can ensure that random events work out in his favor. They aren't about showing skillful play, but more about taking optimality to its often-absurd conclusion.

    I gave some thought to what an Angband TAS would look like. Probably not very interesting, as it turns out. Here's the strategy I came up with:

    * Roll up a ranger (closest thing to easy mode available). Race should probably be something with good Dexterity to make hit rolls easier. Hobbit or Gnome, say. Low XP penalty to make grinding to level 40 go faster.
    * Kill a townsperson. They drop a dagger with a high-level ego attribute (e.g. Holy Avenger). ID and sell the dagger. Buy a stack of 50 Scrolls of Deep Descent from the black market (each reading sends you down 2 dungeon levels). This requires significant luck manipulation, assuming it's possible at all (otherwise, buy as many as possible, and manipulate dungeon levels to spawn more).
    * Read scrolls down to dlvl 99.
    * Pick up a Heavy Crossbow of the Haradrim (x5 multiplier, +1 extra shot), some Bolts of Acid, two stacks of Bolts of Slay Evil, and a big Ring of Speed (theoretically unlimited modifier; in practice, +20 or so seems the best bet) off the ground.
    * Shoot down something big like a greater demon for levels (ranger gets +1 shots at levels 20 and 40).
    * Shoot Sauron to death. Naturally he never casts anything. Bolts of Acid should deal 8 * (4d5 + ~40) = up to 480 damage/shot; Sauron has 10500HP so 22 bolts are needed to kill him. During this time he will take 6 steps towards us (speed parity but we get 4 shots/round).
    * Read scroll of Deep Descent
    * Shoot Morgoth to death. Naturally he never casts anything. Morgy has 20k hitpoints and we can only do up to 420 damage/round since he's immune to acid (have to use Slay Evil instead, which has a worse multiplier), so we need to shoot him 48 times. During this time he will take 18 steps towards us; we may need to learn Phase Door from our starting spellbook and cast it once.

    Any ideas on how this could be made faster (short of using a version with more favorable missile branding or the like)? Any ideas on how to restrict it to be more <i>interesting</i>? Obviously ditching scrolls of Deep Descent would be the first suggestion, but then you're stuck manipulating each dungeon level to have a down staircase right next to the arrival staircase, for basically the same effect. Not using rangers would be the next suggestion so you don't get access to their super-broken missile capabilities...but missiles remain a good way to kill so you just end up phase dooring a few more times.

    Restrict yourself to melee and you just end up with a different kit "randomly" found at the bottom of the dungeon (as well as a bunch of potions of STR/DEX), as well as the need to manipulate Morgoth to miss with all of his attacks. Restrict yourself to spells and you find the attack spellbooks and some potions of Restore Mana...

    I guess that fundamentally, if you have control over the RNG then Angband stops being very interesting.
  • d_m
    Angband Devteam member
    • Aug 2008
    • 1517

    #2
    Just remember that unlike "normal" tool-assisted speed runs Angband prevents you from reloading over and over until you get the result you want, so your game will probably involve a lot of randomly walking 13 steps before casting Enchant Weapon or whatever.

    Also, I think that will make the fight with Morgoth harder, or at least stranger (in some cases purposely not healing to change RNG state so Morgoth doesn't cast Mana Storm, or something).
    linux->xterm->screen->pmacs

    Comment

    • Derakon
      Prophet
      • Dec 2009
      • 9022

      #3
      Originally posted by d_m
      Just remember that unlike "normal" tool-assisted speed runs Angband prevents you from reloading over and over until you get the result you want, so your game will probably involve a lot of randomly walking 13 steps before casting Enchant Weapon or whatever.
      Actually, the RNG in normal TASes behaves exactly like the RNG in Angband. Just think of each in-game frame as a single turn in Angband. If you reload (by loading a savestate), you also reload the RNG state; trying the same set of actions over again will get you the same results.

      I've been watching some people planning a NetHack TAS (using a DOS emulator) and one of their first tasks was to find a good date to set the emulated machine to to get a good starting RNG state. You'd have to do something similar in Angband. And yes, you would occasionally have to waste actions to advance the RNG.

      Comment

      • Magnate
        Angband Devteam member
        • May 2007
        • 5110

        #4
        Last time I played one, rangers didn't get extra shots with xbows ...
        "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

        Comment

        • Derakon
          Prophet
          • Dec 2009
          • 9022

          #5
          D'oh! You're right. So I guess you'd go with a Lothlorien longbow, and maybe find the Haradrim shield to make up the shots deficit. This does hurt the damage/shot a bit though.

          Comment

          • fizzix
            Prophet
            • Aug 2009
            • 3025

            #6
            I've always thought TAS's where luck manipulation was critical were kind of dumb. I think Angband would take that statement to the extreme.

            Comment

            • Lord Tom
              Apprentice
              • Nov 2009
              • 73

              #7
              Derakon, I'd love to make this TAS. Not up to date with the state of PC TASing though; could one simply use an emulator to do this or would re-recording functionality need to be hacked into the game itself?

              This definitely wouldn't be one of those knock your socks off entertainment TAS's, but would be quite an intellectual challenge.

              If one were mucking around with the source, I'd speculate that a key function would be test item generation for a given monster at a given RNG state, then run the RNG ahead to find all possible drops, select the best one and play such that it is used. Is it correct that monster drops are now set when monsters are generated, rather than when they're killed? If so, that'd complicate things though the principle would remain the same.
              Last edited by Lord Tom; November 19, 2010, 21:57.

              Comment

              • zaimoni
                Knight
                • Apr 2007
                • 590

                #8
                Well...for a true console game, as opposed to a graphical front-end (SDL/Windows/GTK2/...), the simplest way would be to run the screen-recorder application within a virtual machine, then extract the game replay file from the virtual machine.
                Zaiband: end the "I shouldn't have survived that" experience. V3.0.6 fork on Hg.
                Zaiband 3.0.10 ETA Mar. 7 2011 (Yes, schedule slipped. Latest testing indicates not enough assert() calls to allow release.)
                Z.C++: pre-alpha C/C++ compiler system (usable preprocessor). Also on Hg. Z.C++ 0.0.10 ETA December 31 2011

                Comment

                • Derakon
                  Prophet
                  • Dec 2009
                  • 9022

                  #9
                  I suspect the easiest way to make a TAS of Angband would be to modify its source. To my knowledge there are no current TAS toolkits for general PC games newer than DOS.

                  Actually, maybe you could use a DS emulator for the DS version.

                  Comment

                  Working...
                  😀
                  😂
                  🥰
                  😘
                  🤢
                  😎
                  😞
                  😡
                  👍
                  👎