Godot → Unity
January 18, 2021
In my previous post, I decided to consider migrating from Godot to Unity and Unreal for Automaton development. This post details my investigation and decision. But how would I make such a decision?
Evaluation Criteria
I've identified three key differentiators for evaluating a game engine for Automaton:
- High speed development - the design → development → testing iteration time is probably the biggest determining factor for overall success.
- Support for making GUI transition animations - not strictly required but highly valued for visual appeal given the "austere" gameplay format
- Support for making custom 2D styling effects - again, not strictly required but I want to be able to apply custom 2D visual effects on GUI elements to provide very clear visual feedback to the player
Unreal Engine Investigation
To investigate Unreal Engine (version 4.20), I read parts of the official documentation and blog posts about the engine. I completed an FPS game development tutorial to get comfortable with the editor and development environment. I also used UI tutorials to create a sample 2D scene using the editor combined with C++.
Overall, Unreal feels a bit less polished than Unity. Having access to the source is a huge plus for rapidly understanding the existing system. But the codebase is pretty large, so it doesn't seem that easy to customize the engine itself. And if you don't need to customize the engine (or can't reasonbly afford to do so) then it seems to me that the Unity developer experience is cleaner and simpler.
The following is a summary of my findings as it relates to Automaton:
- Unreal Engine has good support for creating flexible 2D layouts with 2D animations in the editor
- Unreal Engine does not have a good way of supporting post-processing effects for GUIs (although Unity does)
- Unreal Engine does not offer ways to customize the rendering pipeline for GUIs
- Unreal Engine does have nice support for Xcode integration which makes play-testing much faster (in Godot, you must recompile and relaunch the editor)
- Unreal Engine documentation leaves a lot to be desired. Surprisingly, lots of developers just read the Unreal source code as part of their development workflow
Most importantly, my development speed was somewhat hampered. I'm pretty new to Unreal Engine and there seems to be a lot of complexity without great documentation to serve as a guide. I think the learning ramp up time for me could be considerable.
Unity Investigation
I've got several years of experience with Unity (starting way back in 2010). But the last time I used it (in 2018), I found that a lot had changed since I had previously developed with Unity. I was expecting more changes still and that's exactly what I found. However, many of the changes were very positive. The new Editor UI is very nice and feels more responsive. The documentation is still pretty good. Its far more complex than it used to be (and its far more complex than Godot) but its organized well enough to limit confusion and churn.
To pick up on many of the newer aspects of Unity, I read about the new UI input system. I read about the new Universal Rendering Pipeline (URP) and the Scriptable Rendering Pipeline (SRP). I also had to freshen up on the new-ish Animator system (which I've used before but not extensively).
The following is a summary of my findings as it relates to Automaton:
- Unity feels a bit more developer-friendly than Unreal Engine, though its much more complex than Godot
- Unity has excellent support for creating 2D layouts with animations in the editor
- The new Unity rendering pipeline system is positively dreamy compared to what it used to be
- It's snappier than I remember and its definitely less computationally intensive when compared with Unreal Engine
Most importantly, development speed is better for me with Unity. More learning is required than what I needed with Godot but more functionality is supported out of the box too.
Final Decision
I've organized all of this research in support of my stated decision-criteria above:
Criterion | Godot | Unreal | Unity |
---|---|---|---|
Development Speed | Good | Bad | Good |
GUI Animation System | Bad | Good | Good |
Custom 2D Effects | None | Good | Good |
And based upon these findings, I've decided to pivot from Godot to Unity with a custom Scriptable Rendering Pipeline (SRP). Stay tuned for more to come!