Score Manager

Updated May 23, 2026

The Score Manager is the central scoring system for multiplayer sessions. It tracks player stats, calculates final game score from multipliers, stores team scores, supports win-based and aggregate scoring, shows score popups, and exposes events for scoreboards and game modes.

Player Manager is required. Set up Player Manager first. Score Manager binds to Player Manager kill, death, join, and leave events. For shared setup guidance, see the Migration Guide and Integration Guide. Use the System Atlas to look up functions, variables, events, components, and ownership references.

Related Video

Some videos may have been recorded before V4. The same principles still apply, but asset names, component names, and folder locations may differ. Use this written page and the current V4 names as the source of truth.

  • Player Manager for Team Games Devlog
    Play

System Role

Score Manager provides one source of truth for player and team scores.

  • Creates a score entry when a player joins.
  • Tracks kills, deaths, assists, objectives, and custom score tags.
  • Calculates Final Game Score from raw stat counts and multipliers.
  • Tracks team scores for team modes.
  • Supports Win-Based and Aggregate scoring.
  • Broadcasts score change events for UI, scoreboards, and game mode win checks.
  • Shows client-side score popups through AC_PC_Score.

Recommended GameState component order from the source document:

  1. AC_SessionManager
  2. AC_GS_TeamManager if using team scores
  3. AC_GS_ScoreManager
  4. AC_PlayerManager

Core Components

AC_GS_ScoreManager

AC_GS_ScoreManager lives on the GameState and owns server-authoritative score state. It tracks player score arrays, team score arrays, score multipliers, winning score, automatic Player Manager events, and manual scoring calls.

ResponsibilityDetails
Player scoresTracks kills, deaths, assists, objectives, and custom score tags per player.
Team scoresStores team scores in an integer array matching Team Manager team indexes.
Final Game ScoreCalculates point totals from raw score counts and multipliers.
Automatic trackingBinds to Player Manager kill/death events and creates score entries when players join.
Manual scoringSupports adding score to players or teams from game mode logic.
EventsBroadcasts OnPlayerScoreChanged, OnTeamScoreChanged, and OnWinningScoreChanged.

AC_PC_Score

AC_PC_Score lives on the PlayerController and handles per-player score popups. It displays changes in Final Game Score, such as +100, -10, or +200, on the local player’s screen.

Score Data Structures

F_PlayerScore

F_PlayerScore stores one player’s score state.

FieldPurpose
Player NameName from PlayerState/GetPlayerName.
ScoresArray of F_Single_Score entries.
Game ScoreCalculated final game score.

F_Single_Score

F_Single_Score stores one raw score stat.

FieldExampleMeaning
TagScore.KillsGameplay tag identifying the stat.
Value10Raw count, not final points.

Standard score tags include Score.Kills, Score.Deaths, Score.Assists, Score.Objectives, Score.Headshots, Score.DamageDealt, Score.Revives, and Score.ObjectivesCaptured.

Team Scores

Team scores are stored in an integer array. The index matches the Team Manager team index.

  • TeamScores[0]: Team A score.
  • TeamScores[1]: Team B score.
  • TeamScores[2]: Team C score.

If Team Manager deletes a team, Score Manager removes the matching team score index.

Score Multipliers

Score multipliers convert raw score counts into Final Game Score points.

Game Score Multipliers screenshot

Multiplier sources:

  • Game settings from DA_GameMode_Defaults are the primary source.
  • Predefined multipliers are fallback values.
  • Manual override can be used for special modes.

Example multipliers: Score.Kills = 100, Score.Deaths = -10, Score.Assists = 50, Score.Objectives = 200.

Example calculation:

Final Game Score = (Kills * Kill Multiplier) + (Deaths * Death Multiplier) + (Assists * Assist Multiplier)

For 15 kills, 8 deaths, and 5 assists with multipliers 100, -10, and 50, the score is 1670.

Scoring Types

Scoring Types screenshot

TypeUse forBehavior
Win-Based ScoringDomination, Search and Destroy, Capture the Flag, objective modes.Game Mode manually adds points to teams. Individual stats can still display on the scoreboard.
Aggregate ScoringTeam Deathmatch, Free for All, score-from-player-stats modes.Team score is calculated from the sum of player Final Game Scores.

