Engine architecture map
Every later doc in this section assumes you can place a new piece of knowledge somewhere on a map.
"Where does this subsystem sit relative to the gameplay framework?" is the question you'll ask
constantly once you're past the tutorial stage — a UActorComponent that talks to physics behaves
differently from one that talks to rendering, and neither behaves like a Subsystem that talks to
neither. Without this map, every new concept looks like a flat, undifferentiated pile of UE-specific
jargon.
Mental model: layers, not a flat list
Unreal Engine's C++ is organized in dependency layers. Lower layers know nothing about higher ones —
Core has no idea Engine exists, and Engine has no idea your game module exists. Your gameplay
code sits at the top, consuming subsystems it does not own.
Read the diagram as: Core gives you UObject, reflection, and containers; Engine builds
World/Level/Actor plumbing on top of that; the subsystems (rendering, physics, animation,
audio, UI, networking) are peers that the engine layer wires together per-Actor via components; the
gameplay framework is the set of base classes (AGameModeBase, APawn, ACharacter,
APlayerController, and friends) that give those pieces game-specific meaning; and your game is
Blueprint and C++ classes derived from the framework.
How the gameplay framework threads through the subsystems
The gameplay framework doesn't compete with rendering, physics, or animation — it's the layer that directs them per-actor:
- A
APawn(or its common subclass,ACharacter) is the physical stand-in for a player or AI in the world. It owns components — a mesh component talks to rendering, a collision/movement component talks to physics, a skeletal mesh + anim instance onACharactertalks to animation. - A
AController(APlayerControllerfor a human,AAIControllerfor AI) is non-physical — it has no location of its own in the world and exists purely to possess a Pawn and feed it input or decisions. AGameModeBasespawns and ownsAGameStateBase, which replicates game-wide state to every client;AGameModeBaseitself is server-only and never replicates.- The physics subsystem (built on Chaos) handles collision, raycasts/traces, destruction, and
cloth/hair simulation underneath whatever component requested it — a
UPrimitiveComponentasks physics to simulate; it doesn't implement simulation itself. - Networking/replication cuts across all of the above rather than sitting beside them: any
AActorcan be marked to replicate, andUPROPERTY(Replicated)fields on it are what synchronizes state across the wire.
None of these subsystems are things you instantiate directly day to day — you configure them through the Actor/Component API and let the engine layer drive them each frame.
Where subsystems (the C++ kind) fit
Don't confuse "engine subsystems" in the architectural sense above with USubsystem — a specific C++
base class for auto-instantiated singleton-like objects scoped to an Engine, GameInstance,
World, or local player. A UGameInstanceSubsystem is a good home for cross-level manager code that
doesn't belong on any one Actor. That mechanism is covered in
Subsystems; this page is about the bigger architectural picture,
not that one class family.
Frame-by-frame tick ordering between subsystems (when physics runs relative to animation and rendering within a single frame) is engine-version- and project-setting-dependent. Not confirmed against 5.7 in the sources consulted — verify against your engine version and project tick group configuration before relying on ordering assumptions.
Gotchas
Code that reaches "down" past the gameplay framework — an AActor subclass calling low-level physics
or rendering APIs directly instead of going through its components — is a maintenance trap. It breaks
the composability the component system exists for, and the next person to touch that Actor won't know
where to look for the behavior.
AGameStateBase exists specifically because AGameModeBase is server-only and never replicates. If
you put state a client needs to read (score, match phase, player list) on GameMode instead of
GameState, it will work in a single-player PIE session and silently fail to reach clients the moment
you test networked. See Game mode and game state.
See also
- What is Unreal Engine 5? — the module/editor/runtime picture this map builds on.
- Mastery roadmap — the order to actually learn these layers in.
- Framework overview — the gameplay framework classes in depth.
- UObject and reflection — what
Core/CoreUObjectactually provide. - Epic's Gameplay Framework overview — authoritative source for the framework classes.