• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Super Smash Bros. Melee - Physics v0.5

MrSilver

BRoomer
BRoomer
Joined
Dec 7, 2001
Messages
1,910
Location
Ede, The Netherlands
Introduction:

I have played Super Smash Bros. Melee a lot and in doing so I’ve got a fairly good intuitive feel for the games physics, like many players. I generaly know where a character will fly and bounce when hit. However, I’ve always been curious what the actual mechanics are of the physics in Melee, what math determines who far each character flies from each move and can these values be quantified and compared? With this in mind I started this project nearly two years ago and I have found the answers I was looking for.


Information about this project:

What I have put down here is only a small portion of what I have worked on. I have also done some testing on several other things like inertia of characters, fall speed and stage heights. Most of this is incomplete or still unconfirmed so it’s not included. Hopefully I’ll add it later, if I get around to it.

A source of data:

Before I can start with any math I need to find a way to quantify what is happening in the game or more specifically, quantify the knock back of an attack. To do that I first had to ask myself what knock back exactly was. The most obvious definition would be: “The force with which a character is knocked away”. But I quickly realized that to find this I’d have to look at the speed at which a character is knocked away.
So, how do you find this speed? Luckily the game itself provided the answer. On the post game screen many statistics are displayed, one of which is a characters top speed. If a character is only knocked back once in an entire match then that statistic will be accurate for that single situation. I had found my source of data. It wasn’t clear in what unit this is shown so I will call it “Kn” for the rest of this text. Now it was time to start testing.

The formula:

I had my source of data, now it was time to try and figure out what variables have an effect on knock back. From experience I knew that the variables that have an effect on the knock back of a character are the characters weight, the move used, the percentage of the character hit, input from the player being hit (crouch canceling, possibly DI) and possibly the fall speed of the character being hit. By doing several tests in which all but one of the variables remain constant I could see the impact of the single changing variable. So I decided to focus on the impact of the percentages first.

I started by using the same move on the same character without any other input at different percentages. I chose Roy’s Flare Blade because it is a very powerful move which means that the effects of any rounding off the game might do would be minimal. It deals 50% damage. As the target I chose Dr. Mario as a benchmark character (I would have chosen Mario but since his weight is different in different versions of the game I chose to go with his clone instead). I hit Dr. Mario at 0%, at 300% in Super Sudden Death mode and at 34% and 59% to give me a range of values to work with, here are the results:
0%: 125Kn
34%: 185Kn
59%: 230Kn
300%: 660Kn
These values suggested that the move has a base knock back regardless of the percentages and then an increment for each point of percentage the target had. I divided the difference between the value for 0% and the value for 300% by the difference in percentage and found the amount this move increases by for each point of percentage the target has: 1.783333Kn. I checked it against one of the intermediate values and it checked out (125+59x1.78333 = 230.2). I would later find out that the knock back isn’t calculated till after the damage the move causes is added so that gave me the following formula:
K = B + I x P
K = The resulting knock back
B = The base knock back of a move without any damage
I = The amount the knock back increases for each percent of damage on Dr. Mario
P = The percentage the character had after being hit.
Using my earlier values I could work out that Roy’s Flare Blade has the following values:
B = 35.83333
I = 1.78333


Adding a bit more weight:

Right, so I now have the formula for calculating the knock back of a move. So it’s time to start adding some of the other variables back in. Starting with weight. After testing Roy’s Flare Blade on many different characters at many different percentages I came to the conclusion that only the incremental part of knock back is affected by weight. The base knock back of a move is identical for all characters. So, when you add this knowledge to our earlier formula it becomes like this:
K = B + I x W x P
W = The weight index of the character being hit compared to Dr’ Mario.
To find this weight index I had to compare the amount the Flare Blade increased per point of percentage. For example, Flare Blade hits DK at 300% for 619Kn. So by calculating the increase per point of damage compared to the unchanged base knock back this produces the following number: 1.66666. By dividing this by the incremental number for Dr. Mario you get a weight index number of 0.93457 for DK. This basically means that DK will receive 93.457% less knock back per point of damage then Dr. Mario.
Using this knowledge I made a list of weight index numbers for each character and compared it to know weight lists, it matched up perfectly. The only difference is that some characters that where even on the scales turn out to be very slightly different but this difference was simply too small to show up on the scales. This also confirms that fall speed doesn’t effect the initial knock back of a move, only how the moment is reduced along the trajectory.


