Skip to content

Gameplay Framework

Unreal's gameplay framework is one of the biggest differences from Unity.

Main Classes

Class Role Network Notes
GameMode / GameModeBase Match rules, spawning, class defaults Server only in networked games.
GameState / GameStateBase Shared match state Replicated to clients.
PlayerController Player control and input ownership Exists on server and owning client.
PlayerState Replicated player data Shared with clients.
Pawn Possessable actor Usually replicated if part of gameplay.
Character Pawn with movement system Common player and AI avatar type.
HUD Legacy HUD bootstrap or debug drawing Usually local UI-related role.
GameInstance App-wide persistent object Persists across level loads.
World Runtime world context Owns actors and level state.
Level Map content One world can contain one persistent level and streamed sublevels.

GameMode

Unity Version

The rough comparison is a server-authoritative game rules manager.

Unreal Version

GameMode decides:

  • default pawn class
  • player controller class
  • spawn rules
  • win and loss rules

Key Difference

Clients do not have authoritative access to GameMode in a networked match because it exists only on the server.

GameState

Put shared match data here when clients need to read it.

Examples:

  • remaining match time
  • team scores
  • round state

PlayerController

Use PlayerController for player intent and ownership-focused logic.

Examples:

  • mapping contexts
  • menu input mode
  • cursor handling
  • possession changes

PlayerState

Use PlayerState for replicated player data that should outlive a single pawn.

Pawn and Character

The pawn is what gets possessed. The controller is who gives the orders.

That separation is one of the most important Unreal design patterns to understand.

GameInstance

GameInstance persists across level transitions.

Use it for:

  • global services
  • session data
  • startup systems

Do not use it as a dumping ground for every gameplay reference.

World and Level

UWorld is the runtime world context. A level is map content loaded into a world.

This matters when you work with:

  • actor spawning
  • traces
  • timers
  • streaming

Common Mistake

A common trap is putting replicated, client-visible match data in GameMode. If clients need it, it usually belongs in GameState or PlayerState.