Guide
Game AFK and leaver penalty systems explained
Harbor Ridge’s 5v5 tactical mode shipped with a single blunt rule: disconnect for more than 60 seconds and you lose ranked LP. Crash victims, parents answering the door, and rage-quitters all received the same punishment. Worse, teammates who stayed in a 4v5 absorbed full MMR loss while leavers often dodged consequences by never re-queueing. Session telemetry showed 38% of ranked matches ended with at least one “unfair loss” tag in post-game surveys — mostly idle teammates and early leavers, not skill gaps. Remaining players churned at 2.4× the baseline after two such games in a row.
AFK and leaver penalty systems exist to protect match integrity without punishing honest disconnects. They combine idle detection heuristics, disconnect classification, tiered sanctions (queue timers, LP loss, MMR shields), and integration with reconnect grace windows so crashes get a path back while griefing escalates. This guide covers detection signals, leaver vs AFK vs dodge taxonomy, penalty ladders, team compensation (remake votes, loss mitigation, bot backfill), the Harbor Ridge refactor, a technique decision table, pitfalls, and a production checklist.
What counts as AFK vs leaver vs dodge
Players and designers often conflate three behaviors that need different responses:
- AFK (idle in match) — connection alive, character present, but no meaningful input for a threshold window. May be tabbed out, controller dropped, or intentional griefing.
- Leaver (disconnect) — TCP/WebRTC session drops; player may return via rejoin flow or abandon permanently.
- Dodge (pre-match exit) — leaves during lobby, agent select, or load screen before the match is “committed.” Cheaper to execute than in-match rage-quit; needs separate timers.
A robust backend tags each event with reason,
match_phase, idle_seconds, and
rejoin_attempted so penalty engines never treat a Wi-Fi blip like
a third dodge in ten minutes.
AFK detection: signals and false-positive control
Server-authoritative games should detect AFK on the host, not trust client “I’m active” pings. Common signal stack:
- Input idle timer — no movement, aim, ability, or ping
wheel input for
T_idleseconds (often 90–180 in ranked). - Spawn idle — stricter threshold at round start; standing in spawn for 30s before buy phase ends is a classic grief pattern.
- Position stall with macro input — rubber-band movement scripts; pair position delta with input entropy checks.
- Heartbeat + app focus (client hint only) — optional secondary signal; never sole evidence on PC where focus events lie.
Before kick or penalty, run a warning FSM: overlay at 50% of threshold, audio cue at 75%, kick at 100%. Competitive titles often convert AFK kick to bot takeover for the remainder of the round so teams are not permanently down a player.
AFK_score = w1 * idle_input_seconds
+ w2 * spawn_camp_seconds
+ w3 * zero_ability_casts_while_in_combat_radius
Tune weights per mode: battle royale squads may allow longer inventory idle; round-based shooters need aggressive spawn checks.
Disconnect classification and rejoin grace
When a session drops, start a grace timer (typically 90–180s ranked, shorter in casual). During grace:
- Slot is reserved; no backfill from queue.
- Team sees “Player reconnecting” not “Player abandoned.”
- Successful rejoin within grace → no leaver flag.
After grace expires, classify as LEAVER and branch:
- Bot backfill if AI can plausibly substitute (casual).
- Remake / early terminate vote if teams are lopsided within first N minutes.
- Continue 4v5 with loss-mitigation for remaining players (no LP loss if leaver was on your team and you still lose).
Distinguish INTENTIONAL_LEAVE (menu quit, alt+F4 pattern) from
NETWORK_DROP using client quit reason when available and rejoin
attempt logs. Repeat network drops on same account in 24h may still escalate
— but first offense should stay lenient.
Penalty ladder: escalation without permanent bans on day one
Penalties should escalate on a rolling window (e.g. 7 days) and decay with clean play. Typical tiers:
| Offense | First | Repeat | Severe / ranked |
|---|---|---|---|
| Lobby dodge | 2–5 min queue lock | 15–30 min | LP loss if ranked dodge |
| AFK kick (one round) | Warning only | 10 min lock | LP loss + credit strike |
| Mid-match leave | 10–15 min lock | 1–24 hr lock | LP + MMR penalty |
| Serial leave (>3/24h) | 24 hr ranked ban | 7 day ban | Season reset review |
LP and MMR penalties apply to the leaver, not teammates. Remaining players on the leaver’s team often receive:
- Loss shield — ranked LP neutral on defeat when leaver flagged before minute 10.
- Reduced MMR swing — halve expected loss delta when matchmaking detects >800 MMR team disadvantage from absence.
- Remake refund — zero stats recorded if unanimous remake within grace window.
Pair leaver penalties with ranked decay so inactive accounts at the top of the ladder cannot dodge losses by not playing.
Team tools: remake, surrender, and report
Penalties work best alongside in-match relief valves:
- Remake vote — triggered when ally never connects post-load or disconnects in first 3–5 minutes; requires supermajority.
- Surrender / forfeit — later in match; higher vote threshold (e.g. 4/5) to prevent abuse.
- Report category: AFK / leaving — feeds trust score; automated penalties handle first strikes; reports escalate repeat offenders.
Never stack remake and full LP loss on the same incident — pick one compensation path per match ID.
Harbor Ridge refactor walkthrough
Harbor Ridge’s live-ops team shipped a four-part patch:
- Split penalty tables for dodge, AFK, and leave with independent rolling counters.
- 120s reconnect grace with reserved slot and UI banner; integrated with existing snapshot rejoin from the reconnect guide.
- Loss shield for teammates when leaver flagged before round 8; leaver takes full MMR hit and 20 LP penalty.
- Spawn AFK detector at 45s idle in buy zone with warning overlay at 30s; bot fills only after kick, not on first warning.
Results after two weeks on ranked: unfair-loss survey tags fell from 38% → 9% of sessions, leaver repeat rate dropped 41% → 14%, and average queue time rose only 4 seconds because fewer lopsided remakes were needed. Crash-only players (rejoined within grace) saw penalty rate near zero.
Technique decision table
| Scenario | Prefer | Avoid |
|---|---|---|
| Wi-Fi blip mid-match | Grace + rejoin, no penalty | Instant LP loss on disconnect |
| Spawn idle griefing | Fast AFK kick + bot fill | Wait until round ends |
| Lobby dodge spam | Escalating queue timers | Permanent ban on first dodge |
| 4v5 after leaver | Loss shield for team | Full MMR loss for innocent four |
| Casual mode | Bot backfill after grace | Remake entire match |
| First-time leaver | Warning + short lock | Season ban |
| Serial leaver (>5/wk) | Ranked suspension ladder | Same 10 min lock forever |
Common pitfalls
- One penalty for all disconnect types — trains players to never rejoin.
- Punishing teammates with full LP loss — drives churn harder than the leaver.
- Client-only AFK detection — trivial to spoof; server must own idle state.
- No warning before kick — false positives on controller battery swap.
- Bot backfill in ranked — often worse than 4v5; use shields instead.
- Ignoring dodge in agent select — cheaper grief than in-match leave.
- Penalty without decay — year-old dodge still blocks ranked.
- Remake and surrender sharing one vote cooldown — players trapped in unwinnable 3v5.
Production checklist
- Define AFK, leaver, and dodge enums with match-phase metadata.
- Implement server-side input idle timer with mode-specific thresholds.
- Ship warning overlay before AFK kick; log warning timestamps.
- Reserve reconnect grace window; integrate with rejoin token flow.
- Classify intentional quit vs network drop using client reason + rejoin logs.
- Apply escalating queue locks on rolling 7-day windows per offense type.
- Shield teammates from LP/MMR loss when leaver flagged early.
- Penalize leaver LP and MMR separately from lockout duration.
- Offer remake vote in first N minutes when ally never spawns.
- Dashboard: unfair-loss rate, rejoin success %, repeat leaver cohort.
Key takeaways
- AFK, leaver, and dodge are different events — penalties must match intent and phase.
- Server-side idle detection plus warning FSM cuts false kicks.
- Reconnect grace protects crash victims; griefing escalates after grace.
- Teammates need loss shields, not shared punishment.
- Harbor Ridge cut unfair-loss tags from 38% to 9% with split tables and grace windows.
Related reading
- Reconnect and disconnect recovery — grace timers, rejoin tokens, snapshot catch-up
- Game matchmaking explained — MMR, queues, and fair team construction
- Ranked decay and inactivity — ladder hygiene when players stop queuing
- Match lobby and pregame systems — dodge detection before commit