Why I moved on from Unity and refuse to use Unreal for personal game dev

Discover the challenges of using Unity and Unreal engines in game development, and why alternatives like Godot and Bevy may be the better choice for small teams and beginners in the field.

Why I moved on from Unity and refuse to use Unreal for personal game dev
Photo by Marvin Meyer / Unsplash

To begin, I’m a hobbyist game developer and I do not have professional training in this development realm.

If you’re new to my blog (welcome btw), I am a full-time software developer for a SaaS startup. During the day I mainly program in Dart using the Flutter framework, or sometimes Typescript if I'm venturing into the backend. While it's undeniable that this hands-on experience in software development has its perks, transitioning these skills to the world of game development is a whole different beast. Gameplay programming and design are unique fields with their own intricate challenges.

I’ve dabbled with Unreal but due to the size and bloat of the engine, I could not bring myself to use it as a hobbyist.

Through school and various side projects I've gained considerable experience with the Unity game engine — the most popular choice among solo developers and small studios. I’ve developed several virtual reality projects and mobile games in my time using the engine.

In 2022 I told myself that I’ll never touch Unity again. Coincidentally, this was around the same time the popularity of Godot began to surge, largely due to the anticipation building around the v4 release.

so why not unity or unreal?

Licensing

As previously mentioned, I’ve used Unity several times throughout my time as a developer — both as a student and a hobbyist. The first version of Unity I used was version 3 on my old laptop. Back then, several core features (such as real-time shadows) were locked behind the Pro paywall. While this was inconvenient, it didn’t overly bother me as the projects I was creating were either for school or just for fun.

The best picture I have of my old development laptop (grainy picture of 2013 Samsung laptop)
The best picture I have of my old development laptop (Samsung R580)

Unity 4 introduced a new pricing model, unlocking all the core engine features for the personal license. This current personal license required a Unity splash screen and had a revenue restriction of $100k per year. Additionally, the personal license does not allow you to publish for consoles, like the Nintendo Switch— for this you have to upgrade to the pro plan which starts at $2040 per year per seat. There are also other restrictions, but they are more geared towards enterprise and more specific features, like the Havok physics system or Unity Mars.

Unreal feels like night-and-day compared to the Unity licensing model. However, Unreal still has a royalty requirement for all revenues after $1 million USD during a year. While I know I’m never going to hit that requirement, I still don’t like the idea that a larger company is well within their right to change the licensing agreement whenever they wish if they aren’t making enough money.

Unreal is also advertised as open source, which is fantastic! Although the source code is too complex enough for the average user to actually understand and modify, but that’s beside the point. It is still there if decided you want to look through it, unlike Unity where you’re at the mercy of the Unity devs to fix engine issues.

Bugs

One thing that maintained consistent throughout my time using the Unity were the amount of weird tooling and engine-breaking bugs I encountered. I had to restart over a handful of projects due to the editor breaking the metadata files, rendering the entire project unrecoverable.

A game I was working on for my virtual reality course in university broke one night and caused the built times to exponentially increase. One day my game complied in 5 mins, the next Unity was estimating over an hour and a half. I think this has to relate with the issues outlined in the next section, but Unity clearly needs to improve its handling of these issues. This doesn't even cover the countless crashes I encountered while working on this VR game.

Image of the exporting dialog in Unity
The dreaded "busy for..." message

Deprecation of “core” packages

The number of networking packages Unity has released and then deprecated from Unity 4 to the current version is astounding. I know this is a classic Unity meme, but it really reflects the direction the company is going with supporting existing customers if they are willing to deprecate the latest “core” features so quickly.

During my time working with VR, most Unity packages were in a pre-release state due to frequent API changes. This was during the transition from the Oculus runtime to the Unity XR package, so I understand the necessity for adjustments. However, Unity markets these features as if they're production-ready when they clearly aren't. These pre-release packages are likely the cause of the bugs I mentioned previously.

Too many bells and whistles

While Unity struggles with inconsistencies through its packages, Unreal feels bloated with its plethora of features. To even use the engine, you have to download gigabytes worth of files. Once all that is downloaded, it's time to boot the engine, which can take a while depending on your computer.

Speaking of computer requirements, Epic recommends an RTX 2080 Super just for development. You might as well be running a AAA game in the background while developing your own. It's a minor gripe, but I don’t appreciate having my computer fans ramp up just to make a few adjustments in a scene.

I do have to admit, Unreal has some crazy impressive tech behind it. I also have to applaud Epic that they’re offering access to this advanced tech for free, but one has to make the judgment call: do I actually need it?

Nanite and virtualized geometry is awesome and reduces the barrier to develop high-quality video games… but do you really need all those polygons? The procedural content generation they showed off at GDC 2023 also blew my mind, and it looks so effortlessly real. But for what the games I plan on making, I don’t need all that cutting edge tech.

The procedual generation in this tech demo blew my mind

In my opinion, for a small development team (<5 people) it's a dangerous path to chase the photorealism Unreal provides out of the box. Unreal markets these technologies as “magic”, causing many developers to fall into the trap of relying on these features without understanding core game development concepts, particularly optimization.

It's easy to underestimate the artistic requirements of maintaining the photorealistic atmosphere Unreal provides. I believe it's more beneficial for beginner developers to choose an attainable art style rather than diving into the deep end. It might be worth exploring Unreal later, but it's crucial to learn the basics of game development with a smaller engine before getting enticed by all the flashy features.

so, then what are you going to use?

Godot

Well, the first engine that comes to mind is Godot, specifically the latest v4 release for Godot which brings the engine into the modern age with the Vulkan renderer. I absolutely adore the community support for the engine and how much the engine has developed over the past couple years since I’ve been following it.

Bevy

Bevy advertises itself as a “refreshingly simple data-driven game engine” build using the Rust language. I’ve always been trying to find an excuse to learn Rust and this might be a good opportunity to do so. The only downside I see right now is that Bevy lacks a visual editor.

stay tuned

In my next post, I'll share the engine I decided to use moving forward and the thought process behind that choice. Subscribe to my newsletter to know when that post goes live!