What Surprised Me About Switching from Unity to Unreal
I'd been using Unity for two years when I decided to learn Unreal Engine for the Infinite Runner project. Here's what I expected, and what actually surprised me.
What I Expected
- A harder learning curve
- "Better" graphics automatically
- Everything to be different
What Actually Happened
The Actor System Is Basically a MonoBehaviour
Unity has MonoBehaviour. Unreal has AActor. Both are components attached to game objects that run every frame. The mental model transferred almost directly.
What is different: Unreal's ownership model. In Unity, game objects get destroyed and the garbage collector cleans up. In Unreal, you manage lifetime more carefully — TObjectPtr<>, weak references, and understanding when the engine owns vs. you own.
I hit my first crash because I held a raw pointer to an actor that got destroyed. Unity never taught me to think about this.
Blueprints First Was the Right Call
Every guide I read said "learn C++ first, Blueprints are a crutch." I disagree — at least for a complete beginner to Unreal.
I prototyped the entire Infinite Runner movement system in Blueprints in a week. Then I ported it to C++ over the next week. Having a working Blueprint reference made the C++ translation much cleaner — I wasn't learning the engine API and solving gameplay design problems simultaneously.
Blueprints are also excellent for tweaking values. I kept the difficulty curve tuning in Blueprints (exposed variables) so I could adjust without recompiling.
Compile Times Are Real
Unity is near-instant iteration. Unreal C++ builds take 30–120 seconds depending on change scope. This changes how you work:
- Batch changes before compiling
- Use hot reload where possible
- Keep gameplay-tuning values in Blueprints or DataAssets so you're not compiling for value tweaks
After two weeks I stopped noticing the wait. But the first week was painful.
The Documentation Is... Different
Unity's documentation is clearly written for people learning the engine. Unreal's documentation assumes you already know what you're looking for.
The community around Unreal is great, but it's weighted toward visual/Blueprint content. Finding C++ answers sometimes required reading source code or asking on the Unreal forums directly.
Six Months In
I'm comfortable in both engines now. The things that felt alien in Unreal — the actor lifecycle, the build system, the C++ conventions — are now just normal.
The bigger lesson: the fundamentals transfer. State machines, object pooling, event systems, data separation — none of that is engine-specific. Understanding why patterns work makes picking up new engines much faster.
Yisi Liu — building the Infinite Runner in Unreal Engine 5.
