Recommendation
Put authoritative rules in Game Mode, shared replicated match state in Game State, replicated per-player state in Player State, and non-replicated cross-map session state in Game Instance.
Compare the options
Game Mode
Choose when
- Server-only rules decide joining, spawning, pausing, or win conditions.
- The logic is authoritative and belongs to the current world.
Tradeoffs
- Game Mode exists only on the server.
- It is recreated with the world.
- Blueprint
- Use Get Game Mode and a Game Mode Blueprint derived from AGameModeBase or AGameMode.
- C++
- Derive from AGameModeBase. Use AGameMode when its match state machine is needed.
Game State
Choose when
- Every client needs world or match state.
- The data includes match phase, team score, objectives, or synchronized server time.
Tradeoffs
- The state replicates to clients.
- Secret server-only values do not belong here.
- Blueprint
- Use Get Game State and a Game State Blueprint.
- C++
- Derive from AGameStateBase or AGameState and pair it with the matching Game Mode family.
Player State
Choose when
- Data belongs to one player and must replicate.
- The data needs to survive Pawn replacement or respawn.
- Other players may need to see the value.
Tradeoffs
- Player States are available through the Game State player list.
- Private owner-only data needs a different replication design.
- Blueprint
- Use Get Player State and a Player State Blueprint.
- C++
- Derive from APlayerState.
Game Instance
Choose when
- Process-local state must survive map travel.
- The data coordinates the current game session on one machine.
Tradeoffs
- Every machine has its own non-replicated Game Instance.
- The data is lost when the process exits.
- Blueprint
- Use Get Game Instance and cast to the project Game Instance type when needed.
- C++
- Derive from UGameInstance or move modular services into UGameInstanceSubsystem.
Requirements
All four framework classes are built into Engine. Multiplayer state still needs explicit replication where applicable.
Example
Game Mode validates a capture. Game State replicates team scores. Player State stores each player's captures. Game Instance remembers the locally selected playlist across map loads.