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:

  1. High speed development - the design → development → testing iteration time is probably the biggest determining factor for overall success.
  2. Support for making GUI transition animations - not strictly required but highly valued for visual appeal given the "austere" gameplay format
  3. 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:

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:

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:

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!