Character and Unit Sizes
Your character hitbox is 48 units wide and 96 units tall.
A 1x1 block tile is 48 units wide and 48 units tall.
Speed units in debug data are in units per second (per 60 frames).
Terminal Velocity aka Maximum falling speed
Man/Girl- 2304
Kid/Worth- 1843
Character States
Your movement abilities generally correspond to a state that you will be put into that lasts for some duration. These states, and the transitions between states are what makes up a large portion of the movement techniques seen within the TAS.
Dustforce accepts inputs at 60 fps, however for the player, physics steps are done at a rate of 5 per frame, we count each of these physics steps as 1 “subframe”. States may not last a “clean” whole frame number, and instead might end on a subframe instead. Inputs are only registered on a full-frame basis, but manipulating our inputs so that a specific event occurs at a specific subframe is still often possible.
Dash
When you dash, first your speed is converted to horizontal (possibly with some loss) if in midair, then if your speed is below your character’s dash speed it is increased to that value. After these conversions occur, your velocity is locked in (barring collisions with surfaces) for the duration of the dash (12.5 frames, which due to subframe counts rounds up to 12 frames and 3 subframes under normal circumstances).
When your character has a boost, dashing to lock the speed value is very important. Dash inputs will buffer for the remainder of the frame on which the input is sent. Due to the input buffering, this allows a new dash to begin directly after the previous dash ends, even when that occurs on a subframe that normally does not accept inputs. This is what we call “perfect dash rhythm” and results in a repeating sequence of 5 dashes. This rhythm normally follows a 12-13-12-13-13 pattern due to the three subframes of spillover each dash. If your dash input is processed on the first subframe, your dash will always begin at the beginning of the sequence. If your dash input is buffered, you can start anywhere in the sequence, based on what subframe the dash started. When you have an available air charge to use, buffering a ground dash is normally only possible if you would land within one subframe, as otherwise an airdash occurs. If it’s not possible to buffer a dash or precisely time your landing, you may undergo up to 4 subframes of landing state friction before you can dash, significantly reducing your speed, though this can sometimes be reduced to 1 subframe through use of a land-canceled downlight. This means buffered or timed dashes are usually much preferred for keeping maximum speed.
When dashing in midair, if your speed vector angle before the dash is within 18 degrees of horizontal, in either direction, 100% of your total speed is transferred into the dash, giving you a horizontal speed boost. This is known as Aerial Dash Boosting. When outside of this 18 degree range, you still keep a portion of your speed (1-change in angle/90°) so it’s still possible to airdash faster than normal dash speed when travelling at a sharp angle, but a significant amount of speed will be lost.
Has 2 frames where your character is invulnerable to enemies during the dash
Ground Jump
When not in slopeslide state, a ground jump has 7.5 frames (rounding up to 7 frames and 3 subframes, like with dashes) of startup. This startup will end immediately if the player would become airborne, leading to a “ledgejump.”
If the player is still holding jump when jump startup completes, the player gets a “fulljump,” if not then a “shorthop” will occur. A shorthop normally gets slightly less initial upward velocity, and experiences significantly more gravity during the rising part of the jump.
At the start of the jump, your upward velocity is increased to your character’s jump velocity if it is less. However, if you already have more upward velocity (almost always because of a significant speed boost which you have transferred to an upward ramp), then you will instead keep your current Y velocity, even in the case of a shorthop.
When jumping from the ground, your total speed is converted to X velocity in the direction of the jump, then capped based on your new Y velocity. This means that when travelling up or down slopes, you may gain some X speed because you no longer have the angle of the ground working against you, and when turning around as you jump you can most maintain a sizable portion of your speed in the opposite direction. However, friction during jump crouch will significantly reduce your speed, and the speed cap usually limits horizontal velocity to not much above dash speed (exactly how fast depends on your character’s initial jump velocity), even if you were previously going much faster.
In the case of a “ledgejump,” however, the jump doesn’t consume an aircharge, but uses the airjump rules for X velocity. (See below.)
You must wait 5 frames after a jump before you can jump or dash, and must wait 10 frames before you can enter a Wall Grab state.
Ledge jumps can be used to reduce your jumpsquat total length, allowing you to leave the ground sooner and begin moving upwards. In cases where upwards movement is the highest priority, but the nearest ledge is “facing” the opposite direction your are trying to move horizontally, you can still use the property of the ledge by beginning your jump such that instead of instantly jumping on the same frame, your jump input is 2 frames long, the first frame is spent moving towards the ledge, and then you can input the opposite horizontal direction to the ledge on the 2nd frame, giving you a jump with 300 X speed similar to an Air Jump, these are called Reverse Ledge Jumps, often shortened to RLJ’s.
The unique properties of the ledge climb state allowing downdashing are particularly useful for setting up our movement such that we can land on a subframe boundary and then be moving towards the ledge, such that we “slip” off the ledge on the following subframe which is on a different “whole/full” input frame. This allows us to dash and ledgejump simultaneously “into” the ledge jump in the opposite direction of normal fullspeed ledgejumps, while still keeping the majority of our horizontal speed. These do take more time to setup than a traditional ledgecancel, so they are not always faster, but these are a TAS-only tech that saves significant time and is used in many places throughout the run. These are known as Ledge Slip Jumps, often shortened to LSJ’s.
LSJ’s are normally dependent on the subframe you climb over the ledge at, to be aligned for the fastest setups, but these fastest setups are often multiple frames faster so adjusting your climb to be slower to be aligned for a better subframe you climb over the ledge is often better than using suboptimal LSJ setups.
Air Jump
A jump perform in midair has no jumpsquat or startup delay, and thus occurs instantly. As such, jumps in midair cannot be a shorthop and will always give the same height as a “fulljump.” At the start of an air jump, your Y velocity is set (or left alone) using the same rules as with ground jumps, above. However, your X velocity is set according to what direction you’re pressing:
If pressing neither left nor right and your X velocity is between positive and negative 300, it’s immediately set to 0. Otherwise, it’s left at its current value.
If pressing a direction, then your X velocity is set to a minimum of 300 in that direction if it’s less (or in the opposite direction). If it’s already 300 or greater in the appropriate direction, then it’s left at its current value.
Air Dashjump
While in hover state, which begins in the air when a character no longer has upward velocity and ends when falling faster than a certain speed, the order in which inputs are checked allows the player to both dash and jump on the same frame in the air, even if the player has only one aircharge. In this case, the dash is applied, setting the player’s horizontal speed to dash velocity, then the jump is applied, immediately cancelling the dash and giving the player the vertical velocity of a jump. This allows the player to gain significant horizontal speed in the air without sacrificing the ability to airjump (or, in the case of Dustkid, airjump twice). These are very useful when wanting to change movement direction in midair while also needing to jump.
As with normal airdashes, a speed conversion is applied at the start so it’s also possible to get an Airdash Boost when performing an Aerial Dashjump, which is known as an Aerial Dashjump Boost.
However, since the dash state is immediately canceled, the speed will not be locked in as it would be with a normal Airdash Boost.
Ceiling Grab
Also known as “Ceiling Cling” or “Neutral Ceiling Run”
The first 10 frames are frictionless, allowing full speed conservation, this is increased to 15 frames as normal Dustman as mentioned earlier.
Can be transferred into Ceiling Run, which gives the 10, or 15 frictionless frames of the ceiling grab, followed by the 20 frictionless frames of the ceiling run, allowing a larger amount of time spent on a ceiling to have no speed reductions. This technique of transferring between a Ceiling Grab and Ceiling Run is known as a “Mapler Slide”, sometimes shortened to just “Mapler”, named after the player who pioneered the technique.
Once friction has started to apply, releasing from the ceiling has a 10 frame delay, this occurs regardless of the ceiling tiles ending, so can be extended into midair, this is known as an “Air Extended Ceiling Slide” (Or sometimes just Air Ceiling Slide, often shortened to ACS). Notably this ceiling run friction is frequently a smaller penalty to your speed than leftward air friction or, if travelling at an upward angle, gravity, so it is still intentionally used and saves time occasionally.
This tech is where some character downsides can actually become upsides. Girl has only 10 frames of frictionless slide on her Ceiling Grab, so she is able to ACS in 11-15 frames where Man cannot, sometimes enabling her to get an ACS that is otherwise impossible or slower for Man to achieve. The ability for different character properties to be both advantageous and disadvantageous depending on the situation is partially how the depth and complexity of optimization can be challenging and counterintuitive at times.
While in state Ceiling Cling or Ceiling Run, you will not collect ground dust while inside a 2 tile-high corridor. This can be seen in the level Development (or rather, we avoid it by releasing the ceiling to ensure we collect the dust so that it counts towards our meter for acquiring a Super to end the level)
Ceiling Run
Started by holding up and forward. You can only ceiling run in the direction you already have velocity, so e.g. holding up and left will leave you in Ceiling Grab state if you have no sideways velocity or X velocity toward the right.
Sets you to 522 (all characters’ run speed) if your speed is less, and is frictionless for the first 20 frames.
Same rules for releasing the ceiling apply as with Ceiling Grab state. Air Ceiling Slides can be performed after either state so long as you have reached the point where friction is applying.
Head Bonking
Also known as Ceiling Bonking, hitting your head on a ceiling without clinging to the ceiling, is useful when the ceiling is close to your current height, as you can jump cancel and downdash sooner than a dash cancel would allow. Ceiling boosts can be achieved without clinging to the ceiling, meaning in some circumstances it’s best to just briefly bonk the ceiling to get a small ceiling boost rather than having to actually grab the ceiling.
Wall Grab
Grabbing a Wall can actually be used to cancel several different states, most notably dashes and attack recovery. Walls can be used to cancel heavy attack recovery or perform a followup attack in a normally disallowed direction (seen on Dahlia and Archive), cancel aerial dashes to immediately let you downdash (seen on Titan), and cancel hitrise out of attacks that hit enemies (seen on Exa Difficult and Yotta Difficult).
Wall Grab itself may be canceled immediately by simply pressing away from the wall. When you do so, if you have downward Y velocity and are not holding down, your Y velocity is set to 0. If you have upward Y velocity or are holding down, you keep your current Y velocity.
Wall Run
Initiated by pressing up during a wall grab, wall runs immediately set your speed to 522 in the direction of the wall if it is less. During the first 21 frames speed decays linearly, after which it begins a significantly faster logarithmic decay.
Unlike Wall Grab, Wall Run cannot be canceled by pressing away from the wall, only by walljumping, walldashing, or reaching the ledge or ceiling at the top of the wall.
Wall Slide
When touching or inputting towards a wall, you can slide down it, most frequently done via “Wall Tapping” the wall while falling, or simply by sliding down a long slanted wall such as in the ending of Archive. Speed of the wall slide will vary based on character, directional inputs, and the angle of the wall.
Wall Jump
Has 5 frames of startup before jumping off of the wall,These give you the same height of a regular grounded or aerial jump, but usually give you only 348 horizontal speed and radically limit your air control until the peak of your jump. When jumping off an overhanging slanted wall, however, you receive significantly more horizontal speed, actually slightly over dash speed..
If the player is close enough to a wall when inputting a jump in midair, they will be immediately pulled over to the wall and start a walljump instead of an airjump. This can be used to save some time by walljumping before actually reaching the wall, but can also be fatal if the nearby wall has spikes on it. When performing an “early” walljump like this, if the player has upward velocity in the air and is holding up and toward the wall, the player will actually get some slight upward speed during the beginning of the walljump startup, as they would if they started a wallrun immediately before walljumping.
Can be edge cancelled, similar to a ledgejump, which is usually done at the top of a wall as we are wallrunning up it, and at the bottom of a wall as we fall past it, or if we are climbing from below and near to an edge, we can buffer a walljump combined with a downdash to give us an instant walljump. These downdash+walljumps on the same frame are called Corner Wall Jumps, shortened to CWJ’s.
Walljumps have no startup when performed from “wall grab idle” state, but reaching that state requires hanging on a wall for so long this is almost never useful.
It is possible to walljump and touch the floor at the corner of a wall and floor, this gives you a jump with fewer startup frames than a grounded jump, but restores your aircharge unlike a walljump. It does limit your jump trajectory but this is very rarely a “best of both worlds” useful factor to be aware of.
Walljumps also have no startup in several situations with slanted walls, if you do not spend enough time touching the wall before jumping you can jump off the wall without collecting the dust on the slanted wall.
Wall Dash
Has 5 frames of startup before releasing from the wall, these can be edge cancelled however, though it is rare to be able to do so. If you also have an air charge to use, you can wall dash and then airjump to jump with significantly higher speed than most walljumps would grant you, at the cost of an aircharge of course. However, during the very beginning of this dash, you’re still close enough to the wall to be able to walljump off of it, cancelling your dash and returning you to the wall.
As with a walljump, walldashes can be performed when only near a wall, but unlike a walljump, walldashes cannot be performed while holding toward the wall, only with a neutral or away horizontal direction input.
As with walljumps, walldashes have no startup from “wall grab idle” state, but this basically never useful.
Air Walljump/ Invisible Walljump
An interesting oversight in the code means that if you grab a wall with vertical speed, and then your vertical speed carries you off the top of the wall without wallrunning, you can store the ability to walljump in midair, with no wall nearby. This stored ability to walljump only lasts while you remain in the “raise” state, so once your vertical speed hits 0, you can no longer walljump in midair. This is used only once in the entire run.
Hitting 0 Y speed ends state raise, Otherwise raise state ends after ~16 frames (not 100% sure this is true but hard to test)
This does not work to enable a walldash, you will simply Airdash and consume an air charge.
Infinite Walljump
One reason for the extra horizontal speed when jumping off an overhanging slanted wall is to push the player further away from the wall to prevent them from repeatedly walljumping off the same wall. However, with left-facing overhanging slant walls, left air friction rapidly reduces that speed below 522, so all characters other than dustkid will still be close enough to the wall to walljump again after the 5 frames during which you can’t jump or dash at the beginning of a jump. This process can be repeated indefinitely as long as the slanted wall continues, though having to repeatedly undergo jump startup means it usually isn’t very fast.
Ledge Climb
When wallrunning, if you reach the top of the wall you will climb over the ledge and enter a special hover state. Your Y value is modified through a special separate variable so that you are still able to downdash and dashjump while moving upwards, which is normally not possible. Ledgeclimbs are nearly always cancelled via Mantling or Ledge Cancelling. They are rarely useful to gain a small amount of additional height for an attack or before Aerial Dashjumping.
Mantles and Ledge Cancels
Whenever we climb over the top of a wall, we can avoid spending a lot of time floating above the ground by either using an air charge to mantle (air dashing at ground height) or ledge canceling (downdash -> dash). Mantles are faster than ledge cancels, but are used somewhat rarely since there are usually more prudent uses for an extra air jump or air dash.
Mantles are sometimes combined with an ADB to maintain speed onto a higher platform however, keeping high speed from a prior-existing boost.
(Surface) Boosting
When a character hits a surface, they lose some portion of their speed based on their angle of incidence (pic here:
http://i.imgur.com/LznJaKP.png ), and the rest of their speed is converted to line up parallel with the surface they’ve run into. This is used most frequently to convert falling speed into ground speed (referred to as Groundboosting for flat ground and Slant- or Slopeboosting when taking advantage of advantageous ground angles), but also applies to collisions with walls and ceilings.
These are only boosts-in-name and for the relevant vector of the surface, they don't actually increase your overall speed, they just covert/combine vertical and horizontal speed into ALL only horizontal speed for example, still with a penalty multiplier (like 80% for slopeboosts) it just happens that the multiplier penalty is generous enough that you can exceed your normal maximum runspeed even after the multiplier is applied.
Most groundboosts attempt to use the higher incidence angle of 71 for a higher speed boost, but in cases where there isn't enough room to setup the larger boost, or the boost isn't able to be maintained for very long, the smaller angle of 45 is occasionally used instead (or often if we already have a significant slopeboost, to maintain it to a lower ground section after a drop in terrain). These are often described as “lowboosts”.
Boosting on a slanted or sloped ceiling by walljumping at the point where the wall and ceiling meet is often referred to as a “Corner Boost” and is a reliable way to get a fast ceiling boost. When jumping from an overhanging slanted wall, the extra horizontal speed makes for an even faster boost.
Even without an advantageous slope it’s possible to get a boost on a ceiling, but the fact that you need to be moving upward rather than downward means that these sorts of Ceilingboosts generally aren’t as significant as other boosts, as the amount of upward speed we can get is usually very limited.
The most common kind of Wallboost is when transferring a ground speed boost into a wall with the help of a slope or a slanted wall. However, when jumping into a wall, jump timing and the resultant angle you hit the wall at can have a dramatic effect on your upward speed after the collision. Occasionally, it’s even possible to get a downward Wallboost when trying to fall quickly.
Its often better to avoid walls when falling to avoid the magnetic properties of walls and to avoid unfavorable collisions which actually reduce your falling speed.
Lastly, though most boosts center around converting a high amount of speed in one direction into less speed in a more useful direction (e.g. fall speed to sideways speed), it’s also possible to get a “boost” by aligning your movement as closely as possible with a surface. For example, if jumping upward at a 45 degree angle toward a 45 degree upward slope, it’s possible to land with a near-0 degree angle of incidence, keeping almost all of your total speed. Once the ground levels out, this converts to about a 40% increase in horizontal speed. This style of “boost” is referred to as a “Parallel Boost.” or “Fitboost.”
When Ground-, Slant-, or Slopeboosting, it’s sometimes possible to fall slightly past the surface in question and gain extra falling speed, then ledgeclip (see below) up onto it for a better speed boost than you’d normally be able to get from your initial height. This is sometimes referred to as a “Clipboost.”
Slope Slide
When the tile of ground beneath the player is 45 degrees, you can press down to begin a slope slide. While in slope slide state, the character will asymptotically approach their slope slide speed (1400 for Man/Girl, 1260 for Kid/Worth), so slope slides allow the character to gain much more speed than simply dashing or running, and are better than running or skidding at preserving speed when going even faster than that.
Landing on a slope from a large fall allows the player to gain even higher speeds (see Boosting) and once the slope ends at the bottom this speed can be fully transferred into horizontal speed.
Slope Jump and Spike Jump
As mentioned earlier, a jump from slopeslide state has no startup. As such it can never be a shorthop. It is also a grounded jump, so X speed conversion happens as with other ground jumps.
Notably, it’s possible to transition from hover or fall state, to land state, to slopeslide state, and then jump all within a single subframe. This means that in the case of a spiked slope, it’s possible to actually land on the spikes and jump back off before the game checks if the spikes should kill you. This is known as a “spikejump.”
Spikejumps normally require buffering the jump input and thus requires that you have used your aircharge, but with precise positioning it’s possible to spikejump even when you still have an aircharge by aligning yourself to land on the first subframe.
Similarly, dustblock slopes can be jumped off of before the game checks that you should collect them. However, you will always collect the surface dust from a solid slope even if you jump off it immediately.
Ledge Clips
The corners of ledges are not completely solid, and can be clipped into and used to push yourself upwards or downwards slightly by doing so. These are abused in various ways: to gain a small amount of extra height, to airjump/dash slightly earlier than should be possible when falling past a ceiling, to get extra falling speed or better align certain boosts, etc.
Ledgeclipping is sometimes important to avoid or delay, however, since when ledgeclipping up to a higher ledge than you technically should be able to reach, you retain your velocity when the ledgeclip bumps you upward, which can actually delay the time you can land on that ledge as you get stuck in hover.
When used to get a higher speed boost, these are often called Clipboosts.
Super
- Enemy Hitrange is a Square
- Dustblock hitrange is a circle
- Dust on Surface hitrange is a circle requiring Line Of Sight (same circle as dustblocks)
Grants Hitrise upon coming out of the Super
Applies time dilation during startup
Boosts can be preserved through a super, Including reversing the boost.
Using a special attack that hits no enemies is referred to as an “Empty Super”. The special attack takes a variable amount of time depending on the number of enemies it hits. Generally, the amount of time one enemy adds is fairly small, so you need to be cleaning several enemies per attack to make it worth using heavy attacks to reduce the number of enemies a super will hit. However, there’s a base amount of time that a super takes, and this base amount is doubled if the super hits at least one enemy. In the case where a super is primarily being used to clean surface dust or dustblocks, the super will come out much faster if it’s not hitting any enemies.
Seam Super’s also exist in the same places that allow for Seam Attacks.
It is possible to downdash in between hits of a super to disjoint the enemy hitrange from the Dust-clearing range. This extra movement from disjointing is extremely minor and rare to save time however.
Attacks
Attacks have 3 phases, Startup (aka windup), hit, and recovery. Light and Heavy attacks have three possible angles, Up, Down, or Neutral.
At the beginning of attack startup, the attack’s direction, either in terms of left/right or up/down, can be changed via directional inputs. The period where these changes can occur lasts 2 frames for light attacks, 4 frames for vertical direction changes to heavy attacks, and 8 frames for horizontal direction changes to heavy attacks.
Once the player has attacked “behind” them, their attack facing cannot be changed again, even in followup attacks, until they’ve completely recovered from attacking. In order to attack “forward,” they must either wait to completely finish attack recovery, or cancel recovery with an action other than attack (such as grabbing a wall or jumping).
During attack startup, the character’s time rate is adjusted such that they move and accelerate less during each subframe, as though time was moving slower for them. Only 70% as much time passes for the player during attack windup. This is referred to as “Time Dilation.”
During this time, shifts in subframe boundaries and the granular nature of movement/acceleration calculations can produce a slightly different end result in movement that should theoretically just be the same movement but iterated through more slowly. Taking advantage of these calculation differences to produce a more favorable result is referred to as “Time Manipulation,” but this is done fairly rarely since the Time Dilation itself will always have a time cost.
Time Manipulation is most commonly used when moving upwards to gain minor amounts of extra necessary height. The reason for this is the riemann sum of 0.7 * (0.7 + 1.4 + 2.1 + 2.8 + 3.5 + 4.2 + 4.9 + 5.6 + 6.3 + 7) is less than (1 + 2 + 3 + 4 + 5 + 6 + 7) but not actually much less and its effects are kind of unreliable because there are hard cutoffs during your ascent where the acceleration of gravity changes based on your current velocity and though in general gravity's effects are less harsh because of that riemann sum stuff, it could mean that you end up crossing that boundary at a slightly more or less advantageous time.
Notably, attack startup on the ground forces the character into idle state, which has stronger friction than even holding opposite to your current movement direction, and thus allows you to slow down more quickly. Idle state also allows the character to open doors while still moving.
One exception is on a ground slope, where holding down will keep the character in slopeslide state rather than idle state, which is preferable when high friction is not a desired effect of the attack.
At the end of startup, the attack makes a single check to see what the attack hits, with no lingering hitbox. When an attack connects with enemies, if the character is in midair, their upward velocity will be increased to a certain minimum if it is less. This slight upward nudge is referred to as “Hitrise.” When the player hits dustblocks in midair, they don’t get an upward nudge but their vertical velocity will be set to 0 if they were travelling downward.
Also when the attack hits an enemy or dustblocks, the character (and the targets in the case of enemies) will be “frozen in time” for a period of time based on the attack and what was being hit. This is referred to as “hitstop,” and it lasts 1 frame for hits on dustblocks, and 2.5 or 7.5 frames (0.5 rounding up to 3 subframes as with dashes) respectively for light and heavy attacks on enemies.
This hitstop begins one frame after the character detects that the attack has finished, so there’s usually one frame when the player can input actions that cannot be performed during attack startup (e.g. ground dashes) but before hitstop occurs. Hitstop will still apply afterward as normal, but in particular it is often highly favorable to dash immediately upon an attack connecting to minimize time spent outside of dash state, and sometimes to convert the hitrise to forward speed via an Airdash Boost.
Though the attack will hit enemies after a consistent amount of time, the character will react to the hit having completed (and clean surface dust) dependent on the Iteration Order of the attack hitbox in comparison to your character. This can sometimes be manipulated favorably via Iteration Boundaries
Attack Recovery can be cancelled via Jumps or Dashes. This is Known as Heavy Cancelling, or Light Cancelling. Cancelling recovery is used on nearly every single attack in the entire TAS. (Sometimes these are referred to also by the action used to cancel, so a Wall-Cancelled-Heavy or a Dash-Cancelled Light, sometimes the attack type is left out of the description but it still usually refers to cancelling attacks, although it is sometimes used in reverse as attacks can also cancel a ground dash)
Light or Heavy attacks can be completely canceled during startup with a walldash or super attack input, and downward-angled aerial Light attacks are cancelled by landing on the ground. Cancelling attack startup with a super input can be useful for time manipulation and positioning, and cancelling light startup by landing can be helpful to buffer certain ground actions from the air, though a light attack canceled in this way always results in at least one subframe of “land” state which has fairly unfavorable friction properties.
Hitrise
Occurs when hitting an enemy with a damaging attack, or after a Super. Total Height gained upwards is based on the characters fall acceleration (you are set to a fixed value and then your fall acceleration determines how quickly it reduces to 0)
When grabbing a ceiling at very low (near 0) speed as you gain hitrise, you can store the upwards speed to be used after you ceiling run, while converting your horizontal ceiling run speed into upwards speed (proportional to how slow you were moving before hitrise, the closer to 0, the better for full speed conversion) allowing you to gain height around corners and reach walls without having to expend an aircharge. This is called Hitrise Storage and is done via a super in Tunnels
Air Friction
Applies when X speed is over 522, adjusts your speed based on how far away your X speed is from POSITIVE 522 speed (meaning moving rightwards in the X direction). This results in significantly stronger speed penalties when moving left (at negative values greater than 522) and will actually decelerate you to below 522 speed. This “left friction” problem complicates leftward air movement and often shifts optimization strategy from trying to get the most speed to trying to keep a lower speed for longer through better dash spacing, manipulating speed before air friction applies so that the speed after deceleration is as close to 522 as possible, or sometimes avoiding momentary/small speed boosts to avoid dropping under 522.
Ground Friction
Does not have the same left vs right issue that air friction has (thankfully)
Still applies when speed is over 522
Seam Attacks
Normally, attacks on surface dust are blocked by impeding walls. The direction of the attack matters for this check, so a downward attack can clean dust on the far side of a wall as long as the attack isn’t blocked by a ceiling above it, but a side attack won’t normally be able to clean dust on the far side of a wall. However, under certain circumstances, it’s possible for the line-of-sight raycasting calculations performed to squeeze through the seams between adjacent tiles and clean some dust on the far side. This only works when the relevant coordinates are negative (e.g. if Y coordinates are negative, there’s a slight gap between vertically adjacent tiles), but by lining up attacks this way it’s sometimes possible to reach dust much further away than would normally be possible, since a side heavy attack or a super will have much more horizontal reach than the up/down heavy which you would normally need to use to clean dust on the other side of a wall.
Also applies to Dust Spreading in rare cases, and can cause dust to spread in an unreachable location through a wall.
GAL/GAH
Grounded Air Light/ Grounded Air Heavy is a technique where we begin an attack while grounded (usually sliding on a slope with a boost) and time the attack to complete and fire the same subframe you leave the ground, you will zero-out your Y speed, while keeping your boosted X speed. GAL’s are more restrictive in their use cases because downlights will be cancelled upon landing, so they need a long length slide to be used, while GAH’s can work pretty much wherever needed.
Droofs and Magnet Hijack Boosts
Walls and ceilings in this game have a “sticky” property where coming in contact with them makes it a little difficult to move away from them until the character grabs then releases the surface. In some situations this can be problematic, but it can be used to gain speed in certain situations.
When your character gets stuck to a wall but hasn’t actually grabbed it, they remain in the appropriate airborne state (jump, raise, hover or fall) and are affected by gravity as normal, but their left/right motion is forced to remain in line with the wall in question. For overhanging slanted walls, this can actually give the player great horizontal speed as the character falls as per normal, but is pulled along sideways by the stickiness of the wall above them. For somewhat arcane reasons, this maneuver is known as a Droof.
At the exact moment that a ceiling changes angle, your character’s speed will be angled to line up with the new angle of a ceiling. If simultaneous to this your character does something that makes their movement not line up with the angle of the ceiling, this will be overridden. In particular, if your character downdashes, giving them significant downward velocity, precisely at a corner on a ceiling, their new speed including the velocity of the downdash will be calculated then angled to line up with the ceiling. This gives a significant speed boost, often at an upward angle, without requiring use of an aircharge. This is referred to as a Magnet Hijack Boost or MHB. Taking advantage of MHBs requires fairly specific ceiling geometry, but when possible it can quickly generate high speeds in situations where that would otherwise be impossible without the use of an aircharge.
The same Magnetic sticky phenomenon used for MHB’s is also how Zetta Slopes work.
Facegrinding and Toegrinding
During the first 10 frames of jump state or during an attack, the player cannot grab walls. If the player is adjacent to a wall during this time and presses toward the wall, the mechanics for speed conversion upon hitting a surface will be run every subframe, causing the character to lose a significant amount of vertical speed per frame, and when this property was discovered it was called “facegrinding” (particularly when travelling upward) because of the harsh speed loss. This is usually a situation to be avoided, though occasionally it’s necessary to slow the character down so that we have an opportunity to grab a wall before the character passes it completely.
Toegrinding is basically the same thing but used for falling.
Anti-Toegrinding also exists when magnetted against a wall while falling, as every subframe your speed is being redirected to line up parallel with the wall, so if you hold away horizontally from the wall you gain a tiny bit of speed which gets transferred into downwards falling speed, this is fractions of units of speed and rarely saves enough time to matter.
Superskid/Skid
A different state for grounded friction that isnt idle/run/dash
Superskid decays your speed asymptotically, where regular skid has more linear speed decay. Superskid applies when you have speed above 522, otherwise skid.
Jorfs
Named after the player who discovered it, there’s a small oversight with edges of spiked platforms which allows for 1 “pixel” of leniency where you can stand on the platform without the spikes killing you. This “Jorf” pixel is extremely handy for quick platforming, as you essentially have another platform to utilize to jump, regain aircharges, or even get a boost (often called Jorfboosting). This applies to ceilings, floors and walls, regardless if they are sloped or flat. Slanted and sloped jorfs are especially noteworthy, as the window of leniency is significantly wider due to the angle of the ground and, with a downhill angle, can be particularly effective for generating boosts.
Your input subframe alignment might need to be considered in order to dash while still “on the ground” of the Jorf, rather than it coming out as an airdash.
Coordinate rounding makes the quadrant relevant. In negative X coordinates (relative to the origin) to land on a Jorf on the RIGHTSIDE corner of a block requires being on an EXACT whole unit position. This unfavorable case is called a “nulljorf”, as it turns a regular 1 unit area into a <0.001~ unit area. It is still possible to land on nulljorfs via moving across them during the course of a subframe, but aligning yourself is much more difficult compared to “regular” Jorfs. However in these negative X coordinates, Jorfs on the left side corners of blocks become 2 units instead of just 1.
For the purposes of Nulljorfs and Double-sized Jorfs, the coordinate of exact 0 at the origin, is negative. You heard it here first.
Due to a separate oversight, the lower left corner of your character does not detect spikes on walls at all, so there is a much larger window of safety near the top right of spiked walls. Despite the difference in cause and size, these are still often mistakenly called walljorfs, The more accurate term we use for this oddity is a “Deadleg”. Because of their great size (a full tile, rather than only one pixel) they can much more easily be used to walljump or wallcancel, and they allow for a brief wallrun as well.
Jorfs on a Dustblock tile will NOT clean and consume the tile, only touching outside the jorf will do so.
Gorfs- These are named after a custom level called “gardener” (The term being a combination shortening of Gardener Jorf) where their usefulness was popularized. A 1 tile high gap in spikes can sometimes be used to (dash+) jump out of and regain air charges.
Tera Drop/Jump
A 1 tile Wide Gap with spikes on both sides is known as a tera gap. These have a 4~ unit wide gap that the character can fit within without dying.
Can be Jumped up between, or fallen through (Known as a Tera Jump or Tera Drop respectively)
A gap with spikes only on 1 side is known as a Half-Tera
1 Tile wide gaps without spikes have their own quirks
Bad State Transitions
Some errors in state transition logic mean that state transition checks can be run for states that the player has already transitioned out of, allowing for a variety of abusable effects:
Slope Reversal
This seems to be more of an unintended consequence of how idle state works than the more arcane state abuses below, but pressing left or right from idle state will transition to run and keep all of your speed (at a minimum of 300 units) even if the new direction is in the opposite direction you were originally travelling. For a long time this wasn’t useful as the only known ways to reach idle were standing still, releasing forward to slide at low speeds, attacking on the ground (which doesn’t allow transitioning to run until the attack finishes), and waiting out skid/superskid/land states. Of all of these, waiting out land was the only promising option since the state is normally reached setting up slopeboosts and has only moderate friction, allowing much of the speed to be kept. Even still, this method required so much runway, uncommon level geometry, and setup time that this technique went completely unused until slopesurfing provided a way to reach idle instantly from slope_slide.
This idle->run transition quirk doesn’t technically need to be used to reverse speed and is used once to drive-by unlock Wild Den by slopesurfing at the top of the slope left of the door, sliding in front of the door in idle, and then starting a new dash as the door is unlocked.
Itay Dash and Taildash
When simultaneously pressing dash and jump from slope slide state, slope slide transitions to jump and then to dash despite already having transitioned to jump state, resulting in a horizontal airdash from the slope despite normally not being able to airdash for the first five frames after jumping. This is known as an “Itay Dash,” and is used rarely during some nexus movement.
When in state skid or superskid on a slope, simultaneously pressing down, the direction facing downhill, dash, and jump gives us an Itay Dash-like instant airdash and also does a bad state transition from skid/superskid to hover, from which we instantly downdash, ultimately giving us an instantaneous downhill speed boost. This is referred to as a “taildash,” and is useful for rapidly getting a modest slopeboost. Note that the same bad state transitions occur if you try to do this up the slope, but there is no known use for it since it essentially just lands you on the slope with a poor boost angle.
Using Double tap sideways we can also do the Taildash inputs without inputting a downdash, resulting in a “slope pop” where we separate ourselves from a slope without locking us into being unable to downdash.
Slopesurfing
When in slopeslide state, pressing dash and heavy simultaneously results in both occurring and then immediately cancelling each other, putting the player into idle state which then immediately can transition to slopeslide or run depending on direction input. This is referred to as “slopesurfing” and has a variety of applications.
By pressing down+dash+heavy, one can get to dash speed and immediately resume slopesliding and accelerating. This generally isn’t as useful as a taildash, but can be performed in many situations where a taildash isn’t immediately possible. Alternatively, when accelerating downhill, the nature of the bad state transitions also results in you accelerating very slightly faster (one subframe gets double the acceleration, so since you can only input every other frame, results in 10% faster acceleration overall). Lastly, this “consumes” the grounded dash input but still sends a downdash input, which will be used if slide off the bottom of the slope later this frame.
By pressing left/right+dash+heavy, one can dash, then go into idle state followed by run, then we can release forward and enter skid next frame, enabling Taildashing and Raiserunning (see below).
Lastly, by pressing no directions when pressing dash+heavy, we can enter idle state, which we can transition into run next frame. That transition to run converts all our speed into movement in the appropriate direction, allowing us to almost instantly reverse a speed boost with comparatively little speed loss.
Tailboosting
This is really a combination of the previous three techniques but is used frequently enough that it warrants its own entry. By performing a taildash, using a slope surf to enter state idle, and then doing a slope reversal immediately, one can quickly gain a speed boost going up the slope. If set up with minimal backtracking this gives a respectable speed of 705 for Dustkid/Dustworth and 779 for Dustman/Dustgirl (which is faster than an average groundboost).
Raiserunning
When going from skid to slopeslide to jump (via slopejumping) in one subframe, a bad state transition occurs where the skid logic notices that you have become airborne and, assuming that you’ve skidded off an upward slope, puts you into state “raise.” Unlike the “jump” state, “raise” state has no restrictions on jumping, dashing, or most importantly, grabbing walls.
This allows us to transfer all the speed of the wallboost we get, usually close to or even higher than the character’s initial jump speed, into a wallrun, which decelerates much more slowly than a jump would.
Another way to incorrectly enter state “raise” is by airjumping the subframe your character crosses over a ledge. While it sounds powerful, it ends up being extremely rare to be useful since it forces you to burn a precious aircharge and cannot be done out of dash state, meaning it cannot be done immediately out of a ledgecancel, for instance.
Ladder Attacks
From hover state, the check for entering wallgrab state and the check for starting an attack happen with an odd timing, allowing the character to do both simultaneously if circumstances permit. This allows for the character to attack while running up the wall, potentially an extremely useful combination. Unfortunately, since it helps with ascending while attacking, but requires a non-ascending air state to trigger, there are comparatively few situations where it ends up being beneficial overall.
2 Tile High Ceiling runs
These will remove dust on the floor and ceiling for S Completion score purposes, but will NOT award you the combo meter for super properly, This is an issue in the level Development that must be avoided to acquire 100 dust properly.
Updashing
By dashing into a wall at a less than 90 degree angle (e.g. from a slope into a flat wall), a surface collision occurs, generally reducing your speed to 80% or 50% what it was before and aligning your velocity with the wall. However, if you’re not pressing toward the wall, you don’t enter wall grab state and instead remain in dash state, which means your (admittedly reduced) speed stays locked in either for the remainder of the dash or until a wallgrab is started, at which point the player can begin a wallrun as normal.
In the cases where this conversion results in a favorable speed up the wall, this functionally adds some frictionless time to the start of the wallrun.
Notably, while in dash state the player will not collect surface dust or break wall dustblocks, and if the wall changes angle again another collision will occur while the player would seamlessly change directions while wallrunning.
Since the most common state which allows for Updashing (a slope next to a vertical wall) also allows for Raiserunning, it’s often necessary to weigh the two options against each other and determine which produces the most favorable result.
Early exits
If we finish the level during level exit fadeout, we still receive credit for completing the level. This will be done on nearly every level in the game, as it both starts the fadeout as soon as possible (usually saving 17~ frames per level) and skips the extremely slow score screen. Early exits do place some restrictions on what actions can be done during fadeout and sometimes a slower IGT is obtained as a result of saving real time from allowing a sooner early exit.
When exiting a level, clicking “yes” with mouse input rather than navigating with the keyboard or controller sends the player directly back to the Main Nexus, instead of the inner nexus, accomplishing 2 menuing exit-area’s in one. This is called a “Mouse exit”.
Buffered Wallrun
If you have already consumed your ability to wallrun upwards, you can buffer a wallrun while sliding down a wall, which will occur as soon as you touch the floor, even if the floor is covered in spikes and would otherwise kill you. I don't remember if this is used anywhere in the TAS but it could potentially be useful so it is worth including and documenting here regardless.
Doing this DOES regain your aircharge, as you do touch the ground briefly, which enhances its usefulness.
Head stuck dashing into 45 degree sloped ceiling
This is used in the level Control
Upcrapping/ Phantom slope nonsense
You can land on a slope and then immediately pop off of it into hover by aligning VERY precisely, we don’t have good consistent setups for this. It is also possible to encounter phantom slopes where 2 slopes meet, even if covered in spikes, and enables a slopeboost ledgejump. The cause of phantom slope behavior is the raycasting to detect if you are touching the ground, which can give false positives and make you "touch the ground" briefly in midair. A phantom slope is used in the Backup Shift to Containment nexus movement.
Double Tap Dash:
Double tap dash is not so much a technique, but more of an obscure control scheme in the game. By enabling double tap dash, quickly pressing left, right, or down twice cause the player to dash in that direction. Honestly, the inclusion is really strange - it is terribly awkward to utilize, poorly programmed, and never really mentioned anywhere else in the game. To be more specific with the poorly programmed part: the interval for valid double tap inputs goes off of real time rather than some ingame counter, dash inputs and downdash input are separated, pressing any key of a higher keycode than the direction you are double tapping will disable the double tap (eg: if ‘A’ is a higher keycode than left, pressing A between the left taps will cause the double tap to fail, including if A is bound to NOTHING…). The second part is the important thing though - separating downdash inputs from dashes allows for some otherwise impossible techniques:
1 frame ledgecancels: By double tapping a downdash and then pressing the dash key the next frame, a ledgecancel with no frames of delay can be executed. This doesn’t always save a frame over 2 frame ledgecancels - the player has to actually touch the ground early enough for the dash to register, meaning this often only saves a subframe or two. This is also useful for faster LSJ setups in a few situations, or also for keeping significantly larger boosts in some sections (saved multiple frames on both Basement and Concrete, as they allowed us to immediately dash to lock our speed rather than having to wait through an extra frame of friction).
Buffered Downdashes: Double tapping a downdash will allow you to buffer a downdash off of a ledge. Usually, trying to downdash the instant a player crosses over a ledge will either result in dashing on the platform, or an airdash off of the platform; downdash inputs usually cannot be done without the game first checking for a valid dash input, so the game usually sees you as still on the platform, and thus dashes instead of downdashing. Since you can input a downdash without a dash input, you can avoid this and instead downdash immediately, saving anywhere from 1 to 5 subframes.
Downdash-less Taildashes: Definitely the weirdest usage of double tap seen in the run: by executing a taildash without the downdash input by instead double tapping the desired direction while pressing down and jump on the last frame of the double tap, the player enters a weird state transition similar to an itaydash. However, unlike an itaydash, you can actually downdash immediately out of the technique without having to wait out the entire airdash duration, meaning this is basically an objectively better way to pop off of a slope. Still, being better doesn’t make it good, and was only found to be useful in one level, Ferrofluid.
Overall, including double tap was a little controversial. The RTA/IL community had a pretty solid gentlemen’s agreement not to use it unless absolutely necessary (eg: a short level that leans heavily on multiple ledgecancels, giving a significant time advantage to players simply because they can mash faster), because it is quite unwieldy and could turn several levels into very miserable grinds for top IL slots… essentially if one player gets a fantastic WR time on a level using double tap, everyone wanting to contest this WR would also have to use double tap. However, people warmed up to the idea of using it, and it certainly does raise the skill ceiling of the game. As well, implementing it into the TAS was difficult, as double tap was registered by real time passing, meaning the frame window for it could vary by a frame making it difficult to find a way to include it in our replay composer and nexus scripting. Still, the technique was included late in the life of the 2019 run, as ultimately there wasn’t a good enough reason not to use it; it’s included in the game and saves time (likely a couple seconds), human limitations shouldn’t really be a consideration for tool assisted runs (especially when we do things like frame perfect mashing of slope surfs to save single subframes…), and ultimately “it doesn’t feel right” isn’t really a valid argument. The timesave is often very minor to the point where you wouldn’t notice the difference in 90% of the instances we utilize it, so you can also just pretend it isn’t there!
Infini Difficult?
This is a level which also exists and is sorta a stock level but also sorta not. While it is a level included in the DX update and made by Hitbox Team, It is not reachable in any nexus or tome in any normal means via a door. It was an ARG (Alternate/Augmented Reality Game) secret using letters found in cosmetic secrets and apples within the standard stock levels for exploration-curious players and as a community. These letters result in a code which can be used to access this level. Infini is meant to be a separate challenge and not included as part of speedruns, as it would be generally even more prohibitive to the majority of human players and was definitely made to be a challenge on its own, not a challenge alongside the rest of the game. As this category matches the RTA playerbase and the developer's intent (+ mercifulness to human players) and the unique abnormal way of accessing this level compared to the others, this level was excluded from the goals.
Countdown Frames
Upon entering a level, before the timer starts counting, there are 55 frames of no-input allowed. Some ways of creating TAS scripts allow illegal inputs during this time, so you should double check before publishing or uploading a script that your first input and movement takes place on frame 56 or later, with the level timer showing 0.033. (Timer on 0.016 is where inputs are polled on frame 55, but they will not take effect until frame 56 with the timer showing 0.033).
The level comparison table includes these 55 frames, but the ingame timer does not, so that's the reason for any visual disparity noticed there.
This only applies inside levels with the “3…2…1… Let’s Dust!”-Countdown delay with a timer in the bottom left. Nexus movement scripts do not have this same restriction.
Early Start
The newest tech found only in the final week before release. By pressing Restart and then immediately Resume, we can cancel out the slowed down effects of time dilation during the countdown banner inside of IL's, saving 16f in each level. This does negate our ability to send 1 frame of input after an early exit, so in some cases the save is only 15f for levels where we now need to wait an additional frame before early exiting. This luckily does not affect any cycles within the level, but saving an extra almost 20s as a surprise in the final week was unexpected.
Enemies
Dust gain from Invincibility: Heavy prisms, Knight Shields, Apples, Quills, Rooted Slime springbacks
Hitting invincible enemies grants “more” dust than you would intuitively think, allowing you to more quickly fill your combo meter for a super.
Being Parried by attacking a Knight’s shield can sometimes make you fall faster, This is not well understood and is weird.
Enemies will be knocked back and stunned in the direction of your attack upon being hit. This delays them from retaliating with attacks of their own, and can be used to adjust their positioning, so long as they have health remaining.