Conclusions:

For those that didn’t feel like strugling through a jumbeled pile of badly formatted math here is a simple conslusion of what I have found out:
An attack consists of two parts. There is a base damage part that is not affected by weight or percentage and there is an increment for each point of damage which is effected by weight. How these 2 portions compare to each other differs from move to move. For instance, Marth’s forward Smash has a very high base knockback (52.26667Kn) but a relatively low increment per damage (0.63667Kn) resulting in a move that is very strong at low percent compared to other moves but doesn’t increase in streangth as much as most other moves as the percentages go up. There are also some moves that don’t have an increment at all such as Fox’ reflector. It only has a base damage so it does the same knockback regardless of percentage or weight.


Compiled data:

Knockback formula:
K = B + I x W x P
K = The resulting knock back
B = The base knock back of a move without any damage
I = The amount the knock back increases for each percent of damage on Dr. Mario
P = The percentage the character had after being hit
W = The weight index number of the character being hit compared to Dr’ Mario

Using the weight index list below and the I and B values from moves below it’s possible to calculate the knock back of any of these moves on any character at any percentage.

Weight index list:
Bowser: 0.92149 - 0.91668
DK: 0.93457
Samus: 0.95353
Ganondorf: 0.95674
Yoshi: 0.96154 – 0.94713
C. Falcon: 0.97917
Link: 0.98077
Dr. Mario: 1
Luigi: 1
Mario: 1 – 1.00961
Ness: 1.03044
Peach: 1.05287
Zelda: 1.05287
Sheik: 1.05287
Ice Climber*: 1.06409
Marth: 1.07049 – 1.08171
Young Link: 1.08011
Roy: 1.08011
Mewtwo: 1.08171
Falco: 1.10895
Pikachu: 1.11055
Fox: 1.13939 – 1.15381
Kirby: 1.17624 – 1.15060
Mr. Game & Watch: 1.24993
Jigglypuff: 1.25154
Pichu: 1.28999
*This value is for the player controlled Ice Climber.
Characters with 2 values had their weight changed in the PAL version. The first value is their NTSC weight and the second is their PAL weight

Move list:
All these moves where tested on Dr. Mario in the US version of the game.


Dr. Mario
Normal C-stick forward Smash:
0%: 41
300%: 294
Damage: 19%
I: 0.8433333333
B: 24.97666667

Upward C-stick forward Smash:
0%: 43
300%: 308
Damage: 20%
I: 0.8833333333
B: 25.33333333

Downward C-stick forward Smash:
0%: 40
300%: 280
Damage: 18%
I: 0.8
B: 25.6

Fully Charged forward Smash:
0%: 53
300%: 378
Damage: 25%
I: 1.083333333
B: 25.91666668

-

C-stick Down Smash Frontside:
0%: 43
300%: 229
Damage: 18%
I: 0.62
B: 31.84

C-stick Down Smash Backside:
0%: 37
300%: 195
Damage: 15%
I: 0.5266666667
B: 29.1

Fully charged Down Smash Frontside:
0%: 52
300%: 293
Damage: 24%
I: 0.8033333333
B: 31.91666667

Fully charged Down Smash Backside:
0%: 43
300%: 247
Damage: 20%
I: 0.68
B: 29.4

-

C-stick Up Smash non-sweetspot:
42%: 55
300%: 202
Damage: 16%
I: 0.569764419
B: 21.95348837

C-stick Up Smash sweetspot:
0%: 39
300%: 251
Damage: 16%
I: 0.7066666667
B: 27.69333333

