Guide
Game directional influence and knockback control explained
Harbor Brawl's early-access juggle loop was brutal: a single up-air at 40% sent victims on a fixed arc toward the right blast zone with no counterplay. Average stock loss from juggle chains was 61% of offstage KOs in telemetry. The team did not weaken launch power. They added directional influence (DI) — players hold a direction during hitlag and hitstun to rotate the outgoing knockback vector — plus per-frame smash directional influence (SDI) to nudge hurtbox position during multi-hit strings. Juggle-to-stock rate fell to 38%; combo length at mid percent rose because defenders could DI into safer spacing instead of only dying faster. DI is the defender's steering wheel: it turns knockback from a scripted outcome into a skill matchup.
This guide covers launch DI (vector rotation at hit application), SDI (per-frame position shift during hitstun), survival versus combo DI, per-move scaling and caps, interaction with weight and juggle limits, netcode determinism, the Harbor Brawl refactor, a technique decision table versus fixed knockback and mash-out escapes, pitfalls, and a production checklist.
Launch DI: rotate the knockback vector
Launch DI (sometimes called knockback DI) applies once when a hit resolves. The defender's stick direction blends into the attack's base knockback vector before velocity is committed. Classic platform-fighter math:
final_kb = base_kb + (di_strength * player_input_vector)
Where di_strength is a designer-tuned scalar (often 0.15–0.25 of
base magnitude) and player_input_vector is normalized {−1, 0, 1}
per axis from the held direction. Horizontal DI away from stage center is
survival DI; DI toward the attacker can extend combos for the
defender if hitstun allows a follow-up trade.
Launch DI reads during hitlag (the brief freeze on impact) in many fighters. Sample the stick on the last hitlag frame or average across hitlag — but pick one rule and never change it silently. Mixed sampling between offline and online builds is a common rollback desync source.
- Tap DI — flick direction for one frame; harder to read, easier to mis-input under lag.
- Hold DI — direction held through hitlag; clearer for new players, more predictable for combo designers.
- DI decay — influence weakens at very low or very high knockback so light hits do not become full reposition tools.
SDI: per-frame hurtbox nudge during hitstun
Smash directional influence (SDI) shifts the victim's position slightly each frame of hitstun, independent of the launch vector. It exists so multi-hit moves (drills, rapid jabs, some projectiles) are not inescapable position locks. Typical implementation:
position += sdi_distance * input_vector // once per hitstun frame, capped
SDI distance is small (often 0.02–0.08 world units per frame) with a per-hit or per-string cap so players cannot teleport out of legitimate combos. Some games allow double-stick SDI (tap opposite directions rapidly) for faster escape at the cost of finger strain — document whether your title supports it or filters to cardinal directions only.
SDI differs from launch DI in purpose: launch DI changes where you fly; SDI changes where the next hitbox connects. A defender SDIing down and away during a jab string may slip the third rep even if launch DI would not have moved them far enough.
Survival DI, combo DI, and mixup DI
Players use DI in three strategic modes. Your tutorials and movelist should name them so casters and newcomers share vocabulary:
Survival DI
Hold toward stage center or away from blast zones on launch. At high percent, survival DI is the difference between dying at the edge and reaching ledge invulnerability. Harbor Brawl highlights survival DI with a subtle trail tint when DI reduces predicted KO distance by more than 15%.
Combo DI (extending or shortening strings)
Attackers want launches that combo; defenders DI to alter spacing — often DI down and away to land sooner, or DI in to slip behind the attacker for a reversal window. Combo DI is why the same up-air connects at 30% but whiffs at 80%: hitstun scaled with percent, DI vector, and gravity interact.
Mixup DI (reads and conditioning)
Repeatedly DI one way conditions the opponent to expect it. A throw or launcher that punishes habitual survival DI (e.g., back-throw when defender always DI in) is a legitimate mixup layer. If DI influence is too strong, mixups collapse into guessing; if too weak, combos feel robotic.
Implementation: scaling, caps, and pipeline order
DI belongs in a fixed combat pipeline slot after damage and before animation state commits:
- Resolve hit: damage, hitstun, base knockback vector, hitlag frames.
- Sample launch DI from defender input during hitlag.
- Blend DI into knockback; apply weight and move-specific KB scaling.
- Commit velocity; enter hitstun state.
- Each hitstun frame: apply SDI nudge if input present; re-check hitbox overlap.
- On hitstun end: evaluate tech, air dodge, or landing.
Per-move knobs designers need in data tables:
| Field | Purpose |
|---|---|
di_launch_factor |
How much launch DI rotates this move's KB (0 = immune) |
sdi_per_frame |
Max position shift per hitstun frame during this move |
sdi_cap_per_hit |
Total SDI distance allowed before next hit in string |
di_lockout |
Frames where DI is ignored (unblockables, command grabs) |
kb_angle |
Base angle; DI blends in polar or Cartesian space — pick one globally |
Polar vs Cartesian blending. Polar rotation (twist angle around base KB) feels natural for survival DI; Cartesian addition is easier to tune for platform fighters with strong horizontal kill zones. Harbor Brawl uses polar blend for launches and Cartesian SDI nudges.
Harbor Brawl refactor: from fixed arcs to teachable escape
Before DI shipped:
- Knockback vectors were fully attacker-determined; juggle paths were deterministic.
- Multi-hit up-airs connected 94% of the time at 35–55% on flat stages.
- New-player surveys cited “can't do anything while getting juggled” as top frustration.
After refactor:
- Launch DI factor 0.18 on aerials; 0 on command grabs and spikes with
di_lockout. - SDI 0.04 units/frame, cap 0.32 per hit; rapid jabs use lower cap (0.20).
- Training mode overlay shows base KB arrow vs DI-adjusted arrow for one frame after hitlag.
- Replay export logs
di_launchand cumulativesdi_offsetfor dispute review.
Juggle-to-stock rate 61% → 38%; average combo length at mid percent rose 4.2 → 5.8 hits because defenders could DI into trade range. Esports observers reported clearer “read the DI” narratives without damage nerfs.
Technique decision table
| Approach | Defender agency | Combo consistency | Best for |
|---|---|---|---|
| Fixed knockback only | Low | Very high | Single-player brawlers, cinematic bosses |
| Launch DI only | Medium | High | Traditional fighters, simple platform fighters |
| Launch DI + SDI | High | Medium (tunable) | Platform fighters, tag games with juggle focus |
| Mash-out / DI gauge | Medium (resource) | Medium-high | Arena fighters with explicit break mechanics |
| Automatic position variance | Low (random) | Low | Rarely recommended; feels unfair in PvP |
Pair DI with tech rolls and air dodges only after SDI caps are tuned; stacking too many escape tools without combo viability collapses offensive characters.
Netcode, rollback, and desync pitfalls
DI multiplies input sensitivity. For rollback netcode:
- DI and SDI must be pure functions of confirmed inputs and combat state — no floating-point order differences across platforms.
- Log DI samples in combat traces; desync hunts often implicate hitlag-frame off-by-one between attacker and defender.
- SDI during projectile multi-hit must use the same hitstun counter as offline; see our rollback netcode guide.
- Avoid analog stick dead-zone differences changing DI vectors; quantize to eight-way or sixteen-way for competitive modes.
Common pitfalls
- DI too strong on killers — survival DI trivializes edge
guard; cap influence above 80% or on moves tagged
spike. - No per-move immunity — command grabs and unblockables
must set
di_lockoutor players escape guaranteed offense. - SDI without caps — infinite drift breaks multi-hit identity; always cap per hit and per string.
- Invisible DI — if players cannot see that DI worked, they blame hitboxes; use one-frame arrows or training overlays.
- Mismatched hitlag sampling — online/offline DI diverges; document the exact frame in your combat spec.
- Ignoring weight — heavy characters need either stronger DI or longer hitstun so survival DI remains meaningful.
- Combo DI untested at rage/guts thresholds — sudden knockback changes at comeback thresholds interact badly with DI; regression-test percent breakpoints.
Production checklist
- Choose polar vs Cartesian DI blending globally; document in combat bible.
- Define hitlag-frame rule for launch DI sampling; match offline and rollback.
- Add per-move
di_launch_factor,sdi_per_frame, and caps. - Mark command grabs, spikes, and cinematic hits with
di_lockout. - Build training overlay: base KB vs DI-adjusted vector for one frame.
- Regression-test juggle routes at low, mid, and high percent with optimal survival DI.
- Regression-test attacker combo DI (down-away) escape rates on signature strings.
- Export
di_launchandsdi_offsetin replays for support. - Quantize stick input for ranked modes; document eight-way vs analog policy.
- Tutorial: name survival DI, combo DI, and SDI with one interactive drill each.
Key takeaways
- Launch DI rotates knockback at hit resolution; SDI nudges position each hitstun frame.
- Survival DI saves stocks; combo DI and mixup DI create defensive skill expression.
- Harbor Brawl cut juggle-to-stock rate from 61% to 38% without damage nerfs.
- Per-move scaling and SDI caps keep combos viable while escapes stay fair.
- Pipeline order and hitlag sampling must be deterministic for rollback netcode.
Related reading
- Game knockback systems explained — base vectors, weight, and wall bounce
- Game juggle limit and decay systems explained — anti-infinite caps that interact with DI
- Game hitstun and blockstun systems explained — frames where SDI applies
- Game launcher attack systems explained — launch tiers defenders DI against