Guide
Game recoil and spread systems explained
Harbor Ruins' rooftop rifle encounter shipped with vertical kick that climbed off-screen by bullet six, horizontal drift that felt random, and zero recovery between bursts. Players who missed the first two shots sprayed into the sky while grunts walked forward untouched. The problem was not damage — it was recoil and spread tuned as separate knobs that fought each other. The refactor treated kick, bloom, and recovery as one system: a readable six-shot climb pattern, capped horizontal sway, 0.18 s recovery delay before spread decay, and ADS curves that cut bloom 40% without removing recoil entirely. Headshot rate on the rooftop rose 22% while full-auto TTK stayed flat; players learned to tap fire at range and commit to short bursts up close.
Recoil moves where the weapon (camera, reticle, or both) points after each shot. Spread (bloom) widens the cone where bullets can land even if the reticle looks steady. Together they convert ranged weapon stats into skill bands: tap firing, burst control, and movement penalties. This guide covers pattern vs random recoil, bloom accumulation and decay, first-shot accuracy, ADS and stance modifiers, pairing with aim assist, the Harbor Ruins rooftop refactor, a technique decision table, pitfalls, and a production checklist alongside ammo pacing and cover design.
Recoil versus spread: two different errors
Designers often conflate recoil and spread because both make you miss. They operate on different axes:
| System | What moves | Player reads as | Skill expression |
|---|---|---|---|
| Recoil (kick) | Camera / reticle offset per shot | Gun climbing, pulling left | Counter-movement, pattern learning |
| Spread (bloom) | Hit cone radius around aim point | Shots landing wide despite centered crosshair | Tap fire, stop moving, wait for decay |
| Sway (idle drift) | Slow oscillation while ADS | Scope wobble | Hold breath, crouch, stamina |
Visual recoil (weapon mesh animation, camera punch) can differ from actual recoil (where bullets go). Arcade shooters often exaggerate mesh kick while keeping hit cones tight; sim titles align both. Mismatch causes trust issues: the reticle says headshot, the hit log says body.
Deterministic patterns versus random jitter
Competitive and tactical shooters frequently use fixed recoil patterns per weapon — the same sequence every full-auto spray. Players learn to pull down-left on bullet four because the pattern always kicks up-right. Arena and hero shooters lean on randomized horizontal jitter within bounds so mastery is statistical, not muscle-memory rote. Pick one philosophy per weapon class; mixing pattern rifles with random SMGs in the same loadout is fine, but two rifles with different philosophies confuse players switching between them.
Building a recoil curve
A recoil curve is a list of per-shot offsets (pitch, yaw, roll) applied after each fired round while the trigger is held:
recoil_pitch[i] = base_climb + pattern[i] * weapon_scale
recoil_yaw[i] = horizontal_pattern[i] + random(-jitter, +jitter)
applied_rotation += recoil_pitch[i], recoil_yaw[i]
Key tuning parameters:
- Climb rate — degrees or pixels per shot; should reach a ceiling before the magazine ends so players can still see targets.
- Horizontal cap — max yaw offset; prevents full sprays from becoming unrecoverable sideways.
- Pattern length — loop every N shots or reset on trigger release; looping creates rhythm for LMG suppressive fire.
- Recovery speed — how fast aim returns toward input when firing stops; separate from spread decay (below).
- Input coupling — whether player mouse/stick movement stacks additively with kick or partially compensates (most FPS: additive).
First-shot accuracy
First-shot accuracy (FSA) guarantees the opening round lands where the reticle points, often with zero bloom and reduced kick. It rewards deliberate shots at range and distinguishes DMRs from SMGs. Common pattern: FSA on, bloom starts accumulating shot two, recoil pattern begins shot three. Announcing FSA in weapon copy (“Pinpoint first round”) sets player expectations.
Spread bloom: accumulation, cap, and decay
Bloom models inaccuracy as a radius (or cone angle) that grows while firing and shrinks when idle:
on_shot: spread = min(spread + bloom_per_shot, spread_max)
on_idle: after recovery_delay, spread = lerp(spread, spread_base, decay_rate * dt)
Bloom per shot sets how fast full-auto widens. Spread max prevents hipfire pistols from becoming shotgun cones. Recovery delay (0.1–0.25 s typical) stops tap-spam from resetting instantly; without it, macro-fire beats holding trigger. Spread base is stance-dependent:
- Standing hipfire — widest base.
- Crouch / slide — 15–30% tighter.
- ADS — separate curve; often lower base and lower max.
- Moving — additive penalty; sprinting may block ADS entirely.
- Airborne — large penalty or fixed inaccuracy until grounded.
Pellet spread versus single-projectile bloom
Shotguns use fixed pellet cones per shot (e.g., 8 pellets in 6°) rather than accumulating bloom. DMRs may use zero bloom but heavy recoil kick per shot. Define per-weapon whether inaccuracy is bloom-based, pattern-based, or pellet-based — do not stack all three on one gun without reason.
ADS, zoom, and sensitivity scaling
Aim-down-sights modifies recoil and spread together:
- Recoil multiplier — often 0.6–0.85× kick while scoped; zero recoil ADS feels like a laser in PvE.
- Bloom multiplier — separate from recoil; ADS can tighten spread without reducing climb.
- Zoom sensitivity — mouse/ stick scale while scoped; must match hipfire muscle memory or players overshoot.
- Scope sway — slow sine drift; stamina or breath-hold cancels sway for skilled players.
Harbor Ruins rifles: hipfire spread max 4.2°, ADS max 2.5°, recoil climb 85% of hipfire value while scoped so ADS still rewards burst discipline. Zoom level (1.5× red dot vs 4× ACOG) can apply additional spread penalties on high magnification to keep sniper lanes distinct.
Pairing recoil with other gunplay systems
Recoil/spread does not live in isolation:
- Fire rate — higher RPM reaches spread max faster; tune bloom per shot inversely with RPM for similar time-to-max.
- Damage falloff — wide spread at range doubly punishes; check effective DPS at 20 m and 40 m, not just point-blank.
- Magazine size — see ammo systems; a 40-round laser encourages hold-trigger; shorter mags pair with heavy bloom.
- Aim assist — friction and magnetism fight recoil; reduce assist strength while firing or scale assist with spread so controllers do not auto-track through kick.
- Hitstop — freeze frames during kick can feel mushy; apply hitstop to target, not shooter camera, during full-auto.
- Cover peek height — recoil climb can expose heads above low cover; tune climb so three-shot bursts stay behind sandbags.
Multiplayer, replication, and fairness
- Server-side spread seeds — authoritative hit cones prevent client-side no-spread cheats; replicate seed or final hit result.
- Recoil replication — usually client-visual only; server validates hits, not camera pitch. Spectators may see different kick than shooter.
- Lag compensation — wide bloom plus lag widens perceived unfairness; tighten FSA for PvP opening shots.
- Cross-play — controller aim assist plus low recoil can dominate mouse at mid range; separate PvP curves or higher bloom on assist weapons.
- Accessibility — optional reduced recoil, wider FSA window, or bloom-only inaccuracy without camera kick (motion sickness).
Harbor Ruins rooftop rifle refactor
Problem: rooftop defense, 18 grunts at 25–40 m, starter AR with uncapped vertical climb, random horizontal ±3° per shot, instant spread reset. Players full-auto sprayed; rounds sailed over heads; encounter felt unfair despite low enemy DPS.
- Replaced random yaw with six-shot pattern (up, up-right, right, up, up-left, left) then loop with 70% magnitude.
- Capped total pitch offset at 5.5° so crosshair never left the torso band.
- Bloom: +0.35° per shot, max 3.8° hipfire, recovery delay 0.18 s, decay 4.2°/s to base 1.1°.
- FSA on shot one; bloom begins shot two; pattern kick begins shot three.
- ADS: spread max 2.5°, recoil scale 0.85, unchanged fire rate.
- Moving penalty +0.6° spread base while sprinting; crouch −0.3° base.
Outcome: rooftop clear rate +19%, average shots fired per kill −12%, player surveys cited “gun finally obeys me.” No damage or HP changes.
Technique decision table
| Approach | Feel | Best when | Watch out for |
|---|---|---|---|
| Fixed recoil pattern | Learnable mastery | Competitive tactical, esports | Macro/script stigma; pattern fatigue |
| Random bloom only | Statistical control | Arena, hero shooters | Feels RNG at range |
| Recoil without bloom | Crisp hitscan | Tactical sim, DMR lanes | Full-auto dominates if kick too low |
| Bloom without kick | Low motion sickness | Mobile, accessibility modes | Less visceral feedback |
| Visual-only recoil | Juicy animation | Arcade, third-person | Reticle mismatch if overdone |
| High aim assist + low kick | Console-friendly | PvE, casual PvP | Cross-play balance complaints |
Common pitfalls
- Uncapped vertical climb — players lose target entirely by mid-mag; set pitch ceiling.
- Instant spread reset — tap-firing beats full-auto always; add recovery delay.
- Identical curves on all weapons — AR, SMG, and LMG feel interchangeable; differentiate RPM, max bloom, and pattern length.
- ADS removes all recoil — scoped full-auto becomes mandatory; keep partial kick.
- Ignoring movement penalties — strafe shooting with tight spread breaks cover tactics.
- Recoil without audio feedback — each shot needs distinct report so players sense bloom building.
- PvE-only tuning in PvP — low bloom plus assist dominates; split curves or playlists.
- Spread max below visual crosshair — bullets land outside reticle arms; align UI with hit cone.
Production checklist
- Document per weapon: pattern vs random, bloom per shot, spread min/max, recovery delay.
- Plot recoil pitch/yaw for full magazine; verify crosshair stays on humanoid torso band.
- Enable FSA where design promises precision first shot; test at 30 m and 50 m.
- Tune ADS multipliers separately for spread and kick; playtest zoom levels.
- Apply stance and movement modifiers; sprint spread matches encounter cover layout.
- Pair bloom decay with ammo TTE — time-to-max spread vs magazine length.
- Validate server-side spread for multiplayer; log hit cone vs client reticle deltas.
- Review aim assist strength during sustained fire; reduce magnetism while blooming.
- Accessibility preset: reduced camera kick or bloom-only inaccuracy.
- Playtest rooftop/long-range and room-clear encounters after every recoil patch.
Key takeaways
- Recoil moves aim; spread widens hits — tune them together, not as isolated sliders.
- Patterns reward mastery; random bloom rewards pacing — pick a philosophy per weapon class.
- Recovery delay and spread caps prevent tap-spam from beating full-auto — FSA anchors ranged skill.
- ADS should tighten spread without zeroing kick — scoped fire still needs burst discipline.
- Harbor Ruins fixed rooftop frustration with capped climb, readable patterns, and 0.18 s bloom recovery — no damage change required.
Related reading
- Game ranged combat systems explained — hitscan, falloff, and engagement distance
- Game ammo and reload systems explained — magazine pacing paired with spray control
- Game aim assist explained — friction and magnetism during sustained fire
- Game cover systems explained — peek height versus recoil climb