Guide

Game landing lag and recovery systems explained

Harbor Brawl's movement audit flagged a silent balance leak: jump-ins looked fair on paper — startup and active frames matched rival titles — but ranked replays showed attackers losing neutral 44% of the time within six frames of touching ground. The culprit was not air hurtboxes; it was landing recovery buried in animation tail data that never appeared in the public movelist. Designers separated touchdown frames from aerial attack recovery, published per-move landing lag tiers, and added landing autocorrect for crossup ambiguity. Empty-hop punish whiffs dropped 31%, safe-jump meaty success rose 26%, and support tickets tagged “my jump got punished for no reason” fell 19% in the first balance week.

Landing lag is the grounded recovery window after feet touch the floor — distinct from aerial attack endlag and from blockstun on landing. It governs whether a jump-in is plus, minus, or punishable; whether empty hops can mix on touchdown; and whether dash and run cancels can erase commitment. This guide covers touchdown taxonomy, hard vs soft landing, attack landing tiers, autocorrect and facing rules, landing-cancel windows, interaction with empty hops and input buffering, rollback scheduling, the Harbor Brawl refactor, a technique decision table versus frame-data-only documentation, pitfalls, and a production checklist.

Touchdown frame taxonomy

Players conflate “landing lag” with entire jump animations. Engineers need a precise state machine so animation, combat, and netcode agree on when the character is vulnerable on the ground.

Phase Definition Typical vulnerability
Airborne Feet off ground; aerial attacks and double-jump rules apply Air hurtbox active; anti-air eligible
Touchdown (frame 0) First simulation tick where ground collision resolves Often still in air state until recovery table loads
Landing lag Grounded recovery before idle or action cancel Standing/crouching hurtbox; throws and lows may connect
Landing cancel window Subset of landing lag where special moves or dashes can interrupt Reduced punish window if cancel is allowed
Idle / action Recovery complete; full move set available Normal grounded counterplay

Publish landing lag as its own column in frame sheets — not folded into “total jump duration.” Movelist UI should show empty-hop landing separately from jump-normal landing, or players cannot reason about whiff punish windows.

Hard landing vs soft landing

Many games apply different recovery when the character lands from height, from a blocked air attack, or with momentum. Standardize names across teams:

Hard landing

Triggered when vertical velocity exceeds a threshold, when landing from a knockdown launch, or when an air attack whiffs to the ground. Hard landing uses a longer recovery animation (often 20–40f) and may disable certain cancels. It punishes reckless jump-ins and prevents infinite low-height hop chains.

Soft landing

Normal jump arc touchdown or short-hop apex land. Soft landing recovery is what empty hops and safe jumps tune. Typical range: 4–12f for movement hops, 8–18f for jump normals depending on strength.

Blockstun landing

Defender blocks an air attack; attacker lands while defender remains in blockstun. Advantage on landing is computed as: landing_lag_attacker - blockstun_remaining_defender. A jump-in can be safe on block yet minus on whiff — document both outcomes.

Attack landing lag tiers

Not every aerial move should share one landing number. Tier attacks so balance patches target families, not individual animation quirks.

Tier Examples Design intent
Movement empty land Empty hop, empty jump, wiffle jump Short recovery enables mix; still punishable by fast lows
Light air normal Jump jab, hop kick Fast air-to-air; modest landing lag; weak reward on hit
Heavy air normal Jump fierce, dive kick High damage; long landing lag on whiff; defines AA risk
Special air end Divekick special, air fireball land Often hard landing; may OTG or slide on touchdown
Air throw land Tiger knee air throw whiff Long recovery on whiff; throw tech window on land

Harbor Brawl tags each aerial move with land_tier and land_override_frames so designers patch tiers globally then override outliers. Regression tests assert tier bounds: light air normals cannot exceed 14f soft landing without explicit balance ticket.

Landing autocorrect and facing

Crossups and ambiguous jump arcs break if facing flips on the wrong frame. Landing autocorrect adjusts facing and hurtbox offset at touchdown so defenders are not punished for holding the wrong block direction because of one-frame facing bugs.

  • Crossup autocorrect. If attacker lands behind defender within N pixels, snap facing so block direction matches visual. Cap autocorrect range or crossups become unreactable online.
  • Corner clamp. Landing position clamps to stage bounds before recovery starts; prevents landing inside wall with truncated recovery.
  • Slide on land. Some moves apply horizontal drift during landing lag (e.g. dive kicks). Drift must end before cancel window or dash OS becomes unintentionally strong.
  • Reverse jump land. Turnaround jumps may flip sprite at apex vs at land; pick one rule and document it in training mode.

Landing cancel windows

Landing cancels let skilled players shorten commitment without removing punishability entirely. Common patterns:

  • Special cancel on land. Input special during frames 1–K of landing lag; skips remainder. K should be shorter than total landing lag so whiff still has a gap.
  • Dash / run cancel on land. Ties into dash and run cancel systems for approach after empty hop. Run cancel from landing should cost the same run-start delay as ground run to avoid hop-run infinites.
  • Jump cancel on land (short hop). Some anime fighters allow second hop only after soft landing completes; prevents triple-hop escape.
  • Block cancel. Holding block during landing lag enters blockstun-ready state faster; tune so empty-hop block is not plus on frame one.

