RL_Scoreboard

by Punkster
RL_Scoreboard

Summary

Scoreboard for Arma Reforger PVP servers
Kills, headshots, teamkill, assists, K/D, kill streaks, captures and defends tracking.

Description

=\=\=\=\= FEATURES =/=/=/=/=

Stats tracked per player:
- Kills (with a separate headshot counter)
- Assists (30 second damage window)
- Deaths
- Teamkills
- K/D ratio (live computed)
- Kill streak (current and best of the round)
- Base captures
- Base defends
- Total score (with configurable multipliers)

Scoring system:
- Configurable point values through component attributes
- Multiplier system for objective types (HQ, control point, relay, regular base)
- Headshot bonus added on top of the base kill reward
- Teamkill penalty to discourage friendly fire
- AI kills tracked separately from player kills

UI:
- Split-panel layout (friendly team and enemy team)
- General Stats recap under the table with per-team totals
- Recap shows Kills, Assists, Deaths, TK, HeadShots, K/D and Kill Streak per team
- TK column colored by amount (white, orange, red)
- Top performer marker (gold #1 on the team leader)
- Local player row highlighting
- Squad member tint for squadmates
- Platform icon next to each player name
- [Staff] prefix for server administrators
- Faction flags at the screen corners
- White separators between stat columns

Server-side architecture:
- Component attached to the GameMode for central score management
- Player data replicated to all clients
- Save versioning for forward compatibility
- Periodic cleanup of stale assist entries
- Damage hook for accurate attacker attribution
- Base contest tracking with defender awareness

Input:
- Toggle the scoreboard with an action binding
- Key can be changed in the chimera input config


=\=\=\=\= TECHNICAL DESIGN =/=/=/=/=

Assist tracking:
Damage events are stored in a small set of time buckets covering the assist window (30 seconds split into 6 buckets of about 5 seconds each). New hits go into the current bucket, and old buckets are cleared as time moves forward instead of checking each hit individually. On death, the mod reads the attackers stored for that victim across the active buckets, removes the killer, and the rest are credited with an assist. This keeps assist handling cheap even when a lot of damage is flying around. The only side effect is a small jitter on the window edge (about 5 seconds out of 30), which is not noticeable in play

Defend tracking:
Instead of keeping a defender list per base, the mod tracks active defense stints indexed by player. Each stint stores the base being defended, the original owner faction and the time it started. The same player on the same base just updates their existing stint, and a player moving to another base updates it in place rather than adding a new one. When a contest resolves, the mod checks which stints pointed at that base. A separate small cache holds bases flagged as under attack before any defender arrives, kept apart from the player stints. This scales with the number of active defenders rather than the number of contested bases.

Damage classification:
Headshot detection, AI versus player checks and faction matching are kept in a separate static helper. The scoring code calls into it rather than doing these tests inline, which keeps the scoring logic readable and lets the helper be changed on its own

Base radius:
The capture radius for each base type (HQ, control point, relay, fallback) is kept in its own static class. The defend zone uses a 1.3x radius on top of the capture radius, so defenders are credited over a slightly wider area than the strict capture circle.

Replication:
Per-player data is wrapped in a replicable struct with a save version tag. The component sends updates per stat type rather than full state syncs, to keep bandwidth low on populated servers


=/=/=/=/= COMPATIBILITY =\=\=\=\=

- Works with Conflict campaign mode (ONLY 2 FACTIONS)
- Compatible with most server modifications
- No conflicts with vanilla scoring expected


=*=*=*=*= WHAT THIS MOD DOES NOT DO =*=*=*=*=

- Does not modify vanilla score calculation
- Does not interfere with mission objectives
- Does not store any persistent data outside the round
- Does not send data outside the server


=|=|=|=|= LICENSE =|=|=|=|=

This work is licensed under the Arma Public License Share Alike (APL-SA).
https://www.bohemia.net/community/licenses/arma-public-license-share-alike

License

Arma Public License Share Alike (APL-SA)

Rating
100%
Version
2.2.5
Game Version
1.7.0.41
Version size
31.33 KB
Downloads
598
Created
16.05.2026
Last Modified
29.05.2026
ID
69606D74389832FD