A repeatable material authoring workflow
Every material graph you compile from scratch is a new shader permutation the engine has to build, and
Every material graph you compile from scratch is a new shader permutation the engine has to build, and
Getting an actor to exist on every client, and getting its properties to match the server's values, are
Unreal favors composition over inheritance for actor behavior: instead of a deep class hierarchy for
Every AActor — GameMode, Pawn, a static prop, your custom gameplay actor — goes through the same
AAIController is the non-player analog of APlayerController — it possesses a pawn and is the thing
An Animation Blueprint looks like one graph in the editor but is actually two graphs with different jobs,
A prefix typo or an inconsistent folder means a designer searches the Content Browser by scrolling
Every mesh, texture, material, and data table in your project is a UObject serialized into a
This is the difference between a game that loads what it needs and a game that loads everything it
Why this matters
Two separate systems decide what a sound sounds like once it's playing: attenuation decides how loud,
Why this matters
Every gunshot, footstep, and music cue in a UE5 project passes through the same pipeline before it
Unreal ships an automated testing framework that runs inside the engine itself — no external test
A Behavior Tree (UBehaviorTree) is a re-entrant tree of nodes that gets re-evaluated every tick from
Not every piece of logic belongs on an object. A damage falloff formula, a string-formatting helper, a
"Blueprint is slow" is the kind of claim that's technically true and mostly useless. It's true in the
The dropdown in Visual Studio's toolbar (DebugGame Editor, Development Editor, Shipping, ...)
Almost every shipped Unreal project is built on the same shape: a small number of C++ classes that
Every doc in this section assumes a specific split: systems and data live in C++; composition and
Attach a UCameraComponent straight to a character's mesh and two problems show up immediately: the
Chaos is Unreal 5's physics and destruction engine, replacing PhysX. Most gameplay code never calls into
UCharacterMovementComponent is the single biggest reason ACharacter is worth using over a bare
Every "why does my trace hit nothing" or "why does my character walk through a wall" bug traces back to
Everything covered so far in this folder — Details customizations, factories, Editor Utility Widgets —
CommonUI is Epic's plugin for controller-friendly, platform-portable UI, built on top of UMG rather than
Unreal doesn't have one settings file — it has a layered stack of .ini files that get merged at engine
The first cook on a fresh machine can take hours; the same project's cook on a machine with a warm
A crash on a player's machine, with no debugger attached and no way to reproduce it locally, is only
A UDataAsset subclass is usable the moment you compile it — but "usable" and "designer-friendly" are
Wall-running, climbing, grappling, and swimming-that-isn't-MOVE_Swimming all eventually lead you to
Why this matters
Collision and physics tell you that something touched, but they don't know what "damage" means — that's
Subclassing gets you far — see C++ base, Blueprint derived — but it
Unreal's containers, reflection system, and string types don't display usefully in a stock debugger —
Replication and RPCs describe how actors talk to each other once a game session exists. Dedicated
Delegates are Unreal's answer to "call this function later, without the caller knowing what type owns
Most projects start single-player, or single-player-first with multiplayer as a maybe-someday. That's a
The default Details panel — the one every UCLASS and USTRUCT gets for free — is a generic property
IDetailCustomization and a hand-rolled Slate widget are the right tool when you're extending an
Every custom editor tool you write — a Details panel customization, a custom asset factory, an Editor
Every later doc in this section assumes you can place a new piece of knowledge somewhere on a map.
Why this matters
Enhanced Input replaced the old InputComponent axis/action mapping system as UE5's standard input
A Behavior Tree decorator can ask "is there a target?" but it can't cheaply ask "which of these fifty
Unreal C++ has a house style, and it's more than cosmetic: the type-prefix convention (U, A, F,
Every specifier you attach to a UPROPERTY or UFUNCTION is a decision about who gets to see and
Unreal doesn't use std::string. It has three distinct string types — FString, FName, and
GameMode gets destroyed and recreated on every level load; Pawns die and respawn; even
AGameModeBase and AGameStateBase look like they should be one class — they're set up together, they
Why this matters
Why this matters
Why this matters
Why this matters
Every gameplay tutorial throws GameMode, PlayerController, Pawn, and PlayerState at you in the
Why this matters
UObjects are not managed with new/delete or reference counting — they're managed by a tracing
Why this matters
Why this matters
Why this matters
Why this matters
AHUD is the older, canvas-based counterpart to UMG: a per-player actor whose job is drawing directly
Motion Matching aside, most of the "make the feet actually touch the ground" and "reuse this animation
The import dialog you click through in five seconds sets compression, LOD, and streaming behavior that
Everything downstream — compile times, IntelliSense accuracy, whether Live Coding works at all —
Why this matters
This knowledge base is reference material, not a tutorial — it assumes you're building something and
Why this matters
Why this matters
The single biggest iteration-speed lever in Unreal C++ development is not touching the "restart the
Every piece of text a player reads has to survive translation into other languages without a code change,
Unreal doesn't use C++ exceptions — throwing is disabled across the engine, and Epic's own guidance is
Why this matters
This section has 18+ folders behind it by the time it's complete, and none of them are meant to be
Why this matters
Why this matters
MetaSounds replace Sound Cues as UE5's procedural audio graph system. Where a Sound Cue graph runs once
A module is the compilation unit; a plugin is the distribution unit. Confusing the two leads to two
UAnimMontage is how you play a one-off animation — an attack, a reload, a hit react — outside the
Motion Matching flips the animation-authoring problem around: instead of hand-building a state machine
If a networked character waited for a server round-trip before every step responded on screen, the game
Why this matters
Every AI move-to call, every EQS pathfinding test, every MoveTo on an AAIController ultimately
Every networking bug in Unreal traces back to one question: which machine actually owns this piece of
Why this matters
Building your project in Visual Studio and packaging it are different pipelines that happen to share a
ACharacter is a subclass of APawn, and in practice most projects reach for ACharacter by default
A single simulating rigid body falls, bounces, and rolls, but it can't hinge, swing on a chain, or hold a
APlayerController and APlayerState both represent "the player" in some sense, and both persist
Why this matters
Why this matters
Knowing which folders in a project are source of truth and which are disposable build output is
Every topic in this folder — debugging setup, automated tests, config layering, save versioning, packaging,
The default replication path re-evaluates, for every connection, whether every replicated actor is still
Replicated properties are good at "this value changed and stays changed." They're the wrong tool for
Why this matters
Why this matters
A save file written today has to keep loading correctly after every future patch, DLC, and refactor for
Every animation system in Unreal — AnimGraph, Control Rig, IK Retargeter, Motion Matching — is built on
Slate is the immediate-feel, C++-only UI framework that UMG is built on top of. You will rarely write raw
Unreal projects mix hand-written C++ with large binary asset files and gigabytes of regenerable
Why this matters
State machines and blend spaces are the two workhorse node types inside an AnimGraph — one picks
StateTree is Epic's newer general-purpose execution graph — a hierarchical state machine that borrows
Why this matters
Every AnimBP is backed by a UAnimInstance, and pushing gameplay-state gathering into a C++ subclass of
Before subsystems existed, "I need one instance of this system, reachable from anywhere" meant a
Unreal ships its own container library instead of using std::unordered_map, and
Unreal interfaces look unlike anything in standard C++ because reflection needs a UObject-derived
Line traces, sweeps, and overlaps are how gameplay code asks the world a question — "what's in front of
Unreal has two entirely separate ownership systems, and they must never be mixed. UObjects are
UMG (Unreal Motion Graphics) is the widget system almost every UE5 project uses for menus, HUD overlays,
Unreal doesn't use a single monolithic compile step — it compiles per-module, and every module's
Unreal C++ compiles with the same compiler you'd use for any other C++ project, but a meaningful slice
UCLASS, UPROPERTY, and UFUNCTION look like ordinary C++ macros, but the code that makes them
Why this matters
Every gameplay class you write in Unreal — AActor, UActorComponent, your own UMyGameSubsystem
Unreal Engine 5 (UE5) is not one program — it is an editor, a runtime, and a large tree of C++
Why this matters
GetWorld() is one of the first functions every Unreal C++ developer learns, and one of the last ones