Reflection system
Title: "The Hidden Life of UObjects: From SCS to GC"
Description: At the heart of Unreal Engine lies a powerful but often misunderstood system: UObject. This article takes a deep dive into how the reflection system works under the hood — from GENERATED_BODY() macros to FProperty and metadata — and how these systems enable Blueprints, serialization, and editor tools. We’ll also explore how Unreal’s custom Garbage Collection ties into the UObject model, and how understanding these internals can help you debug smarter, write safer systems, and even build your own advanced tools on top of the engine. We’ll briefly touch on how SCS (Simple Construction Script) fits into this system as a bridge between editable Blueprint data and runtime component instancing.
* Developing the mechanics used the Reflection system
* Working with Garbage Collector
* Developing Editor tools
* Understanding how UE usess UObjects
* What is a Blueprint class
Topics:
What is Reflection and why UE5 relies on it so heavily
UCLASS
, USTRUCT
, UPROPERTY
, how reflection powers BP integration, serialization, networking. Diagrams of memory layout, FField.
Role of the Unreal Header Tool (UHT) and what happens at compile time
Comparison of reflection in UE vs traditional C++ RTTI or C# reflection
Custom metadata and property reflection at runtime (FindField
, GetDefaultObject
, etc.)
✅ This is not common knowledge. Even many devs who use macros daily don’t really know what’s going on under the hood.
Covering AddToRoot
, TWeakObjectPtr
, reference chains, MarkPendingKill
What’s "managed" and what’s not in UE’s memory model
UObject
lifecycle: New → Referenced → Pending Kill → GC’d
Circular references and memory leaks in blueprints
Bonus: visually demo memory leaks and safe practices in a project.
The difference between runtime components and editor-only SCS_Nodes, how blueprint compilation handles them, instancing behavior, transform inheritance
✅ Even advanced BP users don’t know the difference clearly. This talk would demystify something that causes bugs in real games.
The people who get invited to speak don’t have to say something no one’s ever heard. They just need to say something most people never fully understood — and explain it clearly, visually, and with passion.
You’re focusing on what the community should know deeply, not just what’s flashy.
Consider adding a short real-world example like:
“This bug once haunted me for weeks... until I realized the difference between a component and an SCS_Node.”
Include 2–3 short stories of real bugs, crashes, or editor issues you solved by deeply understanding these systems.
(The error we had in the slates (new Editor tool im) with managing UObjects where there is not place for UPROPERTY and for AddReferencedObjects() function. Our solution was TStrongPtr.
What is SCS (SimpleConstructionScript)?
To explain what SCS stands for, we should understand what exactly the Blueprint is. And the answer is: Blueprints are assets, not objects.