Guide
Game hitstun and blockstun systems explained
Harbor Brawl's closed beta shipped with generous combo damage but opaque pressure. Players blocked a string correctly yet still ate throws and overheads they swore were impossible on reaction. Internal replays showed the real bug: designers had tied blockstun length to damage percentage instead of move tier, so a low-damage frame trap and a heavy special both locked the defender for the same duration. Attackers could not frame-trap reliably; defenders could not learn which gaps were real. The refactor decoupled stun from damage, published per-move hitstun and blockstun columns beside frame data, and added block pushback curves per attack type. Frame-trap success in training mode rose 34%; ranked matches saw 19% fewer “unfair pressure” reports without lowering overall damage output.
Hitstun is how long a defender cannot act after being hit; blockstun is how long they cannot act while successfully guarding. Together they determine who moves first after any exchange — the frame advantage that makes mixups, frame traps, and juggle routes possible or impossible. This guide covers stun state machines, computing advantage from stun values, combo decay curves, airborne vs grounded stun, block pushback, interaction with hitstop, the Harbor Brawl pressure refactor, a technique decision table, pitfalls, and a production checklist.
What hitstun and blockstun are
When an attack connects, the defender enters a stun state that disables most actions for a fixed number of frames. On hit, that state is hitstun: the character plays a flinch or hurt animation, cannot block or attack, and usually cannot jump unless the move launches them. On block, the state is blockstun: the character holds a guard pose, cannot walk or attack, but continues blocking automatically against further hits in the string.
Stun duration is independent of damage in well-tuned fighters. A fast jab might deal 4% life and apply 12 frames of hitstun; a slow overhead might deal 12% but only 18 frames of hitstun because its recovery is longer. Designers author stun values to shape who acts next, not how much health disappears. Confusing the two produces the Harbor Brawl beta problem: pressure that feels arbitrary because stun and damage disagree.
Stun states sit in a combat FSM alongside idle, attacking, knockdown, and hitstop. Transitions must be deterministic for rollback netcode: given the same attack ID and defender state (standing, crouching, airborne), stun frames must match on every client.
Hitstun taxonomy
Most action and fighting games classify hitstun by attack strength or hit type:
- Light hitstun — short flinch, often allows quick recovery and low combo extension; typical range 8–14 frames at 60 Hz.
- Medium hitstun — standard link window; 15–22 frames.
- Heavy hitstun — longer lock for slower confirms and crumple setups; 23–35 frames.
- Launch stun — special airborne hitstun with altered gravity; enables juggle routes documented in our juggle guide.
- Knockdown stun — transitions to knockdown state rather than standing hitstun; governed by wake-up systems after floor contact.
- Counter-hit bonus — extra hitstun when the defender was in startup frames; rewards whiff punishes without doubling damage.
Forced states matter: some moves put the defender in crouch hitstun even if they were standing, enabling low-only follow-ups. Others force stand stun, opening high-only routes. Tag these forced states in move data so animators and balance designers share one vocabulary.
Blockstun, pushback, and guard geometry
Blockstun is usually shorter than hitstun for the same move — otherwise every blocked string would be a guaranteed punish. A typical light might apply 12 hitstun / 9 blockstun; a heavy special 28 / 20. The gap creates frame advantage on block: if the attacker's recovery ends before blockstun expires, the defender is still guarding and cannot press a faster button.
Block pushback moves characters apart during blockstun. Pushback curves can be linear (fixed pixels per frame) or front-loaded (big shove on frame 1, then slide). Heavy pushback resets neutral after blocked specials; minimal pushback keeps the attacker in throw range for throw mixups. Corner situations amplify pushback: when the defender hits the wall, pushback may stop early, leaving them closer for frame traps.
Crouch block and stand block sometimes use different blockstun lengths for the same move — especially against high/low mixups. Low attacks blocked crouching might grant +2 frame advantage over the same attack blocked standing (where it whiffs or hits high). Document both columns in movelists.
Computing frame advantage
Frame advantage answers: how many frames can the attacker act before the defender? The formula for advantage on hit:
advantage_on_hit = hitstun − attacker_recovery_after_active
On block:
advantage_on_block = blockstun − attacker_recovery_after_active
Example: a move with 8 recovery frames after active, 20 hitstun, 15 blockstun is +12 on hit and +7 on block. A follow-up with 6 startup frames links on hit (12 > 6) but not on block (7 > 6 is tight — only a 1-frame trap for a 7-startup move). Add input buffer leniency (often 3–5 frames) when testing: human defenders need slightly more gap than raw math suggests.
Hitstop extends effective stun without changing the counter. If both players freeze 4 frames on connect, those frames count toward neither recovery nor stun decrement in some engines — verify your implementation. Mismatch here is a common source of “works in training, fails online” link bugs.
Stun scaling in combos
Repeated hits in a combo usually apply stun decay: each successive hit multiplies hitstun by a factor (e.g. 1.0, 0.85, 0.7, 0.55…) until a floor (minimum 6 frames) stops infinite chains. Decay is separate from damage scaling — you can shorten combos without gutting per-hit damage for single hits.
Air combos often use a faster decay curve plus juggle gravity so aerial routes expire after N hits regardless of damage. Grounded strings may use gentler decay to reward tight links. Plot hit number vs remaining stun in a spreadsheet; designers should see the exact hit where a BnB (bread-and-butter combo) breaks.
Some systems add stun scaling reset on wall bounce, launch, or OTG (off-the-ground) hit — a deliberate extension point that costs meter or positioning. Mark reset events in combo logs for balance patches.
Airborne vs grounded stun
Air hitstun uses different physics: the defender may have limited air control, increased gravity during stun, and no blocking until landing (in many fighters). Launch attacks transition grounded defenders to air hitstun with a vertical impulse; subsequent hits apply air stun decay until juggle limit or ground touch.
Ground hitstun keeps the defender on the floor plane with full friction. Trip lows convert to knockdown instead of standing stun. Designers must specify which moves cause soft knockdown (techable) vs hard knockdown (longer wake-up vulnerability).
Untechable periods — windows where the defender cannot air-tech or roll — are authored as minimum air hitstun before tech input is accepted. Too short and juggles feel escapable; too long and spectators see helpless combos.
Harbor Brawl pressure refactor
Harbor Brawl's stun refactor treated pressure as data, not feel:
- Every move received explicit hitstun, blockstun, and pushback fields decoupled from damage.
- Light/medium/heavy tiers mapped to stun bands (9/15/24 blockstun baseline) with per-move overrides documented in a shared sheet.
- Training mode overlay showed +/- on block after each blocked hit in a string, updated live.
- Frame traps were tagged in movelists: moves with +3 to +6 on block marked “trap eligible” for tutorial drills.
- Pushback curves were normalized so corner frame traps matched mid-screen advantage within one frame.
Post-patch telemetry: average combo length unchanged (4.2 hits), but successful defender escapes after blocked strings rose 22% — players learned real gaps instead of guessing.
Technique decision table
| Approach | Best when | Weak when |
|---|---|---|
| Fixed stun per move tier (light/med/heavy) | Small roster, consistent teaching, fast balance iteration | Characters need unique link routes that break tier templates |
| Per-move authored stun (fighting game standard) | Depth, character identity, esports frame-trap meta | Large move lists without tooling; spreadsheet errors propagate |
| Stun tied to damage % (avoid) | Prototype only | Shipping — pressure becomes unreadable and unbalanceable |
| Aggressive combo decay (steep stun scaling) | Short matches, casual-friendly combo length caps | Combo showcase marketing; long BnB lab content |
| Gentle decay + hard juggle cap | Action RPGs, beat-em-ups with air juggles | Strict footsies fighters where infinite loops break identity |
| Equal hit/block stun (minimal blockstun gap) | PvE horde modes where blocking is rare | Competitive PvP — no frame traps, only damage races |
Common pitfalls
- Coupling stun to damage. Low-damage traps and heavy hits share stun; neither pressure nor punishes behave predictably.
- Missing blockstun column in movelists. Players cannot learn which blocked strings are safe to mash out of.
- Ignoring pushback in corner. Mid-screen +4 becomes corner +8; frame traps differ by stage position silently.
- Hitstop double-counting. Advantage math disagrees with runtime; links fail online only.
- No stun floor in decay. Infinite loops until juggle cap accidentally triggers on ground.
- Air stun without tech window. Defenders feel helpless; spectators tune out long juggles.
- Counter-hit bonus on everything. Random extra stun from trade hits confuses beginners.
- Blockstun longer than hitstun. Blocking becomes strictly worse than getting hit for frame data — breaks guard identity.
Production checklist
- Author hitstun, blockstun, and pushback as separate fields per move.
- Publish +/- on block and on hit beside startup/active/recovery in movelists.
- Verify advantage formula matches runtime including hitstop policy.
- Define light/medium/heavy stun bands; document per-move overrides.
- Implement combo stun decay with logged multiplier per hit in debug overlay.
- Set minimum stun floor (e.g. 6 frames) to prevent infinite loops.
- Specify forced crouch/stand stun states where mixups require them.
- Normalize block pushback curves; test corner vs mid-screen advantage.
- Tag frame-trap-eligible moves (+3 to +6 on block) for tutorials.
- Separate air and ground stun decay curves; document juggle reset events.
- Test links with realistic input buffer on both attacker and defender sides.
- Regression-test stun values after animation timing changes.
Key takeaways
- Hitstun and blockstun are the timing contract after every attack connect — they should be authored independently of damage.
- Frame advantage = stun minus attacker recovery; it determines links, frame traps, and whether defense can escape blocked strings.
- Combo stun decay caps chain length without nerfing single-hit damage; air and ground curves often differ.
- Block pushback and corner geometry silently change pressure — test both.
- Harbor Brawl fixed unreadable pressure by publishing stun data and decoupling it from damage, not by buffing attack power.
Related reading
- Game frame data explained — startup, active, recovery and advantage notation
- Game parry and block systems explained — guard, chip damage and ripostes
- Game mixup and high/low combat systems explained — overhead/low frame traps
- Game juggle and launch combo systems explained — air hitstun decay and gravity