# Tool Assisted Speedrun

Tool assisted speedrun (TAS, also more generally *tool assisted superplay*) is a category of [video game](game.md) [speedruns](speedrun.md) in which help of tools is allowed, even those that would otherwise be considered [cheating](cheating.md), e.g. [scripts](scripting.md), splicing, time manipulation, savestates, [aimbots](aimbot.md) or [AI](ai.md), however NOT those that alter the game itself. In other words the game rules stay intact, we just try to boost the player's skill to superhuman levels with computer assistance. This makes it possible to create flawless, perfect or near-perfect runs which can serve as a theoretical upper limit of what is ultimately achievable -- and, by the way, TAS runs are very [fun](fun.md) to watch, you become a witness of pure perfection, precisely timed and planned actions, 100% accurate head shots, successions of frame and pixel perfect jumps etc. The normal, non-TAS runs are called RTA (real time attack). For example the current (2022) RTA world record of Super Mario Bros is 4.58.881 while the TAS record is 4.41.27 (here we can see the RTA run is very optimized already, in less popular games a TAS can be orders of magnitude faster).

{ Watching a TAS run is kind of like watching the [God](god.md) play the game. I personally like to watch [Trackmania](trackmania.md) TASes, some are really unbelievable. Elastomania and [Doom](doom.md) TASes are also pretty fucked up. Also note that [SAF](saf.md) games and [Anarch](anarch.md) have TAS support. ~drummyfish }

There is a website with videos of game TASes: https://tasvideos.org/.

TAS does NOT allow hacking the game in other ways than what's possible to achieve by simply playing the game, i.e. it is not possible to hex edit the game's code before running it or manipulate its RAM content at run time with external tools. However note that some games are [buggy](bug.md) and allow things such as altering their RAM content or code by merely playing the game (e.g. Pokemon Yellow allows so called [arbitrary code execution](arbitrary_code_execution.md)) which generally IS allowed. The goal of TAS is merely to find, as best as we can, the series of game inputs that will lead to completing the game as fast as possible. For this the game pretty much needs to be [deterministic](determinism.md), i.e. the same sequence of inputs must always reproduce the same run when replayed later.

TAS runs coexist alongside RTA (non-TAS) runs as separate categories that are beneficial to each other: RTA runners come up with speedrunning techniques that TAS programmers can perfectly execute and vice versa, TAS runners many times discover new techniques and ideas for RTA runners (for example the insane discovery of groundbreaking noseboost when TAS was introduced to Trackmania). In fact RTA and TAS runners are many times the very same people. Of course if you submit a TAS run in RTA category, you'll be seen as a [cheater](cheating.md).

Creating a TAS is not an easy task, it requires exceptional knowledge of the game (many times including its code) and its speedrunning, as well as a lot of patience and often collaboration with other TASers, sometimes a TASer also has to do some [programming](programming.md) to [brute force](brute_force.md) check many possible inputs etc. It could probably be said that constructing an ideal TAS for a typical game is an [NP hard](p_vs_np.md) problem, so it can't be easily solved mathematically, creativity and a lot of effort is required. TASes are made *offline* (not in real time), i.e. hours of work are required to program minutes or even seconds of the actual run. Many paths need to be planned and checked. Compared to RTAs, the focus switches from mechanical skills towards skillful mathematical analysis and planning. While RTA runs besides skill and training also require risk planning, i.e. sometimes deciding to do something in a slower but safer way to not ruin a good run, TAS can simply go for all the fastest routes, no matter how risky they are, as there is certainty they will succeed. Besides this some technological prerequisites are necessary: the actual tools to assist with creation of the TAS. For many new [proprietary](proprietary.md) games it is extremely difficult to develop the necessary tools as their source code isn't available, their assembly is obscured and littered with "anti-cheating" malware. Many "[modern](modern.md)" (even [FOSS](foss.md)) games are additionally badly programmed and e.g. lacking a [deterministic](determinism.md) physics, which makes precise TASing almost impossible (as the traditional precise crafting of inputs requires deterministic behavior). The situation is better with old games that are played in [emulators](emulator.md) such as [DOS](dos.md) games ([Doom](doom.md) etc.) or games for consoles like [GameBoy](gameboy.md) -- [emulators](emulator.md) can give us a complete control over the environment, they allow to save and load the whole emulator state at any instant, we may slow the time down arbitrarily, rewind and script the inputs however we wish (an advanced technique includes e.g. [bruteforcing](brute_force.md): exhaustively checking all possible combinations of inputs over the following few frames to see which one produces the best time save). In games that don't have TAS tools people at least try to do the next best thing with **segmented speedruns** (e.g. stitching together world record runs of each game level).

