• 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!

CFDP - Ground Attacks

Status
Not open for further replies.

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
Character Frame Data Project - Ground Attacks

BE SURE TO TEST ALL FRAME DATA FOR UNSTALE ATTACKS

What Needs to Be tested?

Hit Frame: This is the earliest frame the attack hits on. Simply stand next to another character, and perform the attack. Count the number of frames from when the attack started until the attack hits. The First frame of the attack is Frame 1, the second is frame 2, etc... For multihit attacks, Find the first frame each hit hits on. NOTE: rapid jabs just cycle through a pattern. Find the pattern and report one cycle as a multihit attack.

Hitlag: this can be done off the same footage as the Hit Frames, Simply count the number of frames the hitee is in freezeframe animation, starting with the frame they're hit, going until the frame before they start moving.

Duration: How long the attack lasts. Do the attack, and hold R. Subtract 1 from the frame # that you see the shield first appear.

BlockHitlag: Hit someone's shield with the attack. Count the number of frames that the shielder does not slide in their shield.

BlockStun: when the attack is hitting the shield, press A to buffer a shield grab. The blockstun is the number of frames between the blockhitlag and when the shield drops for the shield grab.

Invincibility: Use a Full charge mario flood, do the attack once in the flood. When you're invincible, the flood doesn't push you.

Super Armor: uh... any suggestions on how to do this?

Base Damage: This requires no vid equipment. Go into training mode and hit an opponent with the attack 10 times taking note of the damage dealt each time. Add those damages together, and divide by 10.

Launch Speed Base & Growth

Growth is found using this equation:

g = (f - m) / e

where g is the growth, m is the Launch Speed mario takes at 0% (before the hit), e is any percent, and f is the launch speed taken by mario at e% before the attack.

in a new VS game, hit a mario at 0% with a non-stale attack. End the game. In the mario's stats screen find "Max Launch Speed" this is m

start a new VS game using either a handicap or sudden death mode so a mario is at some % (this % is e). Hit him with the non-stale attack. End the game, check his launch speed, this is f.

subtract m from f, and then divide by e to get the growth.

now that you have the growth,

Base Launch Speed is found by taking m and subtracting d * g from it, where d is the damage the non-stale attack does (NOTE: this is NOT the base damage of the attack, it is 1.05 * Base Damage).

aka

base Launch Speed = m - d * g


FOR FIXED KNOCKBACK ATTACKS
(these are attacks that deal the same launch speed to a given character regardless of % or staleness)

Base Launch Speed is just how much launch speed Mario takes

and Variance is
V = (K - B) / R1
where V is variance, K is the launch speed that character takes, and R1 is that character's Launch Resistance 1

So find the launch speed the move does on Mario, then find it on some other character, subtract the Mario one from the other character one, and then divide by the other character's Launch Resistance 1

FOR SET KNOCKBACK ATTACKS
(these are attacks that always yield the same launch speed regardless of character, %, or stale)

Check the launch speed the attack does to any character. This is the base launch speed.

Vertical Strength:
(referred to as 'c')
To find c, hit a character other than Mario with the move at some percent e such that the hit causes a tumble and record the launch speed v. Then

c = -(b + (e + d * 1.05) * g / R1 - v) / R2

where b is the base launch speed, d is the base damage, g is the launch speed growth, and R1 and R2 are the Launch resistance values for the character you hit.

This can be a bit prone to error to do by hand, which is why I've been using this script http://colin.shoddybattle.com:81/gbc.php but there's nothing magical about the calculation and it can be done by hand if you want.
NOTE: if a move would hit the opponent into the ground, make sure you set it up in a way that they don't hit the ground.


Element
I'm not entirely sure what all the elements are, nor who has weaknesses/ resistances to what elements, but I do know that Ivysaur has a weakness to element "fire" and squirtle has a resistance to it. If an attack has a 1.1 multiplier to the expected knockback on either of these (1/1.1 in case of a resistance) then that attack has the element that the attackee is weak/strong against.

