There is no advanced math in frame data, except for a few niche mechanics in certain games… like Guilty Gear. The only math experience you need is pre-middle school: addition and subtraction, knowing that 4 comes before 5, and what a negative number is.
That being said, fighting games are more than just frames. There are pixels, too. Just because a move is fast doesn’t mean it’s in range of the opponent. Just because a move is in range doesn’t mean it’s going to hit the opponent. In order to understand how fighting games work, you need to understand the basics of both frame data and pixel data, and, by pixel data, I mean hitboxes and hurtboxes. This is the guide to frame data.
Learning the frame data of a game can be very boring or daunting if you go about it that way. This doc isn’t going to talk about the frame data of a game. It’s about frame data CONCEPTS, which are neither boring nor daunting. In fact, you absolutely need to understand everything in here, at least subconsciously, in order to be good at any fighting game.
How it Works
What is a frame? (simple)
A “frame” is simply a unit of time, just like “meter” is a unit of length. One frame is equivalent to one-sixtieth (1/60) of a second. So, if an animation is 2.5 seconds long, it’s also 150 frames long – they mean the same thing.
Why frames? (complex)
Why do we use frames and not, say, milliseconds? First of all, frames don’t exactly divide into seconds evenly. Two frames, for example, is about 0.03 seconds. Dealing with frames instead of milliseconds removes decimals entirely, since nothing happens in between frames, only on frames.
More importantly, the game calculates things on a frame-by-frame basis, which means that, every frame, a bunch of stuff happens, and, in between frames, nothing happens at all. In real life, this is not the case, since things flow smoothly from one place to the next – in games, though, slowing the game down reveals not smooth motion, but a bunch of stop-motion frames that fly by so fast that you can’t tell the difference.
Since the game literally only counts in frames, if we also count things only in frames, not only is it easier to understand why edge cases work the way they do, but it also guarantees that everything is a whole number without decimals. The main downside is that fighting games are sort of locked into 60 frames per second, otherwise there’d be mass confusion. Other games can unlock the framerate and not see any major gameplay differences, but fighting games aren’t programmed to work like that, which creates a completely 100% consistent experience.
Terminology: Attacker and Defender
Frame “Data” is a set of data regarding the animations of various things. The most basic “data” you can look at is the “total frames” of something, which is to say the total amount of time the character is locked into doing that action once it starts.
The “attacker” is the one doing the attack. The “defender” is the one not doing the attack. This is just to clarify who’s who. The defender might be blocking, getting hit, or avoiding the attack altogether. Frame data typically is thought of as a property of a move itself, so the numbers follow the attacker’s point of view. For example, if a move is listed as “+5,” you could also say that the defender is at “-5.” What do these numbers mean? Let’s find out.
Attacker’s Animations: Startup and Recovery
When you press a button, your character starts performing an attack. As the character is winding up for the attack, they are in the attack’s Startup. Once the attack is able to hit the opponent, they are in Recovery. Unless interrupted somehow, the character must sit through the entire animation before being able to act again. The thing that distinguishes these two parts of animation from one another is what happens in between them – the attack hitting. This moment, when the attack hits, is where everything starts.
In other words, there is a specific frame during the attacker’s animation where the attack would connect; the part of the animation before that is the startup, and the part of the animation after that is the recovery. A lot of people will call this “wrong” or “incomplete,” and in fact a lot of frame data resources will also not list these values in this way, but this is how it is literally programmed into the game, and it is easily the most useful way to think about frame data, and it’s not even close… so it’s what I’ll be using.
Defender’s Animations: Hitstun and Blockstun
When getting attacked, you also undergo an animation. If you get hit, your character reels back, goes “aaaAAaargh!” and throws his hands in the air like an idiot. This is called Hitstun. During Hitstun, you cannot do anything. The same thing happens when you block the attack, only this time it’s called Blockstun. During Blockstun, you cannot do anything except continue blocking. Some games have special mechanics that break these rules, but this is where every fighting game starts.
So each attack will have some “total frames” which consists of a “startup” and a “recovery” duration, and the attack happens in the middle, but that attack also has “hitstun” and “blockstun” values which it applies to the defender whenever the attack connects.
When you block something, you’re put in Blockstun for a certain length of time. Likewise, when your attack is blocked, you must follow through with the Recovery animation. Frame Advantage depends on which animation is longer – the defender’s Blockstun, or the attacker’s Recovery. Whichever character recovers first has Advantage. If the attacker recovers first, the move is “plus.” If the defender recovers first, the move is “minus.” If they recover at the same time, it’s “even” or “zero.”
The same applies on hit, using the defender’s Hitstun instead of Blockstun. This way, there is both “Block Advantage” and “Hit Advantage” for every attack in the game. Most of the time, blockstun is shorter than hitstun, meaning moves are better on hit than on block for the attacker.
Advantages are mere derivatives of other pieces of data, so it’s unlikely that these values are stored in the game files. In other words, you can just know the recovery and blockstun of a move, which are definitely in the game files somewhere, and then learn the block advantage from those values.
What’s the point?
If both characters start their attacks as soon as they can after a move is blocked, the one with Frame Advantage will win. If a move is “+1” on block, that means the attacker recovers one frame before the defender. That’s a very small amount of time, but one frame is all it takes to let the attacker hit first, thus scoring them a counter hit instead of a trade. It’s this simple fact that allows matches to have “momentum” favoring one side over another… if a player gets hit over and over again, it might be because they’re trying to act while their opponent has frame advantage, thus giving the opponent even more frame advantage.
If a move is +5 on hit, the sequence of events is this: the attacker recovers, and then, five frames later, the defender recovers. During those five frames, the defender can’t do anything, because they’re still in hitstun… but the attacker can attack again. Hitting them again during those frames is guaranteed to hit, called a “Link” combo. The tricky part about link combos is getting the timing – the second attack has to be timed right as the first attack’s recovery animation ends. Most modern fighting games try to alleviate the timing aspect of link combos by adding a “buffer,” which means that, if you hit the button a little too early, the game waits a bit before doing the attack on time.
Likewise, if a move is +5 on block, then using a 5f or faster attack will form a True Block String, which means that the opponent has no choice but to block the second hit. Knowing which strings are not “True” block strings can be pretty useful. If the opponent leaves a gap in their pressure, take advantage of that and escape when you can.
When a child thinks of the word “punish,” they think “I’ve done something I shouldn’t have, and there’s nothing I can do to avoid having a bad time.” That’s exactly what punishment is in fighting games. When the attacker does a move that is very minus on block, the defender can Punish. Earlier, I said that, if a move is +5 on hit, then the attacker can combo into a 5f or faster attack. Punishment is what happens when it’s the opposite: the attacker does a -5 attack, and the defender uses a 5f or faster attack, thus hitting the attacker while he is still recovering from the move.
This is easy to see with uppercut attacks. The attacker flies into the air, unable to act for a very long time. If you don’t punish these attacks, then you’re playing the game wrong, because you have an eternity to do whatever you want to the attacker in these situations. Punishment is what makes invincible reversals, like uppercuts, such a huge risk, and is why you don’t see them as frequently at high levels.
Above, if I say “4f” startup, I mean the move is active and hitting on the fourth frame of its animation. This lets all the math work out nicely – you can combo a 4f move after a +4 move, for example. But there are some games which would say the move has “3f” startup, because there are three empty frames before the first active frame. Namely, Skullgirls and Killer Instinct have built-in frame data displays which use this notation. But no one in their right mind actually thinks of it that way.
Hitstop is a mechanic that exists almost purely for aesthetics. When a move hits the opponent, the whole game freezes in place for dramatic effect. Usually, this is brief and hard to see, but some big moves really exaggerate it, like Focus Attacks in SFIV. There are uses for hitstop, since you can press buttons and stuff during the hitstop – for example, Potemkin in Guilty Gear has extra time to charge his Hammerfall attack. You can also do some dirty, filthy Option Selects in SFIV to catch invincible back dashes without giving up pressure if they don’t back dash.
Because of Hitstop, there can exist “0f startup” attacks. That is to say, if you weren’t blocking before they pressed the button, you’re getting hit, even if you block on the same frame the attack begins. The only attack I know of that fits this description is King’s Neo Max Super Special Move from The King of Fighters XIII, so it’s pretty niche. It can punish moves that are 0 on block/hit.