**TAS can make more sense and be a better spent time than RTA runs**, especially as RTA runs get so extremely optimized that further improvement will basically depend solely on getting astronomically lucky in pulling off a single continuous chain of extremely hard techniques that will make achieving a new record only a matter of putting gargantuan numbers of hours to mindlessly grind over and over until hitting the jackpot -- even with the highest skill chance plays the biggest role, that's why grinding is needed. This high level of optimization is already present in many games now -- many have become only about long hours of grinding, repeating the same learned mechanical movements over and over without thinking much, and this makes human basically a machine, a trained monkey put in front of a camera trying to hit a 1 in a million jackpot so that he starts crying which makes the audience emotional and they give him money. In reality this is no longer different from the human just flipping a coin, waiting to get N heads in a row: there is no value in wasting effort this way, a machine can do instantly what the human is trying to do for hundreds of hours, it's nothing more than a circus of wanting to see a human basically by pure chance imperfectly repeat what the machine did. At this point we must say that's enough, this is how far humans got, now let's move to TAS. TAS makes people actually think, analyze and be creative again, it is how speedrunning can be sustained once RTA runs are over. However even TAS can reach its peak, it is possible (at least with some games) to mathematically solve them, finding the completely best solution with 100% certainty, ending all kinds of traditional speedrunning. It is also possible TAS will eventually stagnate in similar ways RTA runs do: by just needing tremendous amounts of energy for further progress (such as CPU time for brute forcing new options) -- here we should again stop voluntarily, there is no point in wasting tremendous resources on something so insignificant as seeing how an obscure game can be finished one millisecond faster. Just move on to another game, or find a different challenge in the same game.

A libre [game](game.md) (under [CC0](cc0.md)!) called [Lix](lix.md), a clone of [Lemmings](lemmings.md) is kind of based on making TAS runs, and it's excellent! In the game, like in original Lemmings, one has to manage a group of units to cooperate in overcoming obstacles and so get safely to the level exit; however, unlike Lemmings, Lix incorporates a replay system so the player may not just pause the game, accelerate or slow down the time, but also rewind back and issue commands perfectly on any any given frame. The game also shows to the player all necessary info like exact frame number, exact survivable jump height etc., so winning a level doesn't depend on fast reaction time, good estimate or grinding attempts over and over until one doesn't make any mistake -- no, solving the level is purely about thinking and finding the mathematical solution. Once one knows how to get to the exit, it's easy to program in any complex sequence of actions, and of course then he can rewatch it in real time and get this kind of rewarding movie in which everything is performed perfectly. Lix is really an excellent example of how TAS is not just 3rd party hacking of the game but inherent part of the original game's design, one that takes the fun to the next level.

There also exists a term *tool assisted superplay* which is the same principle as TAS but basically with the intention of just flexing, without the goal of finishing the game fast (e.g. playing a [Doom](doom.md) level against hundreds of enemies without taking a single hit). The concept of TAS is further taken to yet higher levels by some, for example there are lunatics who make TAS runs of two games at once (i.e. finding inputs that finish two different games as fast as possible), or such who try to find inputs that will always finish a certain game with any possible random [seed](seed.md).

Some idiots are against TASes for various reasons, mostly out of fear that TASers will use the tools to [CHEAAAAAAAT](cheating.md) in RTAs or that TASes will make the human runners obsolete etc. That's all bullshit of course, it's like being against computers out of fear they would make human calculators obsolete. Furthermore TASes always coexist perfectly peacefully with RTA runs as can e.g. be seen in the case of [Trackmania](trackmania.md) -- in 2021 TAS tools started to appear for Trackmania and many people feared it would kill the game's competition, however after the release of the tools no such disaster happened, TAS became hugely popular and now everyone loves it, human competition happily continues, plus the development of the tools actually helped uncover many cheaters among the top players (especially Riolu who was forced to leave the scene, this caused a nice drama in the community).

We could even go as far as to say that morally TAS is the superior way of speedrunning as it puts humans in the role or thinkers rather than treating them as wannabe machines who waste enormous amounts of time on grinding real time runs with arbitrary obstacles (such as requiring a run to not be spliced etc.), which a real machine can simply do instantly and perfectly. There is really no point in someone spending 10000 hours of life on getting lucky and nailing a series of frame perfect keypresses when a computer can do this in 1 second.

Yet another recent controversy arose in Trackmania with so called **low input** runs. Here firstly a TAS is made to finish a track very fast by exploiting a [bug](bug.md) that shoots the racecar right into the finish, and this is done so that the run requires only very few precisely timed key presses after start. Normally TAS runs are practically impossible to be reproduced by humans, but once there are only few keys to be pressed, it becomes very doable and practically reduces the task to a rhythm game. The player just has to learn when to press the keys and then grind until he hits them on exact frames, and he can even do this blindfold, without even knowing anything about the game. Of course RTA runners dislike being beaten like this, so they set up a rule enforcing a certain minimum number of inputs for RTA runs.

## See Also

- [speedrun](speedrun.md)