Guide
Game crowd control systems explained
Harbor Ruins' frost mage kit shipped with a three-second hard stun on a six-second cooldown. In PvE, players perma-locked the Sunken Archivist through every phase transition. In PvP duels, the same spell deleted counterplay: victims ate full combos with no i-frame window because stun suppressed dodge input entirely. The design team initially nerfed duration to 1.2 seconds — which gutted the mage's identity without fixing chain-stun exploits from two mages rotating cooldowns.
The real fix was architectural: a shared crowd-control registry with hard/soft categories, per-target diminishing returns (DR), boss immunity windows tied to phase flags, and a cleanse pipeline that respected poise and hyper armor instead of fighting them. This guide covers CC taxonomy, application and resolution rules, DR math, PvE vs PvP tuning, multiplayer authority, the Harbor Ruins refactor, a technique decision table, pitfalls, and a production checklist.
Hard CC vs soft CC
Every control effect should declare which player verbs it blocks. Mixing categories without documentation is how teams ship “roots that also silence” by accident.
| Category | Blocks | Examples | Typical counter |
|---|---|---|---|
| Hard CC | Movement and most actions | Stun, sleep, freeze, knockdown (grounded) | DR immunity, trinket cleanse, boss phase flag |
| Root / snare | Displacement only; can still cast/shoot | Entangle, ice shackles, net | Blink, dash with root-break tag, cleanse |
| Soft CC | Partial capability | Slow, silence, disarm, blind, pacify | Diminished duration, tenacity stat, dispel |
| Forced motion | Player steering; may allow some actions | Knockup, pull, fear, charm | Air dodge, CC break at landing, interrupt immunity |
| Taunt / forced target | Target selection only | Provoke, mind control (PvE) | Taunt immunity, PvP DR cap at zero |
Store CC as typed status entries on a central controller — not as one-off flags
scattered across animation blueprints. Each entry needs: ccType,
duration, sourceId, priority, and whether it
respects armor tiers.
Application pipeline
When an attack lands, resolve CC in a fixed order so designers can reason about outcomes:
- Hit validation — server confirms collision; client prediction may show VFX early but must reconcile.
- Immunity check — global flags (boss phase, cutscene, spawn protection), per-type immunity (undead sleep immune), and active DR immunity window.
- Armor gate — if target has hyper armor on this frame, skip hard CC but still apply damage and poise damage.
- DR adjustment — shorten duration or reject application per DR tier.
- Apply or refresh — same-type refresh rules: extend duration vs take longer remaining (document per type).
- Notify systems — animation FSM, input router, AI behavior tree, UI buff bar.
Hard CC should cancel channeled casts unless the channel has an explicit “uninterruptible” tag — see channeling systems for how that interacts with pushback and silence.
Diminishing returns
DR prevents stun-lock loops while keeping the first CC impactful. A common WoW-style model tracks separate DR categories:
- Stun DR — full duration, then 50%, then 25%, then immune for 18s.
- Root DR — separate track so roots don't consume stun DR.
- Silence / disarm — often softer tiers or shared “incapacitate” bucket.
Reset DR on death in PvP arenas; in open world, shorter reset timers avoid permanent punishment after one bad fight. PvE trash mobs often skip DR entirely; elites and bosses use DR or flat immunity instead.
Expose DR state in combat logs and UI tooltips during development — designers cannot tune what they cannot see. A frost mage rotating with a rogue needs visible feedback when the third stun whiffs.
Cleanse, break, and tenacity
Players need predictable outs. Map each cleanse tool to which CC types it removes:
| Mechanic | Removes | Design note |
|---|---|---|
| Full cleanse | All debuffs including hard CC | Long cooldown; PvP trinket slot |
| CC break only | Stun, root, fear; not DoT or slow | Class identity button (warrior shake-off) |
| Dispel (ally) | Magic debuffs; often not physical roots | Supports healer skill expression |
| Tenacity / resolve stat | Nothing directly; reduces duration received | Tanks scale into boss knockbacks |
Cleanse on cast start (before projectile travels) is a common exploit — resolve cleanses on button press but apply immunity only after a 0.2s channel if balance requires. Pair with status effect stacking rules so cleanses don't accidentally strip friendly buffs.
Knockup, knockdown, and displacement CC
Vertical CC is feel-heavy: knockups suspend gravity and often grant juggle windows in fighters; knockdowns ground the target for OTG attacks. These interact with knockback impulse — a knockup is not just large upward velocity.
- Air state — separate FSM from grounded; track air time cap to prevent infinite juggles.
- Tech / ukemi — timed input to reduce OTG vulnerability (fighting games) or quick rise (action RPGs).
- Collision — ceiling hits convert knockup to stun; document for level designers.
Fear and charm force navigation overrides: AI steering takes input vector from a flee or approach point. In multiplayer, simulate on server and replicate facing; clients only interpolate for smooth animation.
PvE boss immunity and phase design
Raid bosses need CC windows or the encounter becomes a spreadsheet. Patterns that work:
- Permanent immunity to sleep and charm on all bosses.
- Phase-start immunity — 3s after transition, no hard CC (lets boss animate entry).
- Breakable stagger — instead of stun, build a posture meter that opens a damage window.
- Add control — CC remains strong on trash so crowd-control specs feel useful between boss phases.
Telegraph which enemies are CC-vulnerable with UI icons or material shaders — players should not trial-and-error every elite.
Multiplayer authority
CC must be server-authoritative in competitive modes. Client-side stun prediction feels responsive but enables desync cheats. Pattern:
- Server applies CC and timestamps expiry.
- Client receives event; plays stun anim and disables input immediately.
- If prediction was wrong, snap back with brief blend — rare if hit validation is tight.
Latency compensation for CC is harder than for hitscan damage. Favor slightly early server application over letting high-ping players ignore stuns. Document ping budgets in your netcode spec.
Harbor Ruins frost knight refactor
Problem: frost mage stun + rogue cheap shot rotated 100% uptime on players; PvE Archivist skipped mechanics.
Changes shipped:
- Stun and incapacitate share one DR track in PvP; third application in 15s is immune.
- Root and slow use separate DR tracks — mage identity preserved.
- Archivist gains
PhaseTransition.CCImmunefor 4s after each phase at 70% and 40% HP. - Stagger meter replaces hard stun on bosses; frost spells still build posture.
- Warrior
Shake Offbreaks hard CC only, 45s cooldown, usable while stunned. - Combat log shows DR tier on target frame in PvP arenas.
Outcome: mage win rate in duels dropped from 62% to 51%; Archivist average kill time rose 18% as intended. Frost mage mains kept roots and slows as skill expression.
Technique decision table
| Approach | Best when | Weak when |
|---|---|---|
| Full DR tracks per CC family | PvP with many CC sources, esports fairness | Casual PvE where DR feels punitive on trash |
| Poise/stagger only (no hard stun on bosses) | Soulslike bosses, telegraphed punish windows | Support specs that rely on binary stop buttons |
| Short hard CC + long soft CC | Hero shooters, ability FPS with counterplay | Slow-paced tactical RPG turn economy |
| Tenacity stat scaling | Tank roles, boss adds, difficulty tiers | Games without role trinity (everyone same HP) |
| Binary boss immunity flags | Raid scripting, phase-driven encounters | Open-world elites where variety matters |
| No DR (arcade brawlers) | Local coop, short sessions, juggle focus | Online ranked PvP |
Common pitfalls
- Stun during i-frames — hard CC should respect dodge invulnerability unless the attack is explicitly unblockable.
- Silence blocking UI menus — silence stops combat abilities only; don't trap players in inventory.
- DR shared too broadly — polymorph and stun on one track makes half the roster irrelevant.
- Client-only CC — exploitable; server must own expiry.
- Root + silence + slow stacking to hard lock — audit combined verb blocking.
- Cleanse stripping raid buffs — tag buffs dispel-resistant.
- Fear pathing into geometry — navmesh validation or fear ends early on stuck.
- No feedback on DR immune — players think game is broken; show “immune” floater.
Production checklist
- Define CC type enum with blocked player verbs per type.
- Central CC controller on every combatant; no orphan stun flags.
- Application pipeline: immunity, armor, DR, then apply.
- Separate DR tracks for stun, root, silence (document shared buckets).
- Boss phase flags for CC immunity and posture-only windows.
- Cleanse abilities declare removable types; test vs friendly buffs.
- Server authority for CC in multiplayer; replicate expiry timestamps.
- Combat log and debug UI show DR tier and active CC sources.
- Knockup air-state FSM with juggle decay and ceiling rules.
- PvP and PvE tuning tables split (duration, DR reset on death).
- Accessibility: reduce screen shake on fear; optional CC duration captions.
Key takeaways
- Classify CC by which verbs it blocks — hard, soft, root, and forced motion are different systems.
- Diminishing returns keep PvP fair; bosses need immunity or posture substitutes.
- Cleanse and CC break are part of the kit — tune them with the same rigor as the CC itself.
- Resolve CC on the server in competitive modes; clients predict for feel only.
- Integrate with poise and hyper armor instead of duplicating interrupt logic.
Related reading
- Game status effects explained — buff/debuff data models, DoT ticks, and stacking
- Game stagger and poise systems explained — posture meters as boss-friendly control
- Game hyper armor and super armor explained — when CC should fail
- Game dodge roll and i-frames explained — counterplay windows vs hard stun