Frame Data Patterns that Game Designers Should Know

Startup, Active, Recovery, Hitstun
Advantage, Disadvantage, Combo, Unsafe
Frame Trap

This Dustloop page is a helpful companion to this article.

Every attack has 3 phases, startup, active, and recovery. Startup is time before the attack has a hitbox out. Active is the time that the hitbox is out. Recovery is the time after the hitbox is out before you return to idle.

Attacks inflict a stunned animation on those that they hit, either hitstun or blockstun. This stun animation will interrupt whatever animation is currently playing, even if that animation is stun. In most games, the hitstun and blockstun animations are different durations, with hitstun being longer than blockstun.

If the hitstun animation is longer than the recovery frames of the move, then the attacker will be able to act first, before the enemy who was stunned. Frame Advantage means it’s your turn, and the amount is how much of a head start you get.

If the hitstun animation is shorter than the recovery frames of the move, then the defender will be able to act first, before the attacker who is still recovering.

These are called frame advantage and disadvantage. You are at advantage if you get to act first, and disadvantage if you get to act second. Most of the time these terms are used from the point of view of the attacker, who is inflicting hitstun on their opponent.

If the attacker has advantage, you say they’re plus. If they’re at disadvantage, you say they’re minus.

If a move has frame advantage, then the attacker gets to act first. If the defender tries to attack back, then their move will get interrupted during the startup. This is a frametrap. A series of frame traps is called a blockstring. If the attacker is at frame disadvantage, then they can frametrap themselves for trying to attack when they’re minus.

In this way, if your move is plus, it’s your turn, go again. If your move is minus, it’s their turn, let them attack.

If the frame disadvantage is longer than the startup of a defender’s move, then the defender can attack back and land a guaranteed hit. This means the move is unsafe. Since hitstun and blockstun are usually different, this means a move can be tuned to be unsafe on block, but safe, or even at advantage on hit. A common version of this is a sweeping kick, which is unsafe on block, but knocks down on hit. Moves that start big combos, or deal a lot of damage all by themselves are frequently unsafe on block to balance them.

Moves can be unsafe on hit, but this is typically avoided.

The opposite of something unsafe is a combo. Specifically, this type of combo is called a “link”. A link combo is possible when a move causes so much frame advantage that the attacker can fit in another attack before the defender can block. Specifically, the hitstun must be longer than the recovery plus the startup of another move.

If this is done on block, it’s called a true blockstring. It’s “true” because there’s no gap for the opponent to do anything. If there’s a gap, then it’s a frametrap.

There’s another type of combo, called a cancel. Many games let you cancel attacks on-hit to more attacks, by interrupting the attack animation with the next attack. This makes it much easier for them to combo. Even a simple 1-2-3 combo frequently makes use of this. A move that cancels on hit will combo if the move you’re canceling into has less startup than the hitstun of the prior move. For this type of cancel, the hitstun is your frame advantage.

The advantage of doing things this way is that you can make moves combo the way you want, then decide afterwards how much frame advantage you want each move to have by adjusting the recovery times of each attack.

The thing to be careful of when designing this is letting moves further down the combo chain link back into moves earlier in the combo chain. If you allow that, it’s an infinite. Here’s one example of that in Metal Gear Solid:

In this clip, Snake has a 1-2-3 combo. The 3rd hit is a kick that pushes the enemy away and knocks them down. But they gave each attack so much frame advantage that you can simply let the 2nd hit recover, and do the first again; a link combo. Since hits 1 and 2 have no pushback and hit 2 links into hit 1, they make an infinite. This could have been prevented by either making the recovery of hit 2 longer, or making the hitstun shorter, or adding pushback to both hits.

Even if it’s possible to link from later moves into earlier ones, you can prevent infinites by giving each move pushback. By pushing the opponent each time they get hit, and giving the later moves in the combo more range, you might have enough frame advantage to link into an earlier move, but that move won’t have enough range to connect. Many fighting games let you cancel jabs into themselves forever, but this isn’t an infinite because it eventually pushes the opponent too far to keep comboing.

Of course, if you can stop pushback…

If you want to avoid that situation without using pushback, then simply be careful to give each move in the chain more hitstun than the startup of the next attack (so it’s a valid chain combo), but less frame advantage than the startup of the first attack (so it’s an invalid link combo).

Pushback is good for the attacker when they’re at frame disadvantage, because they’re moving the defender to a position where they can’t retaliate. Pushback is bad for the attacker when they’re at frame advantage, because then they can’t take advantage of their head-start. Frame advantage without pushback lets an attacker keep up pressure on a defender. Frame disadvantage without pushback surrenders an attacker’s turn to the defender.

If a move has fast startup and a lot of range, then it can punish moves you didn’t intend to be punishable. For example, Q’s hard kick in Street Fighter III: 3rd Strike has a lot of pushback, but Chun Li’s Super Art 2 comes out in 2 frames and has her move forward really far, allowing her to punish Q’s hard kick on hit. Q can successfully land this move and Chun Li can punish him for hitting her.

To prevent the above situation, most of the time moves are given frame data with their range in mind. You have fast, short range, plus frame moves. Then you scale outwards to slower, longer range, minus frame moves. Exceptions are allowed to exist in order to make the game interesting, but there’s always a drawback or tradeoff to prevent these moves from being too powerful. Chun Li’s super is one such exception, and it costs super meter, so you can’t use it all the time. Despite that, it’s still far too powerful for that game. Since Chun Li’s super is that good, all of her moves are designed to avoid getting frame advantage on hit, so they can’t link combo into that super.

If a move has a lot of active frames, then that means it can hit sooner or later, which means the hitstun animation can be triggered sooner or later. This means the amount of frame advantage can vary. If the attack has the character move during its active frames, then it can be easier to hit with the tail end.

Many games break these principles, and then need to implement special exceptions to fix their problems, like just making you invincible if you get hit more than twice in a combo, or letting you cancel the hitstun into a roll if you’re getting combo’d (Dark Souls 3 and Elden Ring).

If you want to make a game that is entirely about landing neutral hits, without any combos, then just give every move so much pushback that no moves are in range to follow up, and don’t give anything enough frame advantage to combo.

2 thoughts on “Frame Data Patterns that Game Designers Should Know

  1. DuzentMatter February 21, 2023 / 11:02 pm

    This comment isn’t relevant to the article but I didn’t know where to contact you. I was an asshole you banned from the discord server. I had a meltdown and was a bigot. I’ve changed and am deconstructing my own internalized queerphobia. I only want to say I’m sorry, Celia. I’m sorry for being hateful and ignorant little shit to you.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s