Red Ball is a flash physics based platformer that
was released in 2009. Based on the box2d physics engine, the game is known for having extremely
satisfying, intuitive gameplay that allows the player to command an immense amount of control.
Over the past 12 years, through the large-scale community efforts of glitch hunting,
strat finding, and dedicated running, the 12 main levels of the game have been conquered
by human hands in less than three minutes. With such a dedicated following, it would
make sense that Red Ball would have a TAS or tool-assisted speedrun as well, where a
sequence of inputs are programmed ahead of time and read by the game with the goal of creating
the best theoretical completion of a video game. With how optimized Red Ball is as a speedgame,
with top times being just seconds apart, one would probably expect this tool-assisted speedrun
to be just a moderate improvement; with a game as basic as Red Ball, you would probably expect
the TASsing scene behind it to be pretty simple. However, thanks to the immense dedication of a
select group of individuals, Red Ball’s nature as a physics sandbox has been thoroughly exploited in
order to produce a TAS speedrun of just 2 minutes and 28 seconds, over 25 seconds faster than the
real-time world record performed by Caramel. In this video, we will go level by
level through the current Red Ball TAS, thoroughly analyzing every single glitch,
strategy, and technique that is used, which will include a detailed, technical explanation
of why the infamous spike glitch works, a glitch that can seemingly grant Red Ball
invincibility to spikes just by briefly pausing the game. This is the Red Ball Tool
Assisted Speedrun World Record fully explained. Firstly, it is important to provide some
background on the flash game TASsing scene as a whole and the challenges that we have faced in
order to actually produce a TAS of Red Ball. The vast majority of games are TASsed using some kind
of emulator that supports it. TASsers use emulator functions such as save states, slowdown, and frame
advance in order to craft the desired inputs, which can be saved, shared, and played back at any
time. Unfortunately it is currently impossible to TAS the majority of flash games using this method.
The best platform for speedrunning flash games, the official standalone adobe flash player,
does not support any TASsing functions, unsurprisingly. The three flash game emulators
currently in existence, those being Gnash, Lightspark, and Ruffle, have extremely poor
compatibility with the immense flash game library. Both Gnash and Ruffle only support most
Actionscript 1 and 2 games, essentially only reaching flash games from versions 1-8,
which does not include Red Ball. And though lightspark does technically support actionscript
3… it doesn’t really produce the greatest results. Not to mention that none of these emulators
have any TASsing capabilities. Thankfully, libTAS, a linux based piece of software intended
to provide TAS tools to games, has been able to link with Gnash to allow TASses of games like
Wubbzy’s Amazing Adventure to be created. Unfortunately, for Red Ball,
this leaves no deterministic, external measures for producing
a TAS. So, in February of 2021, the game itself was modified in order to program
in necessary tassing capabilities like savestates, frame advance, input writing, and input loading.
The TAS hack went through dozens of iterations, with new features constantly being added like
a timer, velocity information, contact body information, hitboxes, contact points, and most
recently, an accurate visualizer for how spike glitch is actually working in real time. On
a detailed view of the hack, you will find an input display here, the current level time here,
Red Ball’s x, y, and rotational values here, his corresponding positional values here,
and his object contact information here. It is also worth mentioning that Red Ball
runs at a very unusual 31 frames per second, so if the decimals for any level times seem weird,
that is why. Now, with all of that out of the way, let us delve into the TAS of level 1.
The TAS of level one features Red Ball jumping twice, completing the extremely straightforward
level in 3.065 seconds.. Simple, right? Wrong. First of all it is worth noting that, while RTA
speedruns start timing from the first input, the Tool-assisted speedrun starts timing right
upon loading level 1. Red Ball spawns slightly above the ground, and since Red Ball accelerates
faster on the ground, it is actually possible to complete level 1 two frames faster starting
timing from there (n31d15e4n30a1e8n36). However, the TAS must start by holding right on the first
frame. In the air, Red Ball gains 0.25 horizontal or x velocity every frame. When he hits the
ground, he starts gaining 0.5 x velocity every frame, but the physics engine starts converting
some of this x velocity into rotational velocity at a 1:2 ratio, eventually equalizing them. Once
Red Ball’s x velocity is greater than or equal to 5, the game is supposed to prevent him from
generating any more through this block of code. Red Ball is at 5.17 x velocity on this frame,
so no more velocity is generated, and 0.17 x velocity gets converted into 0.33 rotational
velocity, equaling them out at 5.00. However, due to a double rounding error, Red Ball’s
exact x velocity is actually 4.999999999999999, which the game interprets as being less than 5.
So, Red Ball is then able to generate 0.5 more x velocity on the next frame, raising it up
to 5.50, or 5.499999999999 to be more precise. On the next grounded frame, the game would convert
0.17 x velocity into 0.33 rotational velocity, equalizing the two at 5.33. However, the TAS
jumps on this frame, preventing the conversion from happening. This whole technique is known as
a 5.50 jump. Red Ball travels in the air at 5.5 x velocity, but before just hitting the ground,
the TAS actually presses left for a frame, causing Red Ball’s x velocity to drop
back down to 5.00, or 4.99999999999, just below the speed cap. This allows Red Ball to
reach 5.5 x velocity just before the next jump. This technique is known as a left-right jump.
Had this left press not been performed, the game would have performed the 1:2 rotational velocity
conversion, equalizing the two velocities at 5.33. This left press is the difference between
a 3.097 and a 3.065, saving a single frame. Upon collecting the flag, Red Ball must wait 2.8
seconds before progressing to the next level. The timer would normally expire after 87
frames, equating to 2.806 seconds at 31fps, but inconsistent frame times can push this to
88 frames or more, which loses time. The game also spends some time actually loading the next
level, time which isn’t counted by the TAS timer since it is based off of how many frames the game
has processed. However, to try to keep the game running at an average of 31fps, flash greatly
reduces the frame times of the starting frames in the next level, causing the time “save”
and time “loss” to effectively equal out. The Level 2 TAS starts with a similar 5.5 jump
to level 1. The jump key is released at a certain frame, and just before hitting the ground, a two
frame left input is performed in the air to set up another 5.50 left-right jump. Red Ball lands
perfectly between the ground and this triangle, allowing for the first instance of a compound
jump in the run, where Red Ball is able to gain a large amount of height by executing two vertical
velocity generating events in short succession. In this case, Red Ball is able to first jump
on the ground and then on the triangle on the very next frame. This allows Red Ball to gain a
massive amount of height, positioning him above the pendulum. Upon hitting the pendulum, much
of its momentum is transferred into Red Ball, on top of a sizeable chunk of Red
Ball’s y velocity being converted into x and rotational velocity, putting Red Ball
far above the intended 5.0 speed cap. Red Ball then lands on the back corner of this platform,
allowing even more y velocity to be converted, a technique known as a corner boost.
The bounce off the pendulum is actually slightly nonoptimal to allow for this to happen,
with it saving a frame over the old method. Red Ball lands on the final platform and collects the
flag with a x and rotational velocity of 8.89. The TAS starts by moving Red Ball to the right
but unlike the first 2 levels, the typical 5.50 jump is not performed, since the jump point does
not line up well with the rest of the level. Thus, a left-right jump is performed instead.
Left is pressed by itself for one frame, dropping Red Ball’s x velocity from 5.33 down to
4.83. On the next frame, both the jump and right keys are pressed, and 0.33 rotational velocity
is converted into x velocity at a 2:1 ratio, raising it to 5.0, and the right press
generates 0.5 x velocity, raising it to 5.50. Red Ball then lands in a pit of deadly
spikes… and lives. This is how it happened. As Red Ball moves around any given level,
both the level and Red Ball must move in the opposite direction each frame to keep
everything centered in the game’s camera, similar to a person running on a treadmill. So,
the normal update order is to move Red Ball, move everything in the opposite direction
to compensate, and then render the next frame. However, if the screen scrolling
acted in a completely linear fashion, the game would look extremely stiff, and Red
Ball’s movement wouldn’t feel very natural. So, Red Ball uses something called a Tweener to
control the scrolling of the screen. Following an equation curve that looks something like this,
the screen smoothly scrolls over a maximum period of one second to keep Red Ball near the center.
This is why Red Ball’s position in the camera isn’t completely fixed and why the camera often
continues to scroll for around a second after Red Ball comes to a complete stop. To check if
Red Ball is contacting any spikes, the game uses 16 equally spaced test points around Red Ball’s
circumference. During the Game update phase, after Red Ball’s position is updated, a point to pixel
check is performed between these 16 pixels and the spikes in the level, using the last rendered
frame. If any of the test pixels are overlapping a spike pixel, Red Ball will die. The Tweener
then activates, and the next frame is rendered, showing red ball in eight exploded pieces.
However, something really interesting happens when the pause menu is opened. Game updates stop
happening, shown by Red Ball ceasing all movement, but the screen-scrolling Tweener is actually still
active. You can see that when I pause the game, the screen spends a second catching up to Red
Ball despite no other game updates happening, and after this second, the tweener deactivates. After
unpausing the game with the menu open for over a second both the Game and Tweener enter the update
loop again as normal. However, what happens if you unpause the game before a second has elapsed?
Since the Tweener is still active, it is only the Game updates that need to be reinitialized, and
because of Flash’s ordering, it is placed after the still-active Tweener in the update loop. With
this, screen-scrolling effectively gets delayed by a single frame, something which is completely
imperceptible to people playing the game. However, this tiny change makes an enormous difference when
it comes to Red Ball’s spike collision detection. In this frame from the TAS in level 3, Red
Ball is shown as being just above this spike pit. With the tweener placed before the
game updates due to a sub 1 second pause, the whole screen scrolls to the left, acting on
the movement that happened on the previous frame. Red Ball’s movement is updated, placing him down
and to the right, still barely above the spikes. The spike collision check fails since no test
points are overlapping spikes, and then the current frame is rendered. Now on the next frame,
the out-of-place Tweener scrolls everything to the left, and then Red Ball’s position is updated,
placing him inside of the spikes. It appears that Red Ball should die during the spike check since
one of his test points is overlapping a spike. However, this isn’t so. Now recall that the
last rendered frame still looks like this. The internal position of Red Ball is here,
and the internal position of the spike pit is here. Though the spike pit may look like one
object, each individual spike is actually its own object with its own rectangular bounding box.
When a pixel check is performed in Flash Player, an important optimization takes place that
dramatically speeds up game performance; Flash first checks to see if a test point is in
the bounding box of the desired object before checking to see if the point is actually
overlapping with a pixel of the object, since bounding box checks are orders of magnitude
faster than the pixel checks. This optimization makes complete sense, since the pixels of an
object should always be enclosed inside of its bounding box. However, thanks to a misplaced
tweener, the actual spikes and their corresponding bounding boxes are not in the same location as the
spikes shown on the previous rendered frame. For each spike, almost the entire object, shown by its
previous rendered frame position, is not inside of its current bounding box. When Flash performs the
spike collision check on Red Ball’s test points, it passes the bounding box check, but the point
to pixel check fails since it is performed against the previous rendered frame. The only area where
Red Ball can fail the spike collision check with spike glitch active is where a current spike’s
bounding box overlaps itself from the previous rendered frame, an area that becomes smaller as
Red Ball’s speed picks up, completely disappearing at very high speeds. Due to a tiny mistake made
while programming the game, and due to a tiny optimization oversight that exists in Adobe
Flash Player, spike glitch exists. However, this doesn’t explain why it is inconsistent,
with identical inputs yielding different results, and why its consistency improves when
playing the game at higher resolutions. Each frame, the tweener moves in accordance
with deltas that come from the system time, rather than in accordance with the frame
time, which is 32.258 milliseconds at 31fps. If Red Ball ran perfectly at 31fps all the time,
this wouldn’t be an issue, however this is not the case. Flash simply tries to average 31fps,
which means that frames can end up being either shorter or longer than 32.258 milliseconds as
the framerate rises and dips respectively. If a frame takes 30 milliseconds, meaning the the
framerate is instantaneously above 31, the tweener will only scroll by this corresponding y
position on the one-second long tweener function, incurring less screen scroll than expected,
making the spike hitboxes larger than expected. If a frame takes 35 milliseconds, meaning that
the framerate is instantaneously below 31, tweener will scroll by this y position on the
graph, incurring more screen scroll than expected, making the spike hitboxes smaller than expected.
This is an absolute nightmare for TASsers, since a programmed set of inputs are unable
to yield the same result every single time: it isn’t deterministic. No kind of RNG
manipulation will ever fix this issue because there is no RNG causing it to happen;
it is simply impossible to force flash to run at a perfect 31fps at all times. Therefore,
in the TAS hack of the game, the tweener was modified to use 31fps frame timing instead of
the system time, which makes the amount that the screen scrolls completely deterministic and
makes the game overall significantly less jerky. Now, let’s touch on why higher resolutions make
spike glitch more consistent. As mentioned before, the spike collision check is performed using
a point to pixel check, where a test point on red ball must be overlapping a pixel of
the rendered spike for the test to pass. At lower resolutions, like the game’s default
550x400 resolution, the spikes are very jagged, and the impacts of anti-aliasing are immense,
significantly increasing the space that the spike takes up in relation to its bounding
box. At higher resolutions such as 1920x1080, which is known as the sweet spot between
spike glitch consistency and game performance, the spikes are significantly more pointy, and
antialiasing has far less of an impact on the size of the spike in relation to its bounding box.
Counting the pixels, the pixels of a 550x400 spike take up around 63% of the bounding box, while
1920x1080 spikes are just slightly more than 50%, which is closer to what is geometrically expected.
Therefore, there is a much greater chance that one of Red Ball’s test points will overlap a spike
at the game’s default resolution. Interestingly, if you make the game window small enough, to the
point where it is basically impossible to play, spikes will never be able to kill Red
Ball since the pixels just never render. However, this technique is not allowed for
obvious reasons. Spike glitch has now been fully explained, and effective spike hitboxes will
be displayed in orange in the technical TAS hack view for the remainder of the video. Now, let’s
continue on with the second half of level three. Red Ball performs a 5.50 jump on the ground below
the spikes and lands on the right side of this elevator platform. Though one would expect this
platform to be very sturdy, it is actually only hinged on a single point in the middle. So, if
an object is able to land on the platform with the right amount of speed at just the right
position, the platform will actually tilt, snapping back into place on the next few frames.
On the last frame of kickback, the tas presses the jump and right keys, allowing for a compound jump
to be performed. Red Ball attains an insane -12 y velocity, note that down is actually the positive
y direction with flash games, and despite the influence of gravity, Red Ball is able to ascend
all the way to the top platform with the flag. However, instead of collecting the flag while
airborne, the TAS skims the ground behind the flag to allow for a few frames of grounded
acceleration to the left, saving two frames. Red Ball has to wait a bit at the start because of
the crusher cycles. A grounded left-right jump is performed, and Red Ball lands just past the corner
of this bottom stair. Through careful maneuvering, Red Ball grazes the corner of the fourth stair,
allowing for another jump to be performed without losing any x velocity. Red Ball then gets
a corner boost off this falling platform and jumps into this axe, completing the level.
The reason why this works is because of a strategy called the death warp, which is caused
by Red Ball’s position in the entire level being set relative to the camera upon death. In this
case, Red Ball is at about x position 815 and y position 240 upon dying. Relative to the 550x400
camera, this death warp position is offscreen, just barely overlapping the ending
flag, allowing for it to be activated. For a far more in depth explanation of this
strategy, make sure to check out my death warp explained video if you haven’t already. In the
TAS hack, the death warp position is shown by these two boxes, with the current position being
the lagging box and the eventual position after the screen scrolls being the leading box. The
death warp doesn’t happen until the frame after Red Ball dies, and as you can see, there is just
a sliver of the lagging box overlapping the flag, allowing for it to just barely be activated in
this TAS. In fact, if it weren’t for Red Ball’s hitbox fluctuating outwards and inwards while
moving, this speedy death warp would not be able to be performed as quickly. The hitbox fluctuation
is caused by a “square in square” phenomenon. A square of fixed size always encloses Red Ball’s
sprite, rotating as the ball rotates. However, since all bounding boxes in adobe flash player
need to be parallel with the coordinate plane, another square with zero rotation must enclose
this first square, constantly expanding and contracting as the inner square rotates with
Red Ball. It is also worth noting that the TAS actually waits a frame longer than necessary at
the start, since going as soon as possible would cause the flag to be missed, and it is the optimal
alternative to slowing down before the flag since it would cause the camera to catch up to Red
Ball more, reducing the death warp distance. In level 5, the TAS performs a grounded left-right
jump, activates the wall trigger, and using a combination of up and left tapping, positions Red
Ball perfectly between the ground and the slope. Another left-right jump is then performed with a
compound jump on the ground and slope allowing Red Ball to travel in the air with 5.5 x velocity and
enough height to reach the flag. The first 3.871 was found through manual methods, but even with a
brute forcing script, nothing faster has been able to be found, meaning that it is likely impossible
for this level to be completed any faster. Through a combination of quick left and right
inputs, Red Ball lands on the beginning ramp in such a way that a massive amount of vertical
and horizontal speed is able to be built up, actually freezing Red Ball’s position for a
few frames, a result of Red Ball landing on the thin intersection between two different collision
polygons, something which is specifically avoided in the level 5 TAS to prevent losing any
unnecessary time. At this specific point on the slope, the TAS is able to perform
a compound jump between two of its edges, allowing Red Ball to gain a massive amount
of height while travelling with an enormous x velocity of 9.20, the highest that has been
generated in the TAS thus far. With this setup, Red Ball is able to graze the corner of this
grassy platform, allowing for another jump to be executed without losing any x velocity. Red Ball
makes it all the way to the large turbine, getting a corner boost off of the top spoke, raising
Red Ball’s x velocity all the way to 12.81! Then, Red Ball gets yet another corner boost off
the next spoke, raising it to 13.16. Before Red Ball lands, left is pressed for one frame, and a
final corner boost raises the x velocity to 14.66, almost three times the speed cap set
for normal grounded acceleration. Red Ball jumps onto this bounce platform, and
at the very peak of its bounce, a compound jump is able to be performed. Red Ball exits the
platform with a massive -15.6 vertical velocity, and by holding the jump button on the way up,
Red Ball is able to reach the top section of the level. Red Ball performs a corner graze jump,
jumps in the spike pit thanks to spike glitch, jumps on top of the box stack, and then
surprisingly falls back down to the bottom. For top level RTA speedrunners, this occurrence is an
instant reset, as it typically loses 3-4 seconds over staying on the top route the whole time.
However, the TAS is able to use the falling boxes to do something pretty magical. Red Ball lands on
the right side of this box, reaching an x velocity of 5.55. He then corner boosts off this second
stairstep and then off of this third stair step, reaching a velocity of 10.11. A velocity of
around 12-13 has been obtained before, but this causes Red Ball to hit the red wall later in
the level, actually making it slower. A compound jump is then performed on two of the edges of
this ramp, just barely allowing Red Ball to reach the second bounce platform, where another
compound jump is then performed. Red Ball gets yet another corner boost off this ground segment
and ends the level with an x velocity of 12.44. Red Ball is maneuvered to hit the steep parts
of the beginning ramp as much as possible without pressing the left key too much.
A short jump is performed on this frame, and the jump button is released and pressed again
to manipulate Red Ball’s subpixels to allow for a jump to be performed on the ending tip of the ramp
while barely losing any x velocity. Once again, the jump button is released and pressed again
to manipulate Red Ball’s subpixels again. Red Ball barely avoids contacting this barrier and
barely makes it under the first pencil without contacting it thanks to the manip. Red Ball enters
the car, and it appears in the contact list quite a few times due to red ball colliding with the
many razor thin polygons that make up its body. When the car catches the downward slope, Red Ball
jumps out of the car and lands on the top of the windshield. Red Ball lands on the hood, and the
front wheel of the car begins to clip inside of its body, another consequence of the car’s makeup.
The wheels clip further and further inside the car until eventually, it gets ready to snap back. Red
Ball slightly clips inside of the car himself, causing him to contact all ten of these internal
polygons at the same time, shown by the contact listener. A few frames later, the car becomes
this mess, and Red Ball comes in contact with the displaced right wheel of the car. The next frame,
everything instantly snaps back into position. Without even jumping, Red Ball goes
flying an an immense x velocity of 24.28, the highest that is attained in the entirety of
the TAS. Red Ball quickly reaches the flag, the car nowhere in sight. Leaving the level playing,
it takes over 3.5 seconds for it to catch back up. At the start of level 9, the TAS stalls Red Ball
a bit so that more x velocity can be built up on the ground of the first slope, making it possible
to jump all the way to this corner and receive a corner boost. Red Ball rolls straight
through the spikes thanks to spike glitch, jumps on this specific part of the slope, and
then gets a corner boost at the end of the ground platform. Red Ball lands on the moving green
platform, and activates one of the green buttons, causing the platform to disappear. The TAS also
executes a jump input on this frame which is able to go through since Red Ball’s groundedness
check occurs before the button activates and the platform disappears. Red Ball gets a
compound jump between the ground and this slope, causing him to ascend above the intended
route for the level. Extra speed is also gained here from red ball boosing off some of
the internal polygons on the platform. A short jump is executed as soon as possible, and the left
button is tapped to set up a corner boost off the end of the plunger as it moves around. Red Ball
jumps off the first pendulum just past its peak, generating some x velocity, and lands on
the back side of the third pendulum to receive another small boost, reaching the
flag platform with an x velocity of 17.15. The TAS holds right at the start, but the button
is actually released for a single frame at this point. This is done to manipulate Red Ball’s
subpixel position and allow for a faster corner boost off of the first barrier. Red Ball survives
in the spikes due to spike glitch, gets a corner graze jump off the second barrier, and gets
a back corner boost off the fourth barrier, leaving red ball with 7.61 x velocity. A compound
jump is performed on the first bounce pad, giving red ball enough height to skip the other
two bounce pads. A compound jump is performed between the ground and slope, red ball generates
velocity off of the box, and quickly jumps between the first and second boxes, effectively producing
a compound jump. This doesn’t generate as much height as normal, but it is enough to position Red
Ball on the back side of this stone, where a large amount of y velocity is converted into x velocity.
With just one jump in the spike pit, Red Ball is able to barely avoid being grounded on the spoke,
and collects the flag with 13.33 x velocity.
Red Ball neutrals at one frame at the start
to allow for a slightly faster train push. By pushing against the front side of the
train, the space between the carts compresses, allowing red ball to exit from being under
the spikey ceiling earlier than normal. Barely squeezing through the gap with spike glitch, Red
Ball lands on the ridge between the 10th and 9th carts on the train. After jumping, you may have
noticed that the game still has the 9th cart, in the game’s contact list. So, what exactly
causes this to happen? Rewinding a few frames, we can see that Red Ball first makes
contact with the 10th cart. The next frame, Red Ball is contacting both the 10th and 9th
carts, so they are both in the contact list. However, on the next frame, the 10th cart
somehow enters the contact list again, which would indicate that Red Ball is touching
two of the internal polygons. However, looking at the debug view, it just looks like one
rectangle. But, Zooming wayyyyyy in on Red Ball, you can see that there is an extremely
thin polygon on the right side of the cart, its existence likely caused by a weird attachment
to this solid connector piece. On the next frame, Red Ball leaves cart 10, meaning that the two
entries should get scrubbed from the contact list, however, due to a programming oversight, the
game simply removes the first two objects in the contact list, which happen to be the larger
rectangle of cart 10 and the body polygon of cart 9. On the next frame, before Red Ball jumps,
the game notices that he is touching an object, cart 9, which is not in the contact list, so
it adds it in there. Red Ball’s jump is then executed, and on the next frame, the game sees
that Red Ball is no longer contacting cart 9, so it removes the first entry from the contact
list, which is the razor thin polygon on cart 10. So, that is why Red Ball enters the air with the
game thinking he is still contacting the 9th cart, something known as a contact bug. This is
extremely useful, since, for jumping in this game to be allowed, two conditions have to be
met; there must be something in the contact list, and at least one of Red Ball’s three contact
points below him must be activated, determined by whether they are within any solid Box2d body.
When Red Ball approaches the red spikes, there is a frame where, hovering just above the object,
the middle contact point turns green. Because of the contact bug, the two conditions for Red Ball
jumping are satisfied, so he jumps just above the spikes without ever actually contacting them. This
happens another time with the distance between the hitboxes being so close that it's impossible
to zoom in enough to see the gap. Red Ball successfully clears the red spikes, placing him
far ahead of his intended position in the train. Red ball corner boosts off the first black
platform, causing it to enter the contact list, and as Red Ball exits the platform, the first
entry is removed, cart 9, leaving it in the contact list. This phenomenon happens with
all future objects that Red Ball touches; once the contact bug is activated, it can’t
be removed without restarting the level. The flag at the front of the
train is collected around 12 seconds faster than what the
game intends to be possible. Red Ball jumps up the barrier at the start
and then jumps upon reaching 5.5 x velocity. Red Ball lands in the first spike pit, using a
left-right tap to maintain 5.5 x velocity, but a jump is not executed right away. This is to allow
red ball to enter the covered section without bonking on the ceiling, which would otherwise lose
several frames. A left-right jump is used to keep 5.5 x velocity in the covered section, another
left-right tap is used before hitting the ground, and another left-right jump is used to exit the
covered section. A corner boost is performed off the box, the small spike pit is jumped in, and
red ball actually bonks on the corner of this platform before the saw blade, something which
unfortunately can’t be avoided given the speed that Red Ball is moving. Red Ball performs a
compound jump between the ground and the bottom stairstep, and rides the top of the ski lift
ramp to reach the end of the main game in just 2 minutes and 28 seconds. However, this is not the
end of the TAS. There are five, once-sitelocked bonus levels after the main game, and . Due to a
king.com advertisement that existed in the game, prompting users to travel to the site to play
the bonus levels, the transition between level 12 and level 13 is ten seconds as opposed to the
normal 2.8. So, let’s move onto the bonus levels! Red Ball rolls into the jaws of knockoff pac-man, exiting on the first frame possible. Red ball
jumps once roughly 5.5 x velocity is reached, and resets at the checkpoint flag upon contact.
This resets all of the objects in the level to their default position, a technique which is
used far more often in RTA speedruns. Red Ball jumps through the metal platforms, bonking on the
bottom of them to reduce Red Ball’s y velocity and allow for jumps to be executed as soon as
possible. Then, Red Ball jumps against this wall, and is able to get launched above it. This
is possible because Red Ball gets stuck in the wall for a few frames due to interactions
with thin polygons. While Red ball is stuck, he is able to jump multiple times in the same spot.
Red Ball gets a corner boost off the green wall that is supposed to be removed with the switch
to allow for further progression in the level, and then jumps off of the ground. Red Ball
lands on the back edge of the moving platform, and in the middle of the deflection, Red Ball
is able to jump with a very low y velocity, placing him in between the tiny gap created
by the spinning star and the end platform. A short idle is used at the beginning, and Red Ball jumps over the spike pit and then into
the top-left corner of the moving platform for a corner graze jump. Red Ball executes a jump on the
right side of the 1 ton ball to convert much of this vertical velocity into horizontal velocity.
A jump is performed just before this catapult, and Red Ball is able to execute a compound jump
between the ground and the top-left corner of the catapult's bowl. Red Ball completely skips
the level’s puzzle, jumps on the ground, gets a corner boost off the falling black
platform, and executes a jump at the front of the next patch of ground, allowing Red Ball to
ascend just above the ninja and collect the flag.
Right is pressed and unpressed multiple times
near the top of the slope to allow Red Ball to get the greatest amount of speed possible from
it. There is no concrete method to this madness; it was simply bruteforced with a program
made by roblox8192 that tried thousands of combinations of right presses to find the one that
generated the greatest amount of speed. Red Ball jumps and gets a corner boost off the back of the
ground. He then lands on the slope of the ending platform as soon as possible, which allows for the
greatest amount of speed to be generated from it. Red ball accelerates to the right and jumps into
the bottom left corner of this platform in a way that lowers his rotation velocity. This allows
for a cleaner entry into the underground section of the platform, since Red Ball’s rotation
isn’t pulling him to the right upon landing. However, if this technique is overdone,
the entrance is extremely clean, but time is ultimately lost due to Red Ball
spending too much time hitting the wall. This optimal implementation of this strategy saves
two frames since the downward y velocity lost by contacting the wall has a great impact due to
how long the fall is. Red Ball’s hitbox size is manipulated with careful maneuvering to allow the
flag to be collected a frame earlier than normal. Red Ball jumps into the tip of the first star
since this allows him to get a boost off of the slope behind it without having to press left. Red
Ball jumps once roughly 5.5 x velocity is reached, and a corner boost takes red ball into the
bounce platform. A compound jump is performed, but the horizontal distance traveled is cut short.
Red Ball lands on the slope behind the tip of this rotating star, allowing for a considerable amount
of y velocity to be converted into x velocity. Red Ball gets a corner boost off the
next tip, and performs a graze jump off the left tip of this star. Crossing
the large gap between the two crowns, avoiding the moving platform, Red Ball gets
a corner boost off the tip of this star, gets a corner boost off the next tip, gets
a graze jump off the elevator platform, and reaches the flag platform, closing off the
17 levels time at just 3 minutes and 38 seconds, over FIFTY seconds faster than the current
world record of 4:30.663 by Caramel. So, there you have it. The Red Ball Tool-assisted
speedrun world record fully explained. In this video, we covered how 5.5 jumps, compound
jumps, left-right jumps, corner boosts, spike glitch, death warp, hitboxes, and contact
bugs all function. Red Ball is a game made for a platform that largely shut down at the start
of 2021, but that hasn’t stopped the community from completely taking it apart, maximizing the
potential of the game in both real time and tool assisted speedruns. As flash emulators improve and
more TAS hacks are created, I sincerely hope that our efforts will inspire the creation of TASses
for other flash games like Run 2, Fancy Pants, Toxic II, and Fetch-a-fruit. A huge thank you
goes out to all of these people for helping me immensely with this project, and I would like to
thank you for watching all the way to the end.
Super cool video, but "I would probably expect the TAS to be a moderate improvement/simple"? Uhhh... no, I expect the TAS of a game based on a physics engine to be ridiculous and probably very silly and nothing like human attempts.
Maximum is legit becoming both the Summoning Salt AND Bismuth of flash game speedruns
Hey, where could I download this version? Just want to see the UI.
how did you get the tas hack