Guide
Game whiff punish and recovery frame systems explained
Harbor Brawl's neutral pass looked healthy on paper: every character had a full-screen sweep, a fast jab, and a plus-on-block special. Damage numbers were balanced. Yet high-level matches devolved into sweep spam at max range because nobody punished whiffs — recovery on the sweeps was long in absolute frames but invisible at the spacing players actually used. The fix was not nerfing damage; it was redesigning whiff punish windows so recovery frames, hurtbox extension, and movement speed formed a readable risk contract in neutral footsies.
A whiff punish is a counterattack that connects because the opponent's move missed and left them in recovery — the post-active frames where they cannot act. Recovery design is the hidden spine of fighting-game neutral: it decides whether a missed poke is a minor inconvenience or a full combo start. This guide covers startup/active/recovery taxonomy, punish tiers and spacing bands, counter-hit vs whiff windows, sweep and special recovery risk, implementation in your combat state machine, the Harbor Brawl neutral refactor, a technique decision table, pitfalls, and a production checklist. Pair it with frame data fundamentals and hitstun and blockstun for the full timing picture.
Recovery frames: the third phase every move shares
Every attack divides into three phases, usually measured in frames at 60 fps (or your simulation tick rate):
- Startup — frames before the hitbox becomes active; the opponent can interrupt or trade during this window if their move is faster.
- Active — frames the hitbox can connect; on whiff, active frames still run unless you implement early recovery cancel (rare in traditional fighters).
- Recovery — frames after active ends where the character is locked in animation, hurtbox often extended forward, and no new actions except cancels you explicitly allow.
Whiff punishability is almost entirely a recovery problem. Startup and active determine whether a move hits; recovery determines whether missing costs you a combo. Designers who only tune damage and advantage on block leave neutral opaque: players cannot feel why a spaced sweep is risky until they eat a heavy punish they did not know existed.
Total frame cost vs punish window
Players sometimes cite “35-frame sweep” without separating phases. A move with 12f startup, 4f active, and 19f recovery is not punishable for 35f — punish begins when active ends (after frame 16 from button press). Your movelist and training UI should show recovery on whiff separately from total duration, because blockstun and hitstun can truncate recovery on connect.
Punish tiers and the fastest answer rule
Competitive players classify punishes by the fastest normal that reaches the opponent during recovery:
- Light punish (LP/LK) — jab or short kick; requires long recovery or close spacing.
- Medium punish (MP/MK) — mid-range confirm; the workhorse tier for footsies.
- Heavy punish (HP/HK) — slow but high reward; only connects if recovery exceeds heavy startup plus travel.
- Special punish — invincible reversal, dash attack, or full-screen punish tool; often riskier but defines character identity.
The fastest answer rule: at a given spacing band, document which punish tier is available. If your sweep whiffs at max poke range, medium punch should reach during recovery or the sweep is effectively safe — which breaks zoning identity. Conversely, if every whiff is jab-punishable at all ranges, pokes become unusable and neutral stalls.
Movement during recovery
Some games allow micro-walk or crouch during late recovery. That shrinks the punish window without changing animation length — a subtle buff that playtesters miss unless you log effective recovery at each spacing. Harbor Brawl locks horizontal movement until recovery frame 70% for sweeps, then allows backwalk at 60% speed; punish tier shifts from heavy to medium at that threshold.
Spacing bands and hurtbox extension
Whiff punish is a geometry problem as much as a frame problem. During recovery, the attacker's hurtbox often lingers in front of their body — especially on sweeps, overheads, and lunging normals. Three spacing bands matter:
- Tip range — only the active tip would have connected; whiff leaves maximum forward hurtbox extension; ideal for whiff bait and shimmy.
- Mid range — common footsies distance; punish tier usually medium.
- Far range — move whiffs cleanly with hurtbox retracting; may be intentionally safe unless opponent has a dash or projectile punish.
Designers should draw hurtbox capsules per recovery frame in debug view. A sweep that whiffs at tip range but leaves the foot hurtbox three body-widths forward teaches wrong lessons: defenders walk forward into an apparent punish range and get clipped by extended limb hurtboxes they cannot see.
Shimmy and walk-back bait
Offense uses spacing to cause whiffs: walk back so the opponent's poke falls short, then punish recovery. This interacts directly with blockstring reset shimmies — the same walk-back timing that baits a mash can bait a whiffed poke in neutral. Document walk speeds and backdash distances alongside recovery tables so bait ranges are reproducible, not accidental.
Counter-hit windows vs whiff punish
These systems overlap but serve different goals:
- Counter-hit (CH) — bonus when your active frames hit the opponent during their startup; rewards interception, not missing.
- Whiff punish — bonus or confirm when you hit during their recovery after a complete miss.
- Punish counter (PC) — some games grant extra stun when hitting recovery specifically; distinct from CH for clarity.
Mixing the labels confuses players. If both CH and whiff punish extend combo routes, publish separate icons in the hitspark system. Rollback fighters must serialize CH detection on the same frame as hit resolution; a one-frame desync turns a whiff punish into a trade. See trade and clash priority for simultaneous-hit rules.
High-risk moves: sweeps, divekicks and whiffable specials
Moves with long recovery justify higher reward on hit — but only if whiff is actually punishable at the range players use them.
Sweeps and low attacks
Low sweeps beat standing block and check movement. Standard contract: unsafe on block at close range, risky on whiff at mid range, intentionally safe only when spaced to far tip whiff. If your sweep is plus on block, it should not also be safe on whiff at mid range unless the character pays elsewhere (slow walk speed, no anti-air, etc.).
Jump-ins and empty jumps
Landing recovery after a whiffed jump attack is a whiff punish window measured in landing lag, not ground recovery frames. Empty jumps (jump with no attack) bait anti-air whiffs; the punish is anti-anti-air or low on landing. Tune landing lag separately from attack recovery for clarity.
Special move recovery
Specials with invincibility or armor on startup often have brutal recovery on
whiff. Tag specials in data as WHIFF_GAMBLE vs
SAFE_POKE so balance passes do not flatten recovery across the
movelist. Charge moves and
hold-to-release attacks
need explicit recovery on release-without-hit cases.
Implementation: state machine and training tools
In code, recovery begins when the last active hitbox frame expires without a connect flag (or on block/hit, if you use different recovery branches). Minimum implementation checklist:
- Store
recoveryRemainingper move instance; decrement each tick. - Expose
isPunishablewhenrecoveryRemaining > 0and not in blockstun/hitstun. - Log whiff events with position, facing, and spacing to opponent for balance dashboards.
- Training mode: overlay recovery countdown and punish tier rings at current spacing.
- Replay export: mark whiff punish hits for tournament review and netcode QA.
Input buffer during recovery should be zero unless you allow cancel routes on whiff only — a common design for making specials feel responsive without buffing block pressure.
Harbor Brawl neutral refactor
Harbor Brawl's whiff-punish pass addressed invisible recovery, uniform sweep spacing, and missing training feedback.
- Recovery split in data — movelist exports
whiffRecoveryseparate fromhitRecoveryandblockRecovery; UI shows whiff recovery in training overlay. - Punish tier rings — at tip/mid/far bands, computed which normal reaches during recovery; swept 14 moves that were heavy-punishable only on paper.
- Hurtbox retraction — sweep recovery frames 1–8 keep extended foot capsule; frame 9+ retract to body core so walk-forward punishes match player expectation.
- Shimmy bait suite — documented walk-back distances that cause whiff per character; adjusted backwalk speed on two zoners that over-baited.
- Whiff gamble tag — specials marked in movelist; balance reviews only touch tagged moves when neutral stalemates appear.
- Replay flag —
PUNISH_COUNTERhitspark when connect occurs during recovery window for spectator clarity.
Sweep attempt rate at Diamond fell 28% while match length stayed flat — players still used sweeps, but at tip range where whiff punish was real. Bronze survey scores for “I understand why I got punished” rose 34%.
Technique decision table
| Your situation | Prefer | Avoid |
|---|---|---|
| Zoner with full-screen sweep | Heavy punish at mid whiff; safe only at far tip | Same recovery at all whiff spacings |
| Rushdown with fast jab | Short recovery on whiffed jab; light punish only up close | 20f recovery on 4f startup jab |
| Teaching new players neutral | Training overlay with punish tier rings | Hidden extended hurtboxes during recovery |
| High-risk special | Tagged WHIFF_GAMBLE with long recovery on miss | Invincible special safe on whiff at mid range |
| Rollback online fighter | Deterministic recovery start on whiff frame | Client-side recovery truncation |
| Stale neutral meta | Buff punishability at common spacing, not damage | Global damage nerfs that kill identity |
Common pitfalls
- Publishing total frames only. Players cannot derive punish windows without recovery split.
- Identical recovery on hit and whiff. Hitstun already punishes whiffing implicitly on hit; whiff needs its own branch.
- Extended hurtbox through all recovery. Walk-forward punishes feel random; retract limbs mid-recovery.
- Safe sweeps at mid range. Neutral becomes sweep footsies with no defense layer.
- Ignoring backwalk and backdash. Effective recovery shrinks when defenders can create distance during late frames.
- CH and whiff punish same VFX. Players cannot learn which situation they failed.
- Input buffer during recovery. Accidental specials out of punishable state hide design intent.
Production checklist
- Export startup, active, and whiff recovery separately in combat data.
- Compute punish tier (light/medium/heavy) at tip, mid, and far spacing.
- Draw per-frame hurtbox during recovery in debug mode.
- Retract limb hurtboxes when animation visually pulls back.
- Tag WHIFF_GAMBLE specials vs safe pokes in movelist metadata.
- Document walk-back bait distances that cause intentional whiffs.
- Ship training overlay: recovery countdown and punish tier rings.
- Distinguish counter-hit, whiff punish, and punish counter in hitsparks.
- Log whiff events with spacing for balance dashboards.
- Test rollback determinism on recovery start frame.
- Playtest low and high skill cohorts for sweep rate and punish clarity.
- Update movelist when hit/block recovery differs from whiff recovery.
Key takeaways
- Whiff punishability lives in recovery frames and hurtbox extension — not in damage numbers alone.
- Punish tiers at spacing bands make neutral readable: document which normal punishes which whiff at tip, mid, and far range.
- Counter-hit and whiff punish are different teachable moments — separate feedback and combo routes where appropriate.
- High-risk moves earn their reward only when whiff is punishable at the range players actually use them.
- Harbor Brawl cut sweep spam 28% by splitting whiff recovery data, retracting hurtboxes, and surfacing punish tiers in training mode.
Related reading
- Game frame data explained — startup, active, recovery and movelist literacy
- Game zoning and space control systems explained — neutral distance bands and footsies
- Game blockstring and pressure systems explained — shimmy resets and tick throws
- Game hitstun and blockstun systems explained — advantage after connect