Guide
Game scoreboard and tab stats display systems explained
Harbor Arena's ranked beta shipped a minimalist combat HUD: a round timer, bomb icon, and a three-line kill feed. Team economy, alive counts, and per-player loadouts lived behind a settings-menu “Match info” panel that required a full-screen pause. In 5v5 tactical rounds where one player saving a rifle can swing a retake, playtest telemetry showed 63% of lost rounds within three points featured at least one player who did not know an ally was on an eco round or that two enemies were still alive. Post-match surveys blamed “bad comms,” but voice usage was average — the UI simply did not surface macro state fast enough.
The refactor added a hold-tab scoreboard: a translucent full-width overlay with mirrored team columns, sortable stat rows, economy and alive-status columns, and a toggle between current round and match totals. Macro-blindness events (wrong buy into a team eco, pushing while outnumbered) fell from 63% to 19% without changing economy rules or buy-phase math. A scoreboard is the structured roster view the kill feed cannot provide: who is alive, who is ahead, and what resources each side holds right now. This guide covers overlay FSMs, column schemas by genre, round versus match context, sorting and privacy rules, spectator variants, server sync, the Harbor Arena refactor, a technique decision table, pitfalls, and a production checklist.
What a scoreboard is (and how it differs from a kill feed)
The kill feed is an event log: eliminations in time order, optimized for glanceable combat awareness. The scoreboard is a state table: every player's standing, updated on discrete events (kills, deaths, objective ticks, economy changes). They solve different problems:
- Kill feed — “What just happened?” (sniper on B, teammate traded)
- Scoreboard — “Who is winning and with what?” (4v2 alive, enemy AWPer low on credits)
Competitive shooters almost always need both. Co-op PvE may ship scoreboard-only (damage leaderboards) with no feed. Battle royale often merges placement and kill counts into a single tab overlay during the match. Design the scoreboard as the authoritative macro HUD — not a menu buried off the combat loop.
Overlay FSM: hold, toggle, and round-end modes
Scoreboard input follows a small finite-state machine:
- Hidden — default combat; minimal persistent score chip optional
- Hold open — Tab / Select held; overlay visible, movement may continue or slow per genre
- Toggle pinned — optional accessibility mode; click outside or Tab again to dismiss
- Round interstitial — auto-show between rounds in round-based modes; full stats, no input required
- Match end — expanded view with MVP highlights, rank deltas, rematch vote hooks
Hold-to-open is the PC default for tactical shooters: players peek macro state for 1–2 seconds without leaving aim. Console titles often use tap-toggle because shoulder buttons are scarce. Never block movement on hold unless your genre is turn-based — frozen players die while reading columns.
Combat safety while open
Dim the world 10–20% behind the overlay but keep crosshair and threat silhouettes visible. Suppress scoreboard open during critical interactions (defuse channel, revive channel) or queue the open request until the channel ends. Ranked modes may disable scoreboard during the final 5 s of a bomb timer to prevent last-second economy scouting — document the rule so players trust the UI.
Column schema by genre
Columns should answer the questions your mode's macro loop asks. A useful default stack for 5v5 tactical shooters:
| Column | Purpose | Update trigger |
|---|---|---|
| Player name + status | Identity, party icon, mute flag, alive/dead/skull | Spawn, death, disconnect |
| Score / round wins | Mode primary win condition | Round end, objective tick |
| K / D / A | Combat contribution this context | Server-confirmed elimination events |
| Economy / loadout tier | Credits, buy status, primary weapon class | Buy phase commit, pickup |
| Ping / connection | Fairness signal for kick-vote and self-diagnosis | Rolling RTT average, 1 Hz refresh while open |
| Objective stat | Plants, defuses, zone time, flag captures | Objective FSM events |
Trim columns for smaller viewports: mobile builds may hide assists and ping, collapsing economy into a single icon (rifle / pistol / eco). TDM modes drop economy entirely and emphasize streak and score-per-minute. MOBA scoreboards add last-hits, hero level, and item cooldown summaries — still the same table pattern, different column contract.
Round vs match toggle
Round-based games need an explicit context switch:
- Round stats — K/D/A and economy since round start; resets on freeze time
- Match stats — cumulative performance; used for MVP and rank inputs
Default to round context while the round is live; show match totals on interstitials. Mixing them without labeling creates arguments (“Why does his K/D say 8?” when it is match cumulative during round 3).
Team layout, sorting, and readability
Mirror teams left and right (attackers vs defenders) or top and bottom (allies vs enemies) depending on aspect ratio. Keep your team on the side of the player's dominant hand if using horizontal split — right-handed mouse users read the left column faster when glancing from center screen.
- Sort default — alive players first, then score, then name
- User sort — allow click-to-sort on K, D, A, ping in lobby and post-match only; live round sort changes disorient teams
- Highlight self — persistent row tint for the local player
- Dead state — grey name, skull icon, optional killer arrow; do not remove row (slot awareness matters)
- Clan tags — truncate with ellipsis; full name on hover
Typography: monospace numerals for K/D/A columns so digits align. Minimum 14 px body on 1080p; scale with HUD safe zones. Color-code teams but add shape cues (triangle vs diamond) for color-blind presets.
Server sync and cheat resistance
Like the kill feed, scoreboard numbers must come from the authoritative simulation, not client kill confirmations. Batch stat updates on the same RPC channel as elimination commits to avoid rows showing a kill before the victim registers dead.
- Replicate a compact
PlayerMatchStatsstruct per player: score, K, D, A, economy, alive flag - Throttle ping display to integers; never expose exact opponent routing
- Hide enemy economy in modes where scouting is a skill; reveal only after round end or death spectate
- On disconnect, show “DC” badge and freeze stats; apply leaver policy consistently in the row
Anti-cheat note: scoreboard overlays are a common injection target for external radar cheats. Validate that client-only mods cannot add columns with hidden enemy positions — if you ship wallhack detection, scoreboard code paths belong in the signed gameplay build.
Spectator, broadcast, and streamer variants
Esports broadcasts need a director scoreboard distinct from the player overlay: larger type, sponsor-safe name filters, and optional stat columns (ADR, utility damage) hidden from live players to reduce clutter.
Streamer mode should anonymize enemy names in the table while preserving column structure. Tie anonymization to the same flag used by the kill feed so settings stay coherent. For spectator clients, allow delay buffers (6–10 s) on economy columns if your competitive integrity policy treats buy scouting as sensitive.
Harbor Arena refactor walkthrough
The beta buried macro state in a pause-menu panel — unusable during combat. Close-round losses clustered around economy mistakes: full buys into teammate ecos, AWPs dropped to dead allies who could not afford re-buy, and retakes taken 3v5 because alive counts were unclear from the feed alone.
Pass 1: Hold-tab overlay
- Default bind Tab (hold); 180 ms fade-in, instant release fade-out
- 5v5 mirrored columns with alive tint (full opacity alive, 40% dead)
- Columns: name, K, D, A, credits, primary weapon icon, ping
- Header chips: round score, time remaining, bomb carrier indicator
Pass 2: Round/match toggle and interstitial
- Small toggle top-center: Round | Match stats
- Auto-scoreboard 4 s between rounds during buy phase (dismiss on move input)
- MVP row highlight on round end using round-context K/D/A + objective contribution
- Enemy economy hidden during live round; revealed on round end and when spectating
Macro-blindness telemetry (wrong buy tier + push while outnumbered, tagged from replay review) dropped 63% to 19%. Round win rate in ranked stabilized without economy rebalancing — players simply coordinated buys off the same table.
Technique decision table
| Approach | Best for | Trade-off |
|---|---|---|
| Kill-feed-only (no scoreboard) | Arcade horde modes, very short TDM | No roster macro; team coordination suffers |
| Persistent mini-score chip | Mobile, casual 3v3 | Limited columns; tap for full table still needed |
| Hold-tab overlay (recommended tactical default) | 5v5 round shooters, bomb/defuse modes | Requires input bind; art for wide tables |
| Always-visible side panel | Spectator UI, slow-paced strategy | Steals horizontal FOV in fast shooters |
| Round interstitial only | Hardcore no-UI experiments | Players blind mid-round; high skill floor |
| Broadcast director board | Esports streams, LAN shows | Separate pipeline from player overlay |
Common pitfalls
- Pause-menu scoreboard — unusable under fire; Harbor's root mistake
- Mixing round and match stats — unlabeled cumulative K/D confuses callouts
- Freezing movement on open — players die reading economy
- Client-side stat increments — desync rows erode trust
- Showing enemy economy live — removes scouting skill unless intended
- Unreadable ping spikes — update too fast; use 1 s rolling average
- Removing dead players from table — breaks alive-count math at a glance
- No console layout — eight columns overflow 16:9 at 720p
Production checklist
- Define scoreboard FSM states: hidden, hold, toggle, interstitial, match end.
- List required columns per mode; cut mobile overflow columns explicitly.
- Implement round vs match stat contexts with visible toggle labels.
- Source all numbers from server authoritative events.
- Sort alive-first by default; grey dead rows without removing them.
- Highlight local player row; add party and mute icons.
- Policy enemy economy visibility per mode and competitive tier.
- Auto-show interstitial between rounds during buy phase.
- Wire streamer anonymization shared with kill feed settings.
- Load-test 12v12 chaos mode; verify table scroll and name truncation.
- Accessibility: color-blind team markers, scalable type, toggle-pinned mode.
- QA: verify stats match kill feed and end-of-round summary exactly.
Key takeaways
- Scoreboard = macro state table; kill feed = micro event log — ship both in competitive shooters.
- Hold-tab with movement is the tactical PC default; burying stats in pause menus fails under pressure.
- Round vs match context must be explicit and labeled.
- Economy and alive columns prevent coordination mistakes the feed cannot fix.
- Server-authoritative stats keep rows trustworthy for rank and kick-vote systems.
Related reading
- Kill feed and death recap systems explained — combat event log and personal death context
- HUD and heads-up display design explained — clutter budgets and safe zones
- Buy phase and economy round systems explained — credits, eco rounds, and anti-snowball
- Tactical shooter design explained — planning, lethality, and squad coordination