Scoring type can be configured through game settings, manual configuration, or Session Manager settings, with game settings recommended where available.

Score Tracking

Score Tracking screenshot

Score Manager binds to Player Manager events:

  • OnPlayerJoined: create a new F_PlayerScore entry and initialize scores to 0.
  • OnPlayerKilledPlayer: increment Score.Kills, recalculate Final Game Score, update aggregate team score if needed, broadcast score events, and show popup.
  • OnPlayerDied: increment Score.Deaths, recalculate Final Game Score, update aggregate team score if needed, broadcast score events, and show popup.

Assist tracking is marked in the source as dependent on assist system support.

Adding Scores

Add Score to Player

Adding Score to Player screenshot

Use player scoring when an action belongs to a specific player, such as kills, assists, objectives, revives, or custom score tags.

  1. Find the player’s score entry.
  2. Find or create the matching score tag.
  3. Increment the raw score value.
  4. Recalculate Final Game Score.
  5. Update aggregate team score if aggregate scoring is active.
  6. Broadcast OnPlayerScoreChanged.

Add Score to Team

Adding Score to Team screenshot

Use team scoring for win-based modes where the game mode directly awards team points, such as control point captures, flag captures, or Search and Destroy round outcomes.

  1. Get the team index.
  2. Add the score amount to TeamScores[TeamIndex].
  3. Update the winning score if needed.
  4. Broadcast OnTeamScoreChanged and OnWinningScoreChanged when relevant.

Final Game Score and Team Score

Final Game Score Calculation screenshot

Final Game Score is calculated from each F_Single_Score value multiplied by its configured score multiplier. The score is recalculated whenever the player’s raw scores change.

For team scores:

  • Win-Based: Team score changes only when game mode logic calls team scoring functions.
  • Aggregate: Team score is recalculated from all team members’ Final Game Scores.

Winning Score tracks the current highest team or player score, depending on the scoring mode and game mode needs.

Reset Behavior

Scores reset between games. In round-based games, score behavior depends on the game mode implementation. Some modes reset scores per round, while others accumulate across rounds and track round wins separately.

Events and Utility Functions

Event or functionUse
OnPlayerScoreChangedUpdate player score UI, popups, scoreboard rows, and player-specific displays.
OnTeamScoreChangedUpdate team scoreboard and let game modes check win conditions.
OnWinningScoreChangedNotify UI or game mode logic that the current leader changed.
GetAllPlayerScoresReturn player score data for UI or gameplay queries.
FindPlayerScoreIndexFind a player’s score entry.
FindScoreInScoreArrayFind a score tag entry inside a player’s scores.

Integration Notes

  • Player Manager: required for player join, kill, and death events.
  • Team Manager: provides team structure, team indexes, and member lists for team scores.
  • Game Mode System: uses player/team scores for win conditions and decides whether to use win-based or aggregate scoring.
  • Session Manager: can provide game settings and scoring type configuration.
  • Scoreboard: reads player scores, team scores, winning score, and score-change events.

Workflows

Set Up Score Manager

  1. Set up Player Manager first.
  2. Add AC_GS_ScoreManager to the GameState above AC_PlayerManager.
  3. Add AC_PC_Score to the PlayerController for popups.
  4. Add AC_GS_TeamManager if team scoring is used.
  5. Configure scoring type and score multipliers.
  6. Test player join, kill, death, manual scoring, team score updates, and UI events.

Add Custom Score Tags

  1. Create gameplay tags such as Score.Headshots, Score.DamageDealt, Score.Revives, or Score.ObjectivesCaptured.
  2. Add matching multipliers through game settings or fallback configuration.
  3. Call player scoring from the relevant gameplay system.
  4. Verify Final Game Score and scoreboard output.

Implement Score UI

  1. Create a score widget such as BP_ScoreDisplay.
  2. Bind to OnPlayerScoreChanged, OnTeamScoreChanged, and OnWinningScoreChanged.
  3. Read player scores through utility functions.
  4. Display raw stats, Final Game Score, team scores, and current leader.

Summary

AC_GS_ScoreManager owns server-side scoring. AC_PC_Score handles local score popups. Player Manager provides the events that drive automatic score tracking, Team Manager provides team structure for team scores, and Game Mode System uses score changes to determine winners.