Fully Charged Up Smash non-sweetspot:
0%: 39
300%: 256
Damage: 21%
I: 0.7233333333
B: 23.81

Fully Charged Up Smash Sweetspot:
0%: 47
300%: 318
Damage: 21%
I: 0.9033333333
B: 28.03

-

Forward Arial:
0%: 50
300%: 286
Damage: 17%
I: 0.7866666667
B: 36.62666667


Fox
C-stick Forward Smash:
0%: 25
300%: 247
Damage: 15%
I: 0.74
B: 13.9

Fully Charged Forward Smash:
0%: 34
300%: 320
Damage: 20%
I: 0.9533333333
B: 14.933333333

-

C-stick Down Smash:
0%: 23
300%: 160
Damage: 15%
I: 0.4566666667
B: 16.15

Fully Charged Forward Smash:
0%: 29
300%: 206
Damage: 20%
I: 0.59
B: 17.2

-

C-stick Up Smash:
0%: 43
300%: 321
Damage: 18%
I: 0.9266666667
B: 26.32

Fully Charged Up Smash:
0%: 56
300%: 417
Damage: 24%
I: 1.203333333
B: 27.12000001

-

Up Tilt:
0%: 32
300%: 275
Damage: 12%
I: 0.81
B: 22.28

-

Up Arial (second hit only):
0%: 42
300%: 258
Damage: 13%
I: 0.72
B: 32.64

Back Arial:
0%: 18
47%: 51
300%: 229
Damage: 15%
I: 0.7033333333
B: 7.450000001

-

Reflector:
0%: 43
300%: 43
Damage: 5%
I: 0
B: 43


Ganondorf
C-stick Forward Smash:
0%: 66
300%: 294
Damage: 22%
I: 0.76
B: 49.28

Fully Charged Forward Smash:
0%: 68
300%: 427
Damage: 32%
I: 1.19666667
B: 29.706666666

-

C-stick Down Smash Frontside:
0%: 63
300%: 63
Damage: 8%
I: 0
B: 63

C-stick Down Smash Backside:
0%: 54
300%: 272
Damage: 14%
I: 0.7266666667
B: 43.826666667

Fully Charged Down Smash Frontside:
0%: 63
300%: 63
Damage: 10%
I: 0
B: 63

Fully Charged Down Smash Backside:
0%: 62
300%: 349
Damage: 19%
I: 0.95666666667
B: 43.8233333333

-

C-stick Up Smash First Hit:
0%: 52
300%: 290
Damage: 22%
I: 0.793333333
B: 34.5466666667

C-stick Up Smash Second Hit:
0%: 42
300%: 250
Damage: 19%
I: 0.69333333333
B: 28.8266666667

Fully Charged Up Smash First Hit:
0%: 66
300%: 384
Damage: 30%
I: 1.06
B: 34.2

Fully Charged Up Smash Second Hit:
0%: 52
300%: 320
Damage: 25%
I: 0.893333333
B: 29.66666667

-

Up Tilt:
0%: 97
300%: 384
Damage: 27%
I: 0.9566666667
B: 71.17

Forward Tilt:
0%: 28
300%: 214
Damage: 13%
I: 0.62
B: 19.94

-

Jab:
0%: 28
300%: 140
Damage: 7%
I: 0.3733333333
B: 25.386666667

-

Forward Air:
0%: 52
300%: 240
Damage: 17%
I: 0.6266666667
B: 41.346666667

Back Air:
0%: 37
300%: 261
Damage: 16%
I: 0.7466666667
B: 25.05333333

Down Air (on grounded opponent):
0%: 46
300%: 284
Damage: 22%
I: 0.7933333333
B: 28.546666667

Down Air (on airborne opponent):
0%: 66
300%: 360
Damage: 22%
I: 0.98
B: 44.44

Up Air:
0%: 37
300%: 223
Damage: 13%
I: 0.62
B: 28.94

-

Warlock Punch:
0%: 95
300%: 523
Damage: 34%
I: 1.42666666667
B: 46.493333333