Knockback Angle
in training mode, set cpu = jiggs (pretty floaty so gravity has very little effect in the first frame after hitlag)
set the jiggs to 999%. set her standing on the edge of a platform and hit her while capturing video. In frame by frame, find the frame after hitlag. From that frame you can find the angle at which the opponent is sent. These angles are measured in degrees above forward, which means that if you draw a line from the hitter straight in front of him, that's 0 deg, straight up is 90, straight down is -90, and directly behind (for say, a bair) is 180. If the character turns around in the attack, "forward" refers to the direction prior to the attack. Pro Tip: DON'T have the jiggs DI.

Which Attacks Need testing

//Normals
//If the normal is under suspicion of behaving differently against aerial opponents, test both.
Jab, 2nd Jab, 3rd Jab, etc..., rapid jabs
Ftilt
Utilt
Dtilt
Dash Attack
Fsmash
Usmash
Dsmash
//Ground Specials
//NOTE: Specials should be tested against both standing opponents and airborne opponents
Neutral B
Side B
Down B
Up B
Wakeup Attack from face
Wakeup Attack from back
Edge Getup attack <100%
Edge Getup attack >=100%
 

ColinJF

Smash Ace
Joined
Dec 21, 2007
Messages
712
The constant c needs to be found as well. Base launch speed and launch speed growth are not enough to predict the launch speed under arbitrary conditions.

To find c, hit a character other than Mario with the move at some percent e such that the hit causes a tumble and record the launch speed v. Then

c = -(b + (e + d * 1.05) * g / w[1] - v) / w[2]

where b is the base launch speed, d is the base damage, g is the launch speed growth, and w[1] and w[2] are the values for the character you hit.

This can be a bit prone to error to do by hand, which is why I've been using this script http://colin.shoddybattle.com:81/gbc.php but there's nothing magical about the calculation and it can be done by hand if you want.
 

ColinJF

Smash Ace
Joined
Dec 21, 2007
Messages
712
c governs how important vertical acceleration is to the launch speed... I think c is a function of g and the launch angle, so an appropriate name might be "vertical strength constant" or something. Honestly, I don't know a good name for it.

Another property of c is that it is negative if and only if the move is a meteor.
 

3GOD

Smash Ace
Joined
Jul 23, 2006
Messages
745
Location
Athens, GA
Perhaps it should be specified that all frame data be obtained in training mode to ensure the decay/stale move multiplier is 1.

For Jabs, it might be useful to know when the quickest possible 2nd Jab starts (and 3rd Jab, etc.).

Also, for multi-hit attacks, do you guys think we should find the Hitlag, BlockHitlag, BlockStun, etc. for each hitbox? I think for certain moves it would be nice to know, but for drill-like attacks, it might not be worth it.

