Preface
I am writing this article for three purposes: to define several terms in a consistent way; to unify several areas of research; and to present a cool simulation of dynamics in Brawl. Some of this material is new, but some of it isn't. However, here I combine it into a coherent model.
Furthermore, I have observed that a lot of mysticism surrounds "momentum cancelling", and it really shouldn't. With a complete understanding of dynamics in Brawl, all of the phenomena of "momentum cancelling" are really quite easy to understand, and nothing in "momentum cancelling" constitutes an exception of the general model I present here.
As advertised, I've also made an interactive simulation which allows you to view how a character responds to having an arbitrary launch force applied to it.
To those of you who want to play with the simulator first, it can be found at the following location, but reading the article is strongly recommended:
http://colin.shoddybattle.com:81/brawl/
Definitions
To talk about the dynamics of Brawl, we need a few terms. Most of these terms are already in common use, but they are used in varying ways.
Velocity (v): The velocity (unit: length per frame) of a character is the number of units that they will move in the present frame. Velocity consists of both a horizontal and a vertical component. The momentum of a character is the same thing as the velocity because there is no concept of "mass" in Brawl.
Speed: One component of a character's velocity is a speed.
Force (F): A force (unit: velocity per frame) is the amount by which the character's velocity will change due to the force in the present frame. Unlike real life physics, a force of the same size will change every character's velocity by the same amount because there is no "mass" in Brawl. As a result, acceleration is another name for force in Brawl.
Gravity (Fg): The force of gravity changes a character's vertical speed each frame by a certain value. Each character experiences a different force of gravity. The force of gravity experienced by a specific character is his fall acceleration.
Fall speed (f): The part of a character's vertical speed contributed by the force of gravity. Once a character's fall speed reaches his top fall speed, he no longer experiences the force of gravity.
Drift: The analogy to gravity for the horizontal direction is the force of drift. Using air control (i.e. holding left or right) causes the character to experience the force of drift.
Drift speed: The drift speed is the analogy of fall speed for the horizontal direction. Characters also have a top drift speed.
Knockback: Knockback is not a quantity. It is a state into which characters enter, which has certain properties. One property of knockback is that the character is considered to be "falling", regardless of which direction they are actually heading. A character entering knockback also causes him to experience hitstun.
Knockback resistance force (Fr): Characters in knockback experience a force which is applied opposite to the direction at which the character was initially launched. This knockback resistance force is what causes knockback to end. Once the character is no longer in knockback, this force ceases to be applied. The magnitude of this force is the same for all characters.
Launch force (Fl): Generally being hit by a move causes a character to be launched. The force that is applied for one frame to launch the character is the launch force. It is exactly this quantity to which the "max launch speed" value in the results screen corresponds.
Launch resistance (r): The most important quantity used to calculate the launch force for different characters is a character's launch resistance.
Hitstun: The phase of knockback during which the character cannot double jump, use a special move, or use air control is called hitstun. The number of frames of hitstun is directly proportional to the magnitude of the force with which the character was launched.
Obsolete Terms
Weight: This term is problematic. In real life physics, the weight of an object is the force of gravity it experiences, which is a character's fall acceleration in Brawl. However, the smash community has a long tradition of using "weight" not to refer to fall acceleration but to refer instead to launch resistance. As a result, the term is hopeless and should not be used.
Dynamics of a Hit
This section is quite technical, but it is the main point of the article.
When a character is hit by some move, a launch force is applied to him in the present frame (and only the present frame). The magnitude of this launch force is calculated via a two step equation. (For simplicity, fixed launch force moves are excluded.) Here, launch force is denoted by F[l].
Step 1. k := b + dg/r
Step 2.
If k > 2550: F[l] := k + (a[y] - 1)c
If k < 2550: F[l] := k
where k is a dummy variable, b is the base launch speed of the move, d is the damage after the hit, g is the launch speed growth of the move, r is the character's launch resistance, a[y] is the character's vertical acceleration, and c is the vertical strength of the move.
For most moves, the character enters knockback as soon as this force is applied. The exception is nondamaging moves. The dynamics of nondamaging moves are very simple to explain. Nondamaging moves, such as the wind hitbox of Game & Watch's up air, apply a completely ordinary launch force. However, they do not cause the character to enter knockback. As such, they are pretty much the same as the force a character experiences when he jumps.
Here we discuss hits that induce knockback.
The frame that this launch force is applied (frame 0), the character's "launch velocity" (denoted v[l]) will be exactly the launch force force, namely
v[l] = F[l] if frame = 0
However, while the character is in knockback, he experiences a knockback resistance force. Hence, after q frames, the launch velocity will be
v[l] = max{F[l] - F[r]q, 0}
where F[r] is the knockback resistance force. However, v[l] is not the character's actual velocity because we also need to consider gravity. If no fast falling is involved, after q frames, the character's fall speed, f, will be
f = min{F[g] q, f[top]}
where F[g] is the force of gravity and f[top] is the character's top fall speed. Hence the net vertical velocity, v[y], will be
v[y] = v[l]{y} - f
where v[l]{y} is the vertical component of the launch velocity and f is the fall speed. The vertical component of the launch velocity is just v[l] sin(θ) where θ is the launch angle. The horizontal direction is similar, but the launch speed is unopposed there. So we can write down both components of a character's velocity after q frames.
v[x](q) = cos(θ) max{F[l] - F[r] q, 0}
v[y](q) = sin(θ) max{F[l] - F[r] q, 0} - min{F[g] q, f[top]}
To find the position, s, after q frames, we just sum v from 1 to q.
s[x] = v[x](1) + v[x](2) + ... + v[x](q)
s[y] = v[y](1) + v[x](2) + ... + v[y](q)
To find the farthest extent the character reaches, we would just look for the maximum position value.
"Momentum Cancelling"
The main premise of momentum cancelling is to end hitstun earlier than it would normally end. This can be accomplished either with the use of an aerial or an air dodge; however, you can fast fall at any point during an aerial, so it is the case we will discuss.
First, it should not be a surprise that you can fast fall while apparently rising because while in knockback, a character is always considered to be "falling". The reason this helps you live longer is that it allows your fall speed, f, to reach a higher value. So, v[y] will decrease more rapidly, which obviously causes the vertical position, s[y], to be smaller than it was before.
The second "momentum cancelling" strategy is, after having left hitstun, using a double jump or special. The mechanics for this will depend on each particular double jump or special, but in general, using a double jump works the same way it works anywhere else, i.e., it applies a jump force to the character.
Regardless of whether you break out of hitstun early, after the point when hitstun would naturally end, you can induce a drift force by using air control (holding toward the stage). This does not help as much as the other "momentum cancelling" strategies, but since hitstun often ends before knockback, it can help a bit. This works analogously to fall speed, and so the equation for v[x](q) becomes
v[x](q) = cos(θ) max{F[l] - F[r] q, 0} - max{min{F[d] (q - q0), d[top]}, 0}
where q0 is the frame upon which you start using air control, F[d] is the drift force, and d[top] is the top drift speed. Obviously this will result in a smaller total horizontal distance travelled, similar to fast falling.
Simulation
I made a Java applet interactive simulation that allows you the view the effect of applying an arbitrary launch force to a chosen character:
http://colin.shoddybattle.com:81/brawl/
A link to the source code is also available on the page.
The GUI of the simulator should be fairly self-explanatory. Note that the "launch force" field corresponds exactly to the values you get on the results screen under "max launch speed".
One note: at this time, the values given by the simulator are not exact because my values for fall speeds and such were a bit mediocre, but they should be close enough to give you a very good idea what is going on.
References
- Brawl Mechanics: Damage & Knockback Formulae by Amazing Ampharos and me. The present article should be taken to supersede the "Knockback" section.
- leafgreen's post on knockback, in which he came up with the idea used in this artlce.
Also a special thanks to leafgreen386 for testing a couple of things for me.
Colin.
I am writing this article for three purposes: to define several terms in a consistent way; to unify several areas of research; and to present a cool simulation of dynamics in Brawl. Some of this material is new, but some of it isn't. However, here I combine it into a coherent model.
Furthermore, I have observed that a lot of mysticism surrounds "momentum cancelling", and it really shouldn't. With a complete understanding of dynamics in Brawl, all of the phenomena of "momentum cancelling" are really quite easy to understand, and nothing in "momentum cancelling" constitutes an exception of the general model I present here.
As advertised, I've also made an interactive simulation which allows you to view how a character responds to having an arbitrary launch force applied to it.
To those of you who want to play with the simulator first, it can be found at the following location, but reading the article is strongly recommended:
http://colin.shoddybattle.com:81/brawl/
Definitions
To talk about the dynamics of Brawl, we need a few terms. Most of these terms are already in common use, but they are used in varying ways.
Velocity (v): The velocity (unit: length per frame) of a character is the number of units that they will move in the present frame. Velocity consists of both a horizontal and a vertical component. The momentum of a character is the same thing as the velocity because there is no concept of "mass" in Brawl.
Speed: One component of a character's velocity is a speed.
Force (F): A force (unit: velocity per frame) is the amount by which the character's velocity will change due to the force in the present frame. Unlike real life physics, a force of the same size will change every character's velocity by the same amount because there is no "mass" in Brawl. As a result, acceleration is another name for force in Brawl.
Gravity (Fg): The force of gravity changes a character's vertical speed each frame by a certain value. Each character experiences a different force of gravity. The force of gravity experienced by a specific character is his fall acceleration.
Fall speed (f): The part of a character's vertical speed contributed by the force of gravity. Once a character's fall speed reaches his top fall speed, he no longer experiences the force of gravity.
Drift: The analogy to gravity for the horizontal direction is the force of drift. Using air control (i.e. holding left or right) causes the character to experience the force of drift.
Drift speed: The drift speed is the analogy of fall speed for the horizontal direction. Characters also have a top drift speed.
Knockback: Knockback is not a quantity. It is a state into which characters enter, which has certain properties. One property of knockback is that the character is considered to be "falling", regardless of which direction they are actually heading. A character entering knockback also causes him to experience hitstun.
Knockback resistance force (Fr): Characters in knockback experience a force which is applied opposite to the direction at which the character was initially launched. This knockback resistance force is what causes knockback to end. Once the character is no longer in knockback, this force ceases to be applied. The magnitude of this force is the same for all characters.
Launch force (Fl): Generally being hit by a move causes a character to be launched. The force that is applied for one frame to launch the character is the launch force. It is exactly this quantity to which the "max launch speed" value in the results screen corresponds.
Launch resistance (r): The most important quantity used to calculate the launch force for different characters is a character's launch resistance.
Hitstun: The phase of knockback during which the character cannot double jump, use a special move, or use air control is called hitstun. The number of frames of hitstun is directly proportional to the magnitude of the force with which the character was launched.
Obsolete Terms
Weight: This term is problematic. In real life physics, the weight of an object is the force of gravity it experiences, which is a character's fall acceleration in Brawl. However, the smash community has a long tradition of using "weight" not to refer to fall acceleration but to refer instead to launch resistance. As a result, the term is hopeless and should not be used.
Dynamics of a Hit
This section is quite technical, but it is the main point of the article.
When a character is hit by some move, a launch force is applied to him in the present frame (and only the present frame). The magnitude of this launch force is calculated via a two step equation. (For simplicity, fixed launch force moves are excluded.) Here, launch force is denoted by F[l].
Step 1. k := b + dg/r
Step 2.
If k > 2550: F[l] := k + (a[y] - 1)c
If k < 2550: F[l] := k
where k is a dummy variable, b is the base launch speed of the move, d is the damage after the hit, g is the launch speed growth of the move, r is the character's launch resistance, a[y] is the character's vertical acceleration, and c is the vertical strength of the move.
For most moves, the character enters knockback as soon as this force is applied. The exception is nondamaging moves. The dynamics of nondamaging moves are very simple to explain. Nondamaging moves, such as the wind hitbox of Game & Watch's up air, apply a completely ordinary launch force. However, they do not cause the character to enter knockback. As such, they are pretty much the same as the force a character experiences when he jumps.
Here we discuss hits that induce knockback.
The frame that this launch force is applied (frame 0), the character's "launch velocity" (denoted v[l]) will be exactly the launch force force, namely
v[l] = F[l] if frame = 0
However, while the character is in knockback, he experiences a knockback resistance force. Hence, after q frames, the launch velocity will be
v[l] = max{F[l] - F[r]q, 0}
where F[r] is the knockback resistance force. However, v[l] is not the character's actual velocity because we also need to consider gravity. If no fast falling is involved, after q frames, the character's fall speed, f, will be
f = min{F[g] q, f[top]}
where F[g] is the force of gravity and f[top] is the character's top fall speed. Hence the net vertical velocity, v[y], will be
v[y] = v[l]{y} - f
where v[l]{y} is the vertical component of the launch velocity and f is the fall speed. The vertical component of the launch velocity is just v[l] sin(θ) where θ is the launch angle. The horizontal direction is similar, but the launch speed is unopposed there. So we can write down both components of a character's velocity after q frames.
v[x](q) = cos(θ) max{F[l] - F[r] q, 0}
v[y](q) = sin(θ) max{F[l] - F[r] q, 0} - min{F[g] q, f[top]}
To find the position, s, after q frames, we just sum v from 1 to q.
s[x] = v[x](1) + v[x](2) + ... + v[x](q)
s[y] = v[y](1) + v[x](2) + ... + v[y](q)
To find the farthest extent the character reaches, we would just look for the maximum position value.
"Momentum Cancelling"
The main premise of momentum cancelling is to end hitstun earlier than it would normally end. This can be accomplished either with the use of an aerial or an air dodge; however, you can fast fall at any point during an aerial, so it is the case we will discuss.
First, it should not be a surprise that you can fast fall while apparently rising because while in knockback, a character is always considered to be "falling". The reason this helps you live longer is that it allows your fall speed, f, to reach a higher value. So, v[y] will decrease more rapidly, which obviously causes the vertical position, s[y], to be smaller than it was before.
The second "momentum cancelling" strategy is, after having left hitstun, using a double jump or special. The mechanics for this will depend on each particular double jump or special, but in general, using a double jump works the same way it works anywhere else, i.e., it applies a jump force to the character.
Regardless of whether you break out of hitstun early, after the point when hitstun would naturally end, you can induce a drift force by using air control (holding toward the stage). This does not help as much as the other "momentum cancelling" strategies, but since hitstun often ends before knockback, it can help a bit. This works analogously to fall speed, and so the equation for v[x](q) becomes
v[x](q) = cos(θ) max{F[l] - F[r] q, 0} - max{min{F[d] (q - q0), d[top]}, 0}
where q0 is the frame upon which you start using air control, F[d] is the drift force, and d[top] is the top drift speed. Obviously this will result in a smaller total horizontal distance travelled, similar to fast falling.
Simulation
I made a Java applet interactive simulation that allows you the view the effect of applying an arbitrary launch force to a chosen character:
http://colin.shoddybattle.com:81/brawl/
A link to the source code is also available on the page.
The GUI of the simulator should be fairly self-explanatory. Note that the "launch force" field corresponds exactly to the values you get on the results screen under "max launch speed".
One note: at this time, the values given by the simulator are not exact because my values for fall speeds and such were a bit mediocre, but they should be close enough to give you a very good idea what is going on.
References
- Brawl Mechanics: Damage & Knockback Formulae by Amazing Ampharos and me. The present article should be taken to supersede the "Knockback" section.
- leafgreen's post on knockback, in which he came up with the idea used in this artlce.
Also a special thanks to leafgreen386 for testing a couple of things for me.
Colin.