Reverse Warlock Punch:
0%: 76
300%: 520
Damage: 34%
B: 25.74
I: 1.48

Wizards Foot (On the ground):
0%: 51
300%: 230
Damage: 15%
I: 0.5966666667
B: 42.05

Wizards Foot (In the air, on airborne opponent):
0%: 49
300%: 205
Damage: 14
I: 0.52
B: 41.72


Marth
C-stick Forward Smash (tip):
0%: 65
300%: 256
Damage: 20%
I: 0.6366666667
B: 52.26666667

Fully Charged Forward Smash (tip):
0%: 75
300%: 327
Damage: 27%
I: 0.84
B: 52.32

C-stick Forward Smash (center):
0%: 47
300%: 185
Damage: 14%
I: 0.46
B: 40.56

Fully Charged Forward Smash (center):
0%: 52
300%: 234
Damage: 19%
I: 0.6066666667
B: 40.47333333

-

C-stick Down Smash (both sides, tip):
0%: 61
300%: 284
Damage: 16%
I: 0.7433333333
B: 49.10666667

Fully Charged Down Smash (both sides, tip):
0%: 69
300%: 355
Damage: 21%
I: 0.9533333333
B: 48.98

-

C-stick Up Smash (tip):
0%: 52
300%: 251
Damage: 18%
I: 0.6633333333
B: 40.06

Fully Charged Up Smash (tip):
0%: 62
300%: 320
Damage: 24%
I: 0.86
B: 41.36

-

Forward Tilt (tip):
0%: 46
300%: 176
Damage: 13%
I: 0.4333333333
B: 40.36666667

Up Tilt (tip):
0%: 44
300%: 217
Damage: 12%
I: 0.5766666667
B: 37.08

-

Neutral Air (second hit only):
0%: 39
300%: 158
Damage: 10%
I: 0.3966666667
B: 35.03333333

Down Air (on airborne opponent, tip):
0%: 43
300%: 168
Damage: 13%
I: 0.4166666667
B: 37.58333333

-

Fully Charged Shield Breaker:
0%: 60
300%: 432
Damage: 28%
I: 1.24
B: 25.28

Dolphine Slash:
0%: 58
300%: 188
Damage: 13%
I: 0.4333333333
B: 52.36666667
.

How to gather data:

If there are people who would like to help expand the list of moves I would very much apreciate it. To gather such data go to normal Melee mode, load up a fight against a human controlled Dr. Mario, walk up to him and hit him once with the move you are testing. Note down the damage it did and then end the match. On the post game screen check the fastest pitch statistic for the character that attacked or the top speed statistic for the character that got hit, they should be the same so write it down. Then go to Super Sudden Death mode and repeat this process and write down the fastest pitch/top speed value as well. Then use the following formula:
(Kn at 300% - Kn at 0%) / 300 = I
Kn at 300 – (300 + damage the move did) x I = B
Then write it down in the same format I did above.

For example for Marth’s C’sticked forward smash tip you’d get these values from testing:
0%: 65
300%: 256
Damage: 20%
Then you’d run this through the formula’s above:
(256 – 65) / 300 = 0.63667
I = 0.63667
256 – (300 + 20) x 0.63667 = 52.26667
B = 52.26667

PS: Can I have my MBR access back?
 

tarheeljks

Smash Lord
Joined
Dec 18, 2006
Messages
1,857
Location
land of the free
Interesting. I didn't read past the weight index list, but your conclusion reflects what I've seen (and probably what most others have seen) while playing/watching the game.

also, technically you want the acceleration, not the speed, in order to calculate force. Force is change in momentum over time, which is the product of mass and acceleration. You've actually calculated the momentum of the character after they've been hit, but the results should still be the same. I mention this only b/c I think the calculation you have used is more useful b/c ttacks in SSMB are essentially collisions (which are measured using momentum); it would be interesting to see this data applied to the efficacy of DI-- that is to say how well DI negates knockback.
 

_myth_

Smash Cadet
Joined
Nov 25, 2005
Messages
44
Location
Pomona, CA
I believe there is more to this. An example I'm thinking of, which I never quite understood is this:

Ganondorf's neutral-B (warlock punch) vs. U-tilt A (big boot).

at 0% the big boot has tremendous knockback. But as the percentage increases in the target, his warlock punch will send the target flying further. I put this to the test on the homerun contest. 0% test both you can see that the boot send the bag flying farther. However I did two identical runs to get the bag around 250% or so (they were the same in both instances) and the warlock punch sent the bag flying much much further.

Do you have justification or anything dealing with this phenomenon?

edit: nevermind I think it was answered in your formula.
 

Fox Machine

Smash Journeyman
Joined
Dec 28, 2001
Messages
332
Location
Calgary
This is interesting. I have always wondered about the physics of Melee myself, but couldnt come up with a good way make measurements. Using the fastest pitch statistic is a marvelous idea.

@tarheeljks - Don't take the word "physics" too literally. You simply cant fully apply Newtonian physics to a video game, especially a fighting game. For example, characters dont actually accelerate when they are hit by an attack. They simply go from being still, to flying off at the "fastest pitch" speed. In this case the acceleration would be infinite.

But there may be other concepts in real world physics that are applicable, such as gravity. When falling or after being hit by an attack, a character might accelerate downwards at a constant rate "g" that depends on the character. Fastfallers would obviously have a larger "g" than floaters. I think the concept of terminal falling velocity is in game as well.

Also, you asked about DI. From my intuitive understanding of DI, it doesn't negate knockback at all. Instead, it simply alters the direction of the knockback, as its name implies.

@_myth_ - Yeah there is a constant term in his formula which is "B". So in your case Utilt has a larger "B" while warlock punch has a larger "I" (or dK/dP).

More about HRC - It is generally known that the distance the bag is hit does not vary linearly with damage. Does your model account for this observation?
After thinking about it, I think it does. If knockback "K" is interpreted as initial speed, then a faster knockback would result in faster horizontal velocity and greater time spent in the air, which would make distance traveled a 2nd degree polynomial of "P".

LOL you did this to get your MBR access back? I wouldn't mind having mine back either
 

MrSilver

BRoomer
BRoomer
Joined
Dec 7, 2001
Messages
1,910
Location
Ede, The Netherlands
My initial testing hasn't shown that DI has any impact on the knock back of a move. All it does is change the angle. I still need to do some more testing to be sure of this. Also, don't confuse DI with crouch canceling because CC does in fact reduce the knock back.

As for the impact of gravity, I have already done some testing into this but haven't really come to any conclusions. I've certainly measuered some noticable difference between the upwards deceleration of seperate characters but I'm unsure if this is purely cause by their "fall speed" or if there's some other kind of drag involved. After all, horizontal speed decreases over time as well and I'm unsure if this effect has any impact on vertical speed.

And about HRC, like you alredy said there are many more variables in there like the angle of the knock back and the rate at which momentum is lost. But that said, I did once work out a formula for the distance per percentage. Maybe I still have that somewhere and I could combine it with my knock back research to see how they relate to each other. Might also be a good way to work out some of the stuff that happens after the initial knock back.

And I didn't do this to get my MBR access back, I probably could have gotten it back for just asking anyway. I did it out of curiosity.
 

ivootjes(nr18)

Smash Lord
Joined
Jun 17, 2003
Messages
1,345
Location
Holland, Hoorn
Hey Matt, long time no see ;)

Are these characters that you posted the only characters that you tested, or have you tested other characters too? I'll test Luigi as soon as i get home, is that okay or did you test him already?

@Fox Machine: I can explain your question about HRC, but i'm now at school and don't have time to do it. I'll do it this evening
 

MrSilver

BRoomer
BRoomer
Joined
Dec 7, 2001
Messages
1,910
Location
Ede, The Netherlands
I did do a bit more testing but it's not as well documented and needs some more work before I post it. And like I said, if anyone wants to add moves then I welcome them. Just make sure you follow the guidelines I gave so that the data will be comparable to the rest that I've gathered.
 

