Red Ball Tool-Assisted Speedrun World Record Explained

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

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.

👍︎︎ 2 👤︎︎ u/[deleted] 📅︎︎ Oct 12 2021 🗫︎ replies

Maximum is legit becoming both the Summoning Salt AND Bismuth of flash game speedruns

👍︎︎ 1 👤︎︎ u/Aprrni 📅︎︎ Oct 12 2021 🗫︎ replies

Hey, where could I download this version? Just want to see the UI.

👍︎︎ 1 👤︎︎ u/E_Lander 📅︎︎ Oct 25 2021 🗫︎ replies

how did you get the tas hack

👍︎︎ 1 👤︎︎ u/Amazing_Gur_7666 📅︎︎ Mar 14 2022 🗫︎ replies
Captions
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.
Info
Channel: Maximum
Views: 740,189
Rating: undefined out of 5
Keywords: maximum, speedrun, red, ball, progression, wr, wr history, red ball, itsmaximum, games, speedrunning, world record, red ball speedrun, red ball wr, death warp, its maximum, redball, flash, red ball 4, tas, red ball tas, red ball tas explained, tas explained, speed, run, tool-assisted, perfect, world, record, explained, explanation, breakdown, TASing, spike glitch, tas wr, TAS, tas speedrun, speedruns, speedrun world record, Maximum, tas hack, flash game tas
Id: 07NVysUGjhk
Channel Id: undefined
Length: 40min 51sec (2451 seconds)
Published: Tue Oct 12 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.