I’ve been using Unity for the best part of ten years. During that time, I’ve developed several mobile games (iOS and Android), and a major PC game. There’s a lot to love about Unity, but for our next project, we’ve decided to switch to Unreal. Have we lost the plot?
Our major concern is where the future lies with Unity. For the past few years, the Unity folks have been showing off some really wild and groundbreaking stuff with their Data-Oriented Technology Stack (DOTS). This is a data-oriented approach to creating games as opposed to object-oriented. In theory, it makes sense – blocking similar data items together and processing them together. If you sit through the various tutorial videos, you’ll even begin to believe it makes sense. It’s mind-bending, though. Personally, I’m looking at unlearning 25-30 years of object-oriented thinking, and that isn’t going to happen overnight.
What also isn’t happening overnight, is Unity’s own adoption of this new tech. Various components are available in various states of readiness and completeness, but it also requires a rethink to their entire editor. All this would be Coming Soon™.
We already delayed the start of the new project for a year, due to the needs of another project, but once we resumed, we found ourselves asking the same questions. Do we continue with using Unity Classic, the existing Unity editor and non-DOTS approach to making the game that Unity folks are saying will soon be obsolete, or do we drop our eggs into the shiny DOTS basket, struggling with preview edition packages, incomplete and fast changing APIs, and general uncertainty about when the whole thing will be available for production use.
Or do we jump to an alternative engine, like Unreal?
When this was suggested, several of the artists literally bounced with glee. It seems they haven’t been entirely happy with the Unity pipeline, particularly those who have worked with Unreal before. As a programmer, I was kind of… meh. I didn’t really have strong feelings either way. For me, the major difference is the language, switching from C# back to C++. It’s been about 12 years since I did any major C++ work, and given the choice, I much prefer C# anyway.
However, Unreal’s roadmap seems a little more reliable. We’re looking at about 3 years of development for this project, followed by – hopefully – many, many years of ongoing expansion and support. We don’t want to set off using tech that ends up stuck with a legacy version of the engine because updating would require a substantial rewrite. And so, the decision was made.
We may or may not end up regretting this. We may just be swapping a heap of Unity issues that we know about for a mountain of Unreal issues that we’ve yet to discover late on a Thursday evening after a week of searching through server logs.
The immediate problem is here’s a brand new editor/engine, figure out how to use it. So I thought I’d make some notes here on some of the basics, things that I’ve had to figure out as a Unity dev confronted with Unreal.