Guide
Game grenade utility lineup practice systems explained
Harbor Siege's ranked meta on map Vault depended on three attacker smokes to cross Mid and take B Site. Community guides lived on YouTube: stand on a crate corner, aim at a rust stain, jump-throw with a 1.2 s cook. After a physics patch changed bounce friction on metal props, those lineups silently broke. Post-plant execute telemetry tagged 47% of attacker rounds as “failed utility execute” — smokes that landed short, flashes that popped behind teammates, or molotovs that never reached default plant. Players blamed RNG; replays showed predictable geometry drift.
The refactor shipped an in-game lineup practice stack: a server pin registry that stores throw origin, view angles, cook offset, and utility type; ghost trajectory replay that renders the authoritative arc from live physics; a curated lineup library per map and site; and patch-drift detection that flags pins when landing zones move more than 0.4 m after balance changes. Failed executes on Vault B fell from 47% to 11%; unique lineup saves per player rose 3.2×. This guide explains what utility lineup systems do, pin and ghost architecture, practice mode FSM, lineup taxonomy for smoke, flash, and HE roles, ranked integrity rules, the Harbor Siege refactor, a decision table, pitfalls, and a production checklist.
What utility lineup systems do
A grenade lineup is a reproducible throw recipe: stand at position P, orient view vector V, apply throw charge C and cook time T, release so the utility lands at target zone Z. Lineups are muscle-memory macros players memorize to convert economy into map control — especially on post-plant retakes where seconds matter.
Core responsibilities
- Pin capture — record thrower capsule position, pitch/yaw, stance (stand/crouch/jump), throw mode, and cook offset at release frame on the server tick.
- Ghost replay — deterministically re-simulate the throw with current physics and render a translucent arc plus landing decal without consuming inventory.
- Library curation — tag lineups by map, site, role (exec smoke, one-way, molly deny, pop flash), and difficulty tier.
- Drift detection — compare stored landing hash to fresh simulation after patch; surface STALE badges on outdated pins.
- Ranked policy — practice-only ghosts; no live-match auto-aim or landing guarantees that would undermine skill expression.
Lineup systems sit downstream of throwable physics. If arc preview, fuse timing, or bounce materials change without updating pins, the library becomes misinformation at scale.
Pin registry and ghost trajectory replay
Store each saved lineup as a pin record on the authoritative server (or signed client export validated server-side in custom lobbies):
{
"pin_id": "vault_b_exec_smoke_03",
"map_hash": "vault_r12",
"utility": "smoke",
"origin": { "x": 1240.2, "y": -88.5, "z": 64.0 },
"view": { "pitch": -32.4, "yaw": 118.7 },
"stance": "stand",
"throw_charge": 1.0,
"cook_ms": 0,
"landing_zone": { "center": [...], "radius": 1.8 },
"physics_build": "2026.06.04"
}
Ghost replay spawns a non-interactive duplicate grenade entity that follows the server simulation path. The practicing player sees:
- Translucent arc polyline synced to tick rate
- Ground decal at predicted detonation / smoke bloom center
- Timing bar for cook offset relative to pin reference
- Delta overlay when live throw deviates > 0.3 m from pin landing
Ghosts must use the same detonation FSM as live play. A practice smoke that blooms in 0.5 s while ranked uses 1.2 s teaches false timing for plant choreography.
Pin capture modes
| Mode | Who creates pins | Integrity | Use case |
|---|---|---|---|
| Developer curated | Level designers | Highest; QA on every patch | Onboarding and featured executes |
| Community verified | Players; upvote + replay proof | Medium; drift risk | Organic meta discovery |
| Personal private | Individual | Self-maintained | Pro team strats |
| Coach import | Signed JSON from scrim tool | High if signature valid | Esports pipelines |
Practice mode FSM and placement
Lineup practice can live in three surfaces; each needs a clear finite state machine so players do not confuse practice physics with ranked:
- UTILITY_RANGE — dedicated submenu inside the warmup range; infinite utility, no scoreboard.
- CUSTOM_LOBBY — full map with ghost toggles; coaches place pins for team review.
- REPLAY_SCRUB — extract pin from a saved match throw that succeeded; auto-names by site and utility.
Transitions: IDLE → PIN_SELECTED → GHOST_PREVIEW → LIVE_ATTEMPT → SCORED (landing delta, cook delta, timing grade) → IDLE. Ranked matchmaking blocks GHOST_PREVIEW entirely; only personal pin list is readable as text callouts, not auto-throw.
Lineup taxonomy by utility role
| Utility | Common lineup goals | Timing sensitivity | Typical pin count per site |
|---|---|---|---|
| Smoke | Exec cross, one-way, post-plant deny | Low–medium | 8–15 |
| Flash | Pop flash, team blind, clear corner | High (cook) | 6–12 |
| Molotov / incendiary | Default deny, flush, post-plant | Medium | 4–8 |
| HE | Stack chip, wallbang combo | Low | 3–6 |
Patch-drift detection and version hygiene
The highest-value feature competitors skip is automatic staleness. On each client build or physics table change:
- Re-simulate every curated pin in a headless farm.
- Compare landing center to stored
landing_zone. - If delta > tolerance (typically 0.35–0.5 m for smokes, 0.2 m for flashes), mark pin STALE and hide from featured list.
- Notify players who favorited the pin with a one-line changelog link.
Harbor Siege's Vault crisis traced to a single metal-crate friction tweak that moved smokes 0.7 m downhill. Without drift detection, three featured pins stayed in the onboarding path for eleven days. Post-refactor CI runs pin regression on every physics PR; stale rate in featured library stays below 2%.
Visual alignment aids (practice only)
- World pin decal — foot placement outline on floor; disappears in ranked.
- View alignment reticle — ghost crosshair overlay; optional “snap assist” only in beginner tier, never in ranked practice scoring.
- Audio cue on match — subtle tick when cook offset matches pin within 50 ms (custom lobbies only).
Ranked integrity and abuse prevention
Lineup tooling walks a narrow line between education and automation:
- No auto-throw in live matches — pins are reference only; executing remains manual input.
- No wallhack via lineup library — pin metadata must not reveal enemy positions; only geometry and utility outcomes.
- Rate-limit pin exports — prevent datamining entire curated libraries for cheat overlays.
- Observer/coach mode — ghosts visible to bench coaches in tournament lobbies; blocked in ranked spectator delay.
- Economy coupling — practice mode does not refund wasted utilities in ranked; sandbox uses zero-cost ghosts only.
Tie lineup tutorials to buy-phase economy so players learn which executes are worth 300 credits on force rounds versus full buys.
Harbor Siege refactor
Before the lineup stack, Harbor Siege relied on external wikis. After:
- Forty-two developer-curated pins per competitive map in UTILITY_RANGE.
- Personal pin save from any custom-lobby throw with one keybind.
- Ghost replay using live physics build ID stamped on HUD.
- CI drift job on physics merges; STALE pins removed from featured carousel.
- Post-plant execute analytics: failed_execute_rate by site and rank tier.
Vault B attacker win rate on full buys rose from 44% to 51% — not because smokes got stronger, but because lineups landed where players expected. Failed utility executes fell from 47% to 11%.
Decision table: in-game lineup stack vs alternatives
| Approach | Strength | Weakness | When to use |
|---|---|---|---|
| Pin registry + ghost replay (this guide) | Survives patches; teaches timing | Build and CI cost | Competitive tactical shooters with utility meta |
| YouTube / wiki only | Zero dev cost | 47% stale execute rate in Harbor Siege | Early access before tools ship |
| Static image callouts in map | Always visible | Clutters art; no cook feedback | Casual modes or tutorial only |
| Auto-throw assist in ranked | Perfect executes | Removes skill; esports backlash | Never in ranked |
| No lineup support | Pure discovery | Meta gatekept by veterans | Arcade playlists only |
Pitfalls
- Practice physics differ from live — ghost smokes bloom faster; players die on execute timing.
- Pin capture on client tick — 30 ms offset breaks jump-throws; always stamp server release frame.
- No drift job after prop swaps — featured pins lie for weeks after friction patches.
- Ghost arc visible through walls in ranked — wallhack perception even if damage-neutral.
- Community pins unmoderated — offensive pin names and griefing callouts in shared libraries.
- Cook UI missing — flash lineups need millisecond feedback; stand-only pins fail for pop flashes.
- Lineup library ignores role — 200 pins per site; beginners never find the three that matter.
- Warmup range omits utility sandbox — players enter ranked never having thrown a smoke on the live map.
Production checklist
- Define pin record schema: origin, view, stance, charge, cook, utility, physics build.
- Implement server-authoritative ghost replay with live detonation FSM.
- Ship UTILITY_RANGE mode inside warmup with zero-cost utility ghosts.
- Curate developer pins per map site with role tags (exec, one-way, deny).
- Allow personal pin save from custom lobbies and replay scrub.
- Run headless drift regression on physics and map prop changes.
- Surface STALE badges and notify favorited-pin owners on mismatch.
- Block ghost overlays and auto-throw in ranked matchmaking.
- Score practice attempts: landing delta, cook delta, release timing grade.
- Dashboard failed_execute_rate by site, rank tier, and pin age.
- Moderate community pin names and rate-limit bulk export APIs.
- Document lineup practice path in onboarding and buy-menu utility tooltip.
Key takeaways
- Lineups are reproducible throw recipes — the game should store and replay them, not outsource to stale videos.
- Ghost trajectories must use live physics or practice mode teaches lies.
- Patch-drift detection is the difference between a library and a trap.
- Ranked integrity means reference pins, never auto-execute assists.
- Harbor Siege cut failed utility executes from 47% to 11% with pin registry, ghost replay, and CI drift checks — not by buffing smoke duration.
Related reading
- Grenade and throwable systems explained — arc preview, fuse timing, and cook mechanics upstream of lineups
- Smoke grenade and screen vision systems explained — occlusion and dissipation that lineups must land inside
- Warmup and practice range systems explained — where UTILITY_RANGE mode lives in the pre-match loop
- Tactical shooter design explained — utility roles, economy, and execute meta context