Buffer landing cancels through global input buffer with a dedicated LANDING buffer class so online play matches offline lab timing.

Safe jumps, meaties and landing advantage

Safe jump math depends entirely on landing lag vs defender wake-up invulnerability:

  1. Measure defender's fastest reversal startup (including pre-flash frames).
  2. Measure attacker's jump arc time to meaty active frame on landing.
  3. Confirm meaty active overlaps wakeup before reversal hits, and that landing recovery ends before defender can punish if meaty whiffs.

Empty-hop safe jumps use touchdown mix instead of air attack meaty — see empty hop movement and okizeme and meaty design. Publish a “minimum safe jump height” per character in training mode when landing lag patches ship.

Design knobs

Knob Effect Risk if mis-tuned
Soft landing frames (empty) Shorter = safer hop mix; longer = more AA counterplay Too short removes grounded answers to jump offense
Hard landing velocity threshold Higher = fewer hard lands; lower = more jump risk Too low makes every jump feel sluggish
Landing cancel length K Wider window = higher skill ceiling on offense Too wide erases whiff punish identity
Autocorrect pixel radius Larger = fewer crossup block bugs online Too large creates unreactable crossups
Land slide distance Extends pressure after dive moves Slide into throw range without recovery is oppressive

Rollback and netcode

Landing is a discrete state transition sensitive to one-frame rollback:

  • Resolve touchdown on simulation tick when ground probe hits, not on landing VFX event.
  • Recompute landing lag from authoritative move ID at touchdown; do not inherit partial recovery from rolled-back air state incorrectly.
  • Log touchdown tick, land_tier, and cancel inputs in replay for dispute triage.
  • Autocorrect facing must run identically on predict and confirm paths in rollback netcode.

Technique decision table

Approach Best when Weak when
Published landing lag per move Competitive transparency; players optimize safe jumps Animation-heavy game with procedural land blends
Tier-based landing only Large roster; balance by family Players cannot diagnose single-move outliers
Uniform jump landing Casual fighters; simple teaching No knob to differentiate light vs heavy jump risk
Hard landing on all jump attacks Ground-heavy duel identity Jump offense feels punishable without skill expression
Generous landing cancels High-tempo anime fighter Whiff punish meta collapses; defenders lack answers
Frame-data-only (no landing column) Never — hides the main jump-in balance lever Always — produces opaque feel and support churn

Harbor Brawl refactor

The landing audit shipped these changes:

  • Movelist column Land on every aerial and movement entry; empty hop 7f, jump light 11f, jump heavy 17f soft / 28f hard on whiff.
  • land_tier enum in combat data with CI bounds per tier.
  • Landing special-cancel window frames 3–6 for eligible characters only; removed accidental plus frames on block-cancel during lag.
  • Crossup autocorrect radius reduced from 18px to 12px after low-block false positives in lab.
  • Training mode overlay: touchdown flash + recovery frame counter on land.
  • Telemetry: land_punish_rate, safe_jump_success, hard_land_rate per character per patch.

Post-patch, jump-in neutral win rate stabilized within 2pp of designer target without nerfing air damage — proof the problem was documentation and recovery tuning, not raw hitbox size.

Pitfalls

  • Burying landing in endlag. Air attack recovery and ground landing lag are different states; merging them breaks safe-jump calculators.
  • VFX-led touchdown. Dust puff plays 2f late; players and netcode disagree on punish timing.
  • Identical empty and attack land. Empty hops must not inherit jump-normal landing lag or mixups become unpunishable.
  • Uncapped autocorrect. Defenders cannot hold block confidently; crossup meta becomes guess-heavy online.
  • Landing cancel without whiff gap. Every jump becomes special-cancel safe; AA whiff punishes disappear.
  • Patch notes omit land changes. Competitive trust erodes when silent landing tweaks shift safe jump tiers.

Production checklist

  • Define touchdown state machine separate from airborne and idle.
  • Publish landing lag column for every aerial and movement hop entry.
  • Tag moves with land_tier and enforce tier bounds in CI.
  • Document hard vs soft landing triggers in design wiki.
  • Implement landing cancel buffer class consistent with global input buffer.
  • Validate safe jump matrix after any landing lag patch.
  • Cap crossup autocorrect radius; test low-block false positives.
  • Align touchdown tick with ground probe, not VFX.
  • Add training mode landing recovery overlay.
  • Instrument land punish rate and safe jump success in telemetry.

Key takeaways

  • Landing lag is grounded recovery after touchdown — distinct from air endlag and blockstun landing advantage.
  • Hard vs soft landing tiers let you punish reckless jump-ins without slowing honest hop mix.
  • Attack landing tiers and published frame data make jump offense readable and balanceable.
  • Landing autocorrect and cancel windows need tight caps or crossups and whiff punishes break online.
  • Harbor Brawl cut empty-hop punish whiffs 31% by surfacing landing lag and fixing touchdown scheduling.

Related reading