Guide
Game invincibility frame systems explained
Harbor Brawl's oki layer looked correct on paper: every character had a published reversal with startup invincibility, and meaty timing tables matched frame data sheets. Yet ranked telemetry showed 34% of safe-jump attempts still getting clipped by low-profile jabs on wake-up — players called it “random invuln.” The combat audit revealed three separate bugs: one grappler's reversal disabled the upper hurtbox only while the low box stayed live; a backdash granted projectile invuln but not throw immunity; and post-knockdown frames 1–2 had no wake invuln despite UI tooltips implying full protection. After normalizing i-frame tables and publishing per-move immunity flags, meaty whiff rate on intentional safe jumps fell from 34% to 20%, and reversal trade complaints dropped 28% in the first patch week.
Invincibility frames (i-frames) are scheduled windows where a character's hurtbox is disabled, shrunk, or immune to specific hit types. They are not a single boolean — partial invuln, throw-only immunity, and projectile-only phases coexist in the same move. This guide explains i-frame taxonomy, where designers attach them (reversals, backdashes, rolls, jump startup), how they interact with grabs and armor, rollback implications, the Harbor Brawl refactor, a technique decision table versus armor-only defense, pitfalls, and a production checklist — alongside our guides on reversal attacks, dash and run cancels, and anti-air systems.
What invincibility frames actually do
Players often say a move is “invincible” when they mean any of three different engine behaviors. Conflating them produces unfair reads and broken oki.
| Mechanism | Engine behavior | Player-visible effect |
|---|---|---|
| Hurtbox disable | Collision volume removed or flagged non-hittable | Normals and projectiles whiff through |
| Damage immunity | Hit registers but deals zero damage and no hitstun | Hit sparks may still play; combo counter may increment |
| Type-filtered immunity | Only certain attack flags blocked (throw, projectile, mid, low) | Move beats fireballs but loses to throws or lows |
Production teams should document which mechanism each move uses. A reversal that only disables the standing hurtbox while a crouching low-profile box remains active is not “fully invincible” — and safe-jump math must account for the surviving volume.
Taxonomy of i-frame types
Mature fighters mix several immunity tiers on one character kit. Standardize names in your frame sheets so balance and netcode teams speak the same language.
Full body invuln
All hurtboxes off for N frames, typically frames 1–K of a reversal or backdash. Beats strikes and most projectiles; usually still loses to throws unless throw immunity is also set. Classic example: EX dragon punch frames 1–8.
Upper-body / lower-body partial
Only a subset of hurtboxes disable — common on backdashes (upper body invuln, legs hittable) and on some roll escapes. Low-profile meaties exist specifically to catch partial invuln. Publish which capsule shrinks so meaty designers can author counterplay.
Projectile invuln only
Character can be hit by normals but not by projectile hitboxes. Used on forward dashes, some run cancels, and armor-adjacent movement. Zoners still threaten with body checks at dash end.
Throw invuln
Separate flag from strike invuln. Jump startup, backdash, and post-tech windows often grant throw immunity without strike invuln — or the reverse on command grabs. Shimmy pressure in our throw systems guide depends on knowing which escape option clears which grab type.
Post-hit / post-block invuln
Brief immunity after knockdown, wall splat recovery, or burst escape to prevent re-hit loops. Distinct from move startup invuln; usually shorter (2–6 frames) and may not extend through active frames of a reversal input.
Where designers attach i-frames
I-frames are not free defense — each attachment point trades risk for a specific neutral or oki outcome.
- Reversal startup. Wake-up DPs and EX reversals carry full or upper-body invuln early to beat meaties and jump-ins. Frame 1 gaps are intentional in many games so empty hops still land. See reversal attack systems.
- Backdash and back walk. Backdash often grants frames 1–3 strike invuln plus throw immunity; recovery is punishable. Tuning backdash i-frames versus length is central to dash cancel design.
- Roll and tech escape. Ground tech rolls use i-frames through active roll frames; mash timing affects which side you end on. Air tech in our air tech guide layers directional invuln differently.
- Jump startup. Frames before the character leaves the ground may be throw-invuln or fully invuln depending on game; affects tick-throw and shimmy reads.
- Special move phases. Teleports, parry follow-ups, and install supers schedule invuln on specific animation segments — not necessarily from button press.
Every attachment needs a published start frame, end frame, and immunity bitmask in your combat data schema. Hidden i-frames are a top source of “this game is random” reviews.
Intentional gaps and counter-i-frame tools
Zero i-frames on frame 1 of reversals is a deliberate design pattern: it allows true safe jumps, delayed meaties, and low-high mixups to beat wake-up mashing. Counter-tools exist on the offense side:
- Low-profile normals that duck under upper-body invuln.
- Multi-hit projectiles that catch backdash invuln tail into recovery.
- Command grabs that ignore strike invuln if throw immunity is absent.
- Shimmy and walk-throw to punish throw-invuln backdash without committing to a strike.
- Crossup jump timing that lands after reversal active invuln ends but before recovery completes.
If you add i-frames without authoring these counters, defense dominates and round length inflates. Pair every invuln buff with at least one lab-tested counter line.
Interaction with armor, parry, and clash
I-frames are orthogonal to other defensive layers:
- Super armor keeps hurtboxes live; the character can be hit but does not enter hitstun until armor breaks. Invuln whiffs entirely — different read for the attacker. See super armor systems.
- Parry requires a hittable hurtbox on a specific frame window; full invuln prevents parry activation. Do not stack parry and i-frames on the same frames without clear priority rules.
- Clash and trade rules: if both moves have i-frames, neither registers; if one has invuln and the other does not, the invuln side wins regardless of priority unless crush or throw rules override.
Document priority when invuln meets unblockable or command grab flags — ambiguity here breaks tournament replays.
Rollback and netcode implications
I-frames are frame-exact. Under rollback, a one-frame disagreement on wake-up input timing can flip whether invuln was active when a meaty connected. Mitigations:
- Serialize invuln state in the same simulation step as hurtbox collision, not as a client-only VFX flag.
- On rollback, recompute invuln from authoritative move timers, not cached booleans.
- Avoid sub-frame invuln shorter than one simulation tick at 60 Hz unless you document that online play may differ from offline by one frame.
- Log invuln bitmask on disputed hits in replay files for support triage.
Harbor Brawl moved invuln scheduling from animation events to combat-state machine ticks aligned with hitstun timers, cutting rollback-related reversal disputes 19% in week-one telemetry.
Technique decision table
| Approach | Best when | Weak when |
|---|---|---|
| Full startup invuln (reversal) | Clear oki counter, readable defensive option | You want frame-1 meaties and low-profile counterplay |
| Partial upper-body invuln | Backdash flavor without full escape | Players expect full invuln; lows feel “broken” |
| Projectile-only invuln | Closing distance vs zoners without beating normals | Rushdown mirror matches need body checks at dash end |
| Armor instead of invuln | Visible trade, absorb one hit, maintain presence | Multi-hit strings break armor; feels sluggish |
| Parry instead of invuln | Skill-based defense with counter reward | High latency players cannot react; needs buffer |
| Post-knockdown throw invuln only | Prevent tick-throw loops on wake | Meaty strikes still needed; must publish strike vulnerability |
Harbor Brawl refactor
After the oki audit, Harbor standardized invuln across the roster:
- Combat schema field
invuln_maskper move frame: strike, projectile, throw, low, mid, high bits. - Published i-frame tables in the in-game movelist matching internal frame sheets.
- Reversal frame-1 gap enforced uniformly (no hidden frame-0 invuln on select characters).
- Backdash: frames 1–3 strike + throw invuln; frames 4+ fully hittable.
- Automated regression test: safe-jump matrix per matchup must achieve >92% meaty whiff on documented safe jumps.
- Replay overlay shows invuln bitmask on hit resolution for tournament support.
Safe-jump meaty whiff rate improved from 66% to 80% on the regression matrix. Low-profile counterplay usage rose 12% as players learned published gaps — a sign the system became readable rather than weaker.
Common pitfalls
- Calling partial invuln “full” in patch notes. Players lab the gaps and lose trust.
- Animation-driven invuln without combat ticks. Desync under rollback and variable framerate.
- Throw and strike invuln conflated. Backdash beats throws but loses to jabs — or the opposite — without telegraphing.
- I-frames on armor moves. Double-stacking makes offense impossible; pick one defensive model per move.
- No frame-1 gap on reversals. Removes safe-jump and delayed meaty metagame entirely.
- Invisible low hurtboxes during “invuln.” Upper-only invuln must shrink or disable the low capsule explicitly.
- Skipping matchup regression. One character's backdash length breaks another's safe-jump table silently.
- VFX-only invuln. Flash without hurtbox change feels fraudulent in replays.
Production checklist
- Define invuln bitmask schema (strike, projectile, throw, height bands) per frame.
- Attach i-frames in combat state machine ticks, not animation-only events.
- Publish start/end frames and mask type in movelist and internal frame sheets.
- Author low-profile and delayed meaty counters for every full invuln reversal.
- Enforce consistent frame-1 gaps where safe jumps are intended.
- Separate throw immunity from strike immunity on backdash and jump startup.
- Run safe-jump regression matrix per matchup after balance patches.
- Log invuln mask on hit resolution in replay files.
- Recompute invuln from timers on rollback; avoid client-only flags.
- Document interaction priority with armor, parry, grab, and unblockable.
- QA partial invuln with low normals and multi-hit projectiles.
- Review tournament replays for disputed invuln before shipping hotfixes.
Key takeaways
- Invincibility frames disable or filter hurtboxes — they are not one universal flag.
- Partial invuln, throw-only immunity, and projectile-only phases need separate documentation.
- Intentional frame-1 gaps enable safe jumps, low-profile meaties, and readable oki.
- Schedule i-frames on combat ticks for rollback-safe, reproducible hits.
- Harbor Brawl cut safe-jump meaty whiff failures 41% by auditing and publishing i-frame tables.
Related reading
- Reversal attack systems explained — wake-up DPs, EX reversals, safe jumps
- Dash and run cancel systems explained — backdash invuln, movement recovery
- Okizeme, meaty and frame trap systems explained — wake-up pressure timing
- Game frame data explained — startup, active, recovery, advantage