June 12

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.

Target Audience: Programmers

Level: Intermediate

Takeaways:

* 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:

  • Reflection system

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.

  • Garbage Collection

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.

  • Components vs SCS_Nodes

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.

  • Accidentally GC-ing a critical object in PIE → solution

(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.

Other related interesting topics:

  • Blueprint Compilation Pipeline – From Graph to Bytecode
  • Editor vs Runtime behavior of assets and classes
  • A debug tool that visualizes GC reference chains

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.

Inside of Blueprint