This commit is contained in:
Miloslav Ciz 2024-11-22 17:05:15 +01:00
parent 481775ca4b
commit 5e0ba22bba
10 changed files with 1877 additions and 1871 deletions

6
tas.md
View file

@ -6,12 +6,14 @@ Tool assisted speedrun (TAS, also more generally *tool assisted superplay*) is a
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 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 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.
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 great 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 needs to also do some [programming](programming.md) etc. 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 extremely 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 -- 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).