ivootjes(nr18)

Smash Lord
Joined
Jun 17, 2003
Messages
1,345
Location
Holland, Hoorn
I tested some stuff with Luigi on Docter Mario exactly how you told me to do it

Luigi

Normal C-stick Forward Smash
0%: 34
300%: 285
Damage: 13%
I: 0.83667
B: 23.12333

Normal Fully Charged Forward Smash
0%: 42
300%: 360
Damage: 17
I: 1.06
B: 23.98

C-Stick Downsmash Front- and Backside (they're the same, i tested that)
0%: 39
300%: 228
Damage: 17%
I: 0.63
B: 10.71

Fully Charged Downsmash Front- and Backside
0%: 48
300%: 296
Damage: 23%
I: 0.82667
B: 28.98667

C-Stick Upsmash
0%: 41
300%: 272
Damage: 17%
I: 0.77
B: 27.91

Fully Charged Upsmash
0%: 51
300%: 355
Damage: 23%
I: 1.01333
B: 27.69333

Up Tilt
0%: 33
300%: 206
Damage: 9%
I: 0.57667
B: 27.81

Normal Forward Tilt
0%: 21
300%: 163
Damage: 10%
I: 0.47333
B: 16.26667

Down Tilt
0%: 14
300%: 123
Damage: 9%
I: 0.36333
B: 10.73

Up throw
0%: 48
300%: 128
Damage: 7%
I: 0.26667
B: 46.1333

Down Throw
0%: 45
300%: 78
Damage: 7%
I: 0.11
B: 44.23

Forward Throw
0%: 42
300%: 122
Damage: 8%
I: 0.26667
B: 39.86667

Back Throw
0%: 55
300%: 151
Damage: 10%
I: 0.32
B: 51.8

Taunt (had to do this :lick:)
0%: 39
300%: 39
Damage: 1%
I: 0
B: 39

Taunt Spike
0%: 67
300%: 67
Damage: 1%
I: 0
B: 67
I tested this on a dr mario who was on the ledge.

After that i tested how being on the ledge had influence on the knockback speed, i thought that it wouldn't matter except for spikes. First I tried Falco's DownAir on a docter mario

Down Air on a standig Doc:
0%: 6
300%: 160
Damage: 12%

Down Air on a Doc at the ledge
0%: 27
300% 207
Damage: 12%

Ok, that was a huge difference, but i expected this because a charachter can't fly into the ground with a huge speed when it's already standing on the ground.

After that i tested Luigi's Neutral Air on Doc

Neutral Air on a standing Doc
0%: 30
300%: 240
Damage: 15%

Neutral Air on a doc at the ledge
0%: 31
300%: 240
Damage 15%

Ok, so it was the same at 300%, but it wasn't at 0%. I don't understand this difference (it's only 1 anyway) I tried it two times. I'm going to try it with other attacks tommorow


Oh, and I have some information you could add for Fox Upsmash and DownSmash, they're different in PAL, i was confused by your statistics, and then i realized that they're NTSC :p

Fox

C-Stick Upsmash (PAL)
0%: 38
300%: 292
Damage: 17%
I: 0.84667
B: 23.60667

Fully Charged Upsmash (PAL)
0%: 49
300%: 384
Damage: 23%
I: 1.11667
B: 23.31667

C-Stick Downsmash (PAL)
0%: 22
300%: 142
Damage: 13%
I: 0.4
B: 16.8

Fully Charged Downsmash (PAL)
0%: 25
300%: 179
Damage: 17%
I: 0.51333
B: 16.27333

Hope this information helps
 

jiaflu

Smash Rookie
Joined
Dec 20, 2006
Messages
19
My initial testing hasn't shown that DI has any impact on the knock back of a move. All it does is change the angle. I still need to do some more testing to be sure of this.
DI doesn't impact knockback. That's why the correct way to DI is always perpendicular to the direction that you're being hit. If DI did affect knockback, you'd just jam your stick towards the way you came flying from.
 

psicicle

Smash Ace
Joined
Sep 6, 2006
Messages
618
One issue that may come up is the part of the hitbox that you hit with. Is there any way to standardize this?
 

tarheeljks

Smash Lord
Joined
Dec 18, 2006
Messages
1,857
Location
land of the free
I wasn't suggesting that he conduct a true physics experiment; like you said that's not possible in a video game. My point was merely that this data can be analyzed using methods of physics.
 

thesage

Smash Hero
Joined
Dec 26, 2005
Messages
6,774
Location
Arlington, Va
3DS FC
4957-3743-1481
Doesn't Ness' f-throw have a set knockback after a certain percent? Try chaigrabbing with it off the edge with w/ a level 9 kiby with a level 9 handicap. Ness infinite!
 

metroid1117

Smash Master
Joined
Sep 1, 2005
Messages
3,786
Location
Chester, IL
Interesting... I've always wondered the physics for SSBM. This is a fascinating aspect; we can finally start breaking down the game's physics engine.

As for implementing DI, you may be able to express it as a vector equation; you have two vectors, knockback and DI (DI seems to be more noticeable the higher your %, so I'm assuming that the magnitude of DI is proportional to the magnitude of the knockback). You'd have to measure the angle of trajectory by setting the damage up high and pausing the game to use a protractor on the white smoke, and then the equation for DI might look something like D * M * cos(theta), where D is a constant for each of the different types of DI (automatic, smash, etc), M = magnitude (whether you were DI'ing completely to the left or halfway), and you have to take the cosine of the angle that you DI in because if you DI parallel to the angle of trajectory, it will have little or no affect on the resulting trajectory.

That's only my theory though; I don't have time to prove it, nor am I as diligent as you. Keep up the excellent work! If we had the rep system, I'd rep you for sure. *Bookmarks thread
 

Fox Machine

Smash Journeyman
Joined
Dec 28, 2001
Messages
332
Location
Calgary
I don't think SDI or ASDI works like that tho. It just translates you a set distance in the direction that you smash, and doesn't affect the trajectory at all. However, regular DI does, and it might have an equation similar to yours. You might want to replace the cos with sine, because cos(0) = 1, whereas you mentioned, DI in the parallel direction (angle = 0) does nothing.
 

metroid1117

Smash Master
Joined
Sep 1, 2005
Messages
3,786
Location
Chester, IL
Regarding the angle, I should've made it more clear; theta is the direction that YOU DI in to the trajectory without DI. Let's use a semi-circle in which 0 degrees is to the right and 180 degrees is to the left. The line(s) in the middle is/are the horizontal.

180____________|_____________ 0

Now, let's say a Bowser FSmashes you at the horizontal and you fly to the right at 135 degrees North of West without DI. (You can't draw a 45 degree angle, just imagine that it is 135 degrees)

However, the next time you get FSmashed, you DI 45 North of East. Now, you have two vectors.

The vector on the left symbolizes the knockback without DI, and the vector on the right symbolizes your DI. Theta is the angle you DI compared to the angle of trajectory. In other words, the angle of trajectory becomes your new horizontal.
 

Fox Machine

Smash Journeyman
Joined
Dec 28, 2001
Messages
332
Location
Calgary
DI works on something that sends you horizontal, petre. It just needs to be perpendicular to the natural trajectory of the attack. So the in the case of Sheik's slap, DI up would be most beneficial.

metroid1117, we pretty much have the same idea in terms of what theta is. So what are you suggesting we do with the two vectors? In the case you give with the Bowser fsmash theta = 90 and your "equation for DI" = 0. I have no idea what the "equation for DI" computes, so could you please clarify?

My guess is that there is some formula for DI that changes the angle of the trajectory. This is based on the observation that the magnitude of the "force" you are struck with remains the same. We also know that the change in direction is greatest when the inputted DI is perpendicular direction of the natural trajectory, and naught when the inputted DI is parallel to the natural trajectory.

I have a feeling that research has already been done on the subject of DI. I mean, Doraki wrote an extensive guide on DI.
 

metroid1117

Smash Master
Joined
Sep 1, 2005
Messages
3,786
Location
Chester, IL
DI works on something that sends you horizontal, petre. It just needs to be perpendicular to the natural trajectory of the attack. So the in the case of Sheik's slap, DI up would be most beneficial.

metroid1117, we pretty much have the same idea in terms of what theta is. So what are you suggesting we do with the two vectors? In the case you give with the Bowser fsmash theta = 90 and your "equation for DI" = 0. I have no idea what the "equation for DI" computes, so could you please clarify?

My guess is that there is some formula for DI that changes the angle of the trajectory. This is based on the observation that the magnitude of the "force" you are struck with remains the same. We also know that the change in direction is greatest when the inputted DI is perpendicular direction of the natural trajectory, and naught when the inputted DI is parallel to the natural trajectory.

I have a feeling that research has already been done on the subject of DI. I mean, Doraki wrote an extensive guide on DI.
Hmmm... You have a point; cos(90) = 0 indeed. I guess if we're going to establish the trajectory without DI (which I'm going to start calling the base trajectory) as the new horizontal for your own DI input, we should call it sin(theta) instead of cos(theta) like petre said.

Anyway, you have two vectors; knockback and DI. So, why not use vector addition? Here's the weird part though; we now cannot use the angle that the DI has to the base trajectory - we have to go back and use the horizontal as our reference point if we're going to find the x and y components of the DI vector. I'll call this angle alpha.

So, just as an overview: the DI equation for automatic DI (or at least, what I think it is) is: DI = D * M * sin(theta), where D is a constant with each move that determines the DI-ability of the attack (the DI you can get on Sheik's DThrow in NTSC vs. DI you can get on Bowser's FSmash, for example), M is whether or not you were fully DI'ing, and theta is the angle USING THE BASE TRAJECTORY AS YOUR HORIZONTAL.

Now, you have knockback and DI; you can use vector addition/subtraction to find the resultant trajectory. Let's use alpha as the angle to the HORIZONTAL for the DI vector and beta as the angle to the horizontal for the knockback vector.

1. Find the x-component of both vectors and subtract them (which I'll call Kn_Fx).
Kn*cos(beta) - DI*cos(alpha)

2. Find the y-component of both vectors and subtract them (which I'll call Kn_Fy).
Kn*sin(beta) - DI*sin(alpha)

3. Find the magnitude of the resultant (which I'll call Kn_F) using Pythagorean Theorem.
(Kn_F)^2 = (Kn_Fx)^2 + (Kn_Fy)^2, or Kn_F = sqrt((Kn_Fx)^2 + (Kn_Fy)^2)

4. Find the angle of the resultant using triangle trigonometry (which I'll call theta_F).
theta_F = arctan(Kn_Fy / Kn_Fx) - note that arctanent is the same as inverse tangent.

Again, this is only a theory; I could be completely right or completely wrong. I don't have time to test out this theory nor am I allowed to play Smash due to my parents, so I can't do any other work for this project.

Lol that was a nice little refresher on vectors for the AP exam :laugh: .

EDIT: Actually, after thinking it over, I am wrong; I forgot to account that you can DI with the attack and still have an effect; seeing as sin(180) = 0, my theory is flawed.

So, when you establish the base trajectory as your new horizontal, you would need to calculate the direction of the trajectory. Like below:

180 degrees <--------------------------^------------------- 0 degrees

The arrow to the left is the base trajectory, and the arrow pointing upward is the vertical. Now, when you DI, you can DI either (and all of these are relative to the base trajectory) up, down, up-right, up-left, down-right, and down-left. This could get a little messy, but I think that....

From theta = 45 - 135 degrees and 225 - 315 degrees, you use sin(theta)
From theta = 135 - 225 degrees, you use sin(theta - 90)
From theta = 0 - 45 degrees and 315 - 360 degrees, you use cos(theta)

I don't see anything wrong with the rest though; is there anything that you guys see?
 
Top Bottom