By the way, everything I've tested so far has identical Hitlag and BlockHitlag, but I'm not 100% sure that this is always the case (since I haven't tested every move in the game).

EDIT: I just tested Zero Suit's Dsmash, and it has 0 Hitlag but 9 frames of BlockHitlag, but I believe this is because of its projectile like properties.
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
Perhaps it should be specified that all frame data be obtained in training mode to ensure the decay/stale move multiplier is 1.

For Jabs, it might be useful to know when the quickest possible 2nd Jab starts (and 3rd Jab, etc.).

Also, for multi-hit attacks, do you guys think we should find the Hitlag, BlockHitlag, BlockStun, etc. for each hitbox? I think for certain moves it would be nice to know, but for drill-like attacks, it might not be worth it.

By the way, everything I've tested so far has identical Hitlag and BlockHitlag, but I'm not 100% sure that this is always the case (since I haven't tested every move in the game).

EDIT: I just tested Zero Suit's Dsmash, and it has 0 Hitlag but 9 frames of BlockHitlag, but I believe this is because of its projectile like properties.
You reminded me to make a note to make sure everything is non-stale, but I believe that it should be collected in VS mode so that it's accurate to playing the game.

---

Almost every multihit move has the same hitlag/shield stuff for each hit except maybe the first and last.

---

Marth Fsmash tipper does not have the same BlockHitlag as Hitlag, possibly due to the cinematic hitlag
 

ColinJF

Smash Ace
Joined
Dec 21, 2007
Messages
712
The problem with collecting the versus mode data for those things is that since it's going to involve 1.05 at some point, the base values will be impossible to recover, since it's truncated to reach a whole number of frames, which means the the versus mode fresh data cannot be used to obtain the values for arbitrary degrees of staleness.
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
...and? That doesn't really matter much. What matters more is if you get an extra frame of hitlag when unstale or something like that that you might not in training mode.
 

infomon

Smash Scientist
Joined
Mar 11, 2008
Messages
5,559
Location
Toronto, Canada
Is there any known relationship between the length of hitlag, and the damage of the attack? I mean, do stale moves have less hitlag?
 

ColinJF

Smash Ace
Joined
Dec 21, 2007
Messages
712
What I'm saying is it should be possible to determine the frames for versus mode knowing the base values (training mode) if we looked at some data, but the reverse is impossible. Plus, from the base values it should be possible to figure out the values for all degrees of staleness, not just fresh, whereas again that is impossible with the fresh versus mode value.

But, if we aren't willing to invest time figuring that out then doing it in versus mode is better. Personally I think it's worth doing it based on the training mode values, but perhaps we should collect some data to start with to see how obvious the relationship is.

Perhaps I should clarify one thing. As far as I can tell, Brawl has only one stale moves multiplier. The code made to change the stale move values for brawl+ ended up affecting all types of decay, not just damage, proving this. And since frames have to be whole numbers, we won't be able to get at the real values in versus mode.

But as I said you can make a case for either way, and I won't be collecting this data myself, so obviously it's up to you guys.
 

leafgreen386

Dirty camper
Joined
Mar 20, 2006
Messages
3,577
Location
Playing melee and smash ultimate
Is there any known relationship between the length of hitlag, and the damage of the attack? I mean, do stale moves have less hitlag?
Yes. This was the the reason DDD's standing infinite stops working after 5 throws. The second hit has only the character being thrown in hitlag, which is dropped by one frame after its sufficiently stale, causing the character to escape his grab range before he can regrab.

It's also apparently what influences shieldstun. There appear to be two shieldstun constants in the game - one for hits of a certain amount of damage and less, and another for those that exceed this damage, and and higher damage = higher shieldstun (in general). I don't remember what that dividing line is, though. lol

I also agree with colin that this stuff should be collected in training mode, as long as we can figure out how to translate it over to a fresh move in vs then it will be more useful overall.
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
well, if someone wants to post the conversion... otherwise, we're gonna go w/ the VS mode because it's more useful immediately. Even if we do find it in training mode and convert to VS, we'd have to list both numbers in the stat sheet, which seems like it would be too much.
 

3GOD

Smash Ace
Joined
Jul 23, 2006
Messages
745
Location
Athens, GA
well, if someone wants to post the conversion... otherwise, we're gonna go w/ the VS mode because it's more useful immediately. Even if we do find it in training mode and convert to VS, we'd have to list both numbers in the stat sheet, which seems like it would be too much.
So I take it we're going to stick with VS mode until further notice?
 

Kirk

Smash Champion
Joined
Nov 3, 2007
Messages
2,495
Location
Arlington Heights, IL
Just so I'm clear, Launch Resistance values are these right?
Code:
Bowser: 1.111, 0.91
Donkey Kong: 1.091, 0.20
Snake: 1.076, 0.16
King Dedede: 1.071, 0.29
Charizard: 1.061, 0.33
Ganondorf 1.056, 0.91
Samus: 1.051, -0.54
Yoshi: 1.045, -0.05
Wario: 1.045, 0.30
R.O.B.: 1.040, -0.32
Ike: 1.035, 0.28
Captain Falcon: 1.030, 0.92
Link: 1.030, 0.46
Wolf: 1.020, 1.84
Lucario: 1.010, -0.40
Ivysaur: 1.010, -0.16
Mario: 1, 0.00
Luigi: 0.995, -0.32
Sonic: 0.985, 0.33
Ness: 0.980, -0.12
Pit: 0.980, 0.00
Lucas: 0.980, 0.49
Diddy Kong: 0.975, 0.55
Toon Link: 0.970, -0.16
Ice Climbers: 0.970, 0.07 
Peach: 0.960, -0.37
Marth: 0.944, -0.25
Sheik: 0.935, 2.21
Zelda: 0.935, -0.26
Falco: 0.919, 1.23
Olimar: 0.919, -0.47
Zero Suit Samus: 0.914, 0.44
Fox: 0.910, 3.41
Pikachu: 0.904, 0.40
Meta Knight: 0.904, 0.68
Kirby: 0.899, -0.44
Squirtle: 0.884, 1.05
Mr. Game & Watch: 0.884, 0.01
Jigglypuff: 0.849, -0.78
Those are the "weight 1/2" values from the knockback formula thread. Just wanted to be sure those are what are to be used for "launch resistance."

Also, when dealing with 2nd Jab, 3rd Jab, Rapid Jab, etc...will the calculation of the hitbox/duration include the frames that come from the previous attack? For example, should I add the 1st Jab's duration/hitlag/etc. to the 2nd Jab's start hitbox frame, total duration, etc...or should they be standalone? (I.E. Calculate the frames starting when you push 'A' for each attack.)

I ask because one can be holding 'A' to continue the string of attacks with some regular jabs...and rapid jabs as well.

I suppose this question could work for multi-hit attacks as well (whether or not to include the hitlag from each attack into the calculation of each successive hitbox frame).

Sorry if I'm not explaining clearly enough...and now that I think about it, these may be stupid questions... xD But I can't think right now so someone set me straight please lol...
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
Those are the launch resistance numbers.

For jabs, i suppose it would make most usefulness to use it as one attack, as in jab 2 hits on frame X where X includes jab 1. Make sure you DON'T do the remainder of the jabs when testing the "duration" of a single hit though, because that's probably NOT the IASA, but rather just the window for inputting the next part of the jabs.

For multihit attacks, you DEFINATELY count each hit as in the same attack, so a multihit attack could hit on frames 5, 8, 11, 14, 17 or something like that.
 

3GOD

Smash Ace
Joined
Jul 23, 2006
Messages
745
Location
Athens, GA
For jabs, i suppose it would make most usefulness to use it as one attack, as in jab 2 hits on frame X where X includes jab 1. Make sure you DON'T do the remainder of the jabs when testing the "duration" of a single hit though, because that's probably NOT the IASA, but rather just the window for inputting the next part of the jabs.
What about something like this for the Jab, 2nd Jab, etc.?

Jab:
Duration: 17
Hits on Frame: 1
Hitlag: 5
Blockstun: 0
Blockhitlag: 5
Advantage: -16
Earliest 2nd Jab Start: 10 (Frame 10 of Jab = Frame 1 of 2nd Jab)
Linking Advantage: -9
Base Damage: 2%

2nd Jab:
Duration: 20
Hits on Frame: 2
Hitlag: 5
Blockstun: 0
Blockhitlag: 5
Advantage: -18
Earliest 3rd Jab Start: 10 (Frame 10 of 2nd Jab = Frame 1 of 3rd Jab)
Linking Advantage: -9
Base Damage: 2%

3rd Jab:
Duration: 22
Hits on Frame: 3
Hitlag: 6
Blockstun: 1
Blockhitlag: 6
Advantage: -18
Base Damage: 3%
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
actually, i like that system better. Just note the earliest frame a jab can start and from there it's hit frame and duration.
 

Kirk

Smash Champion
Joined
Nov 3, 2007
Messages
2,495
Location
Arlington Heights, IL
What I meant for the multi-hit attacks was...if you're hitting something, you get hitlag from each attack, naturally. Should it be recorded as(using your example) hits on frame 5, 13, 21, etc. if each hit has 5 frames of hitlag? Or would we need to subtract that out first?

And if that is the case, I suppose holding A for jabs and subtracting hitlag will get the job done there as well?
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
Any frames of hitlag always count as the same frame for animation on the attack (i.e. if a frame hits starting on frame 3, and has 4 frames of hitlag, the frame right after the hitlag is frame 4). I think this is what you're asking, and I hope this clears it up.
 

Kirk

Smash Champion
Joined
Nov 3, 2007
Messages
2,495
Location
Arlington Heights, IL
I knew about the hitlag...my previous post just had a smaller numerical error. :o

So that's a yes to...subtract the hitlag from the multi-hit attacks when calculating the hitbox for each attack and the total duration of the attack?
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
updated for invincibility.

Also, if anyone knows a solid 1-2 pass reliable method to test super armor, plz let me know.
 

Kirk

Smash Champion
Joined
Nov 3, 2007
Messages
2,495
Location
Arlington Heights, IL
I'm wondering if the FLUDD method works for the Super Armor as well.

Otherwise...I can't think of a good way to test...other than going by the 'trial and error' method, but we wouldn't want that now would we?
 

SCOTU

Smash Hero
Joined
Mar 16, 2007
Messages
6,636
Location
Northville, MI
I was hoping the fludd worked too, but i have this feeling like it doesn't since i once landed a sliding eruption KO finished in teams with it (water gun actually)...
The trial and error method isn't a 1 or two pass method, and would be stupid to test for everything, so we're not gonna go with it.
 

infomon

Smash Scientist
Joined
Mar 11, 2008
Messages
5,559
Location
Toronto, Canada
If I hit someone during super-armor, do they receive hitlag? If not, you can determine when super-armor ends by overlapping a hurtbox during the attack, so they'll get hit as soon as the SA is over. The problem is that the attack may clash with the SA-attack's hitbox before it ends. I see one possible way around this, but it's tricky: use a very fast multi-hitting attack (like a smartbomb, or perhaps many smartbombs), and hope that at least one of the hitboxes activates at the earliest possible frame. At the very least this should give us a pretty tight bound on when the SA ends, in just one or two attempts.

As for when the SA starts... that seems hard for much the same reason that determining when a hitbox deactivates is hard. I'm wondering if there are any noticeable differences in hitlag before and after you enter SA while you have starman / respawn invincibility, but I can't yet think of any way this would help. Are there any interesting properties of team attack we could abuse?
 

leafgreen386

Dirty camper
Joined
Mar 20, 2006
Messages
3,577
Location
Playing melee and smash ultimate
Well, do we even know exactly how SA works? I remember reading something about "faux super armor" and how doing damage of over a certain amount will break it. If they just set this number to some very high value for regular SA, then it probably won't be very abusable.

Or... will it? If we could get a code that turns SA frames into invincibility and then combine it with the continuous hit code we're getting, then we could have an easy and reliable way of identifying the SA frames.
 

infomon

Smash Scientist
Joined
Mar 11, 2008
Messages
5,559
Location
Toronto, Canada
Oh yeah, with those type of hacks I'm pretty sure we can get a working scheme.

IIRC, "faux super armor" could be better called "grab armor" (which depends on controller ports or smthg?? idk) I think you meant "heavy armor", which is stuff like Kirby's down-B and Snake's cypher which has a damage threshold. I'm not sure on the details, and I don't know if Yoshi's midair-jump's armor is categorically different or not, but I think its breakability depends on Yoshi's % as well as the damage caused by hitboxes hitting it.
 

leafgreen386

Dirty camper
Joined
Mar 20, 2006
Messages
3,577
Location
Playing melee and smash ultimate
Yeah, I meant like snake's cypher. I'm pretty sure yoshi's jump is different. I think it has something to do with his weight? Iono.

I thought the grab armor was just a result of the grabs having regular super armor lol
 
Status
Not open for further replies.
Top Bottom