Monday, April 18, 2022

Why I still use Unity

There's been some game dev twittering about Unity vs. Unreal lately. Why use Unity when Unreal is better?

The basic consensus is that Unity's advantages have been crumbling for years, and its attempt to challenge Unreal on high-end graphics has meant neglect everywhere else. But if you want high-end then UE5 Nanite / Lumen is light years beyond Unity HDRP anyway? And if you're making the typical aspirational photorealistic action game, you'll probably want UE's gameplay architecture and free photoscan assets too.

Most recently, respected developer Ethan Lee has weighed in. For him it's not about the graphics, it's about source engine access and engineering processes. Being able to pinpoint bugs in the core Unreal Engine code, fix them, and submit patches to Epic is how modern software development works. Comparatively, Unity is closed source, and even if you go to the trouble of filing a bug report you'll still have to wait a year for an official bug fix if you're lucky. This is important during the second half of a game dev cycle, when game making becomes a terrible slog -- when your game randomly crashes on Nintendo Switch for some reason and you have to figure out why but you're already so so tired.

So why on earth would anyone still use Unity? Everyone has their own situation, and here's mine:

  • I make small non-commercial experimental 3D games about gay sexuality. I would never maintain my own engine branch. I don't need built-in damage handlers or ability systems or behavior trees. My audience needs my games to work on their 5 year old laptop they bought for college, the new Nanite hotness is irrelevant. And whenever I reach a stability slog phase with these projects, that usually means I've overscoped and I need to make the game smaller.
    • I'm also interested in making web browser games as a way to bypass platform censors. Unity's imperfect WebGL export is objectively more promising than Unreal publicly dropping web support in 2020 (not that Epic's web support was ever good anyway)
  • I tried using UE4 alreadylearning enough to prototype basic game mechanics and build 90% art passed levels. I'm not an expert, but I've learned much more than a beginner. There were some features I liked and some that felt painful, nothing felt mindblowingly better than Unity, not enough to overcome my biggest reason --
  • Lock-in effect: all my existing code and assets are in Unity already, and I know Unity's intricacies pretty well. I've been using Unity for 10+ years, I'm at a point where my limitations are more in my mind than in using Unity. It'll be time-consuming to retrain myself to the equivalent in Unreal AND build-up the same war chest and pipelines. It's the same reason why people kept using UDK despite Unity's rise, or why artists stick with Max and Maya despite Blender's rise.
Even with Unity's mismanagement, switching to Unreal still didn't make sense to me. So I haven't. For me to switch, I'd have to see a big benefit / big promise to match my needs while overcoming the prospective costs. 

Other reasons why you might need to use Unity instead of Unreal:
  • You're on a Macbook (Unreal is basically unusable on MacOS)
  • You're making a 2D game (Unity's 2D tools aren't great but still better than Unreal's barely existent ones, and at least there's an ecosystem of active Unity 2D devs)
  • You don't have a big heavy PC desktop rig that can compile 50,000 shaders and load 8k textures
If only there was something that worked like Unity, yet was somehow free from Unity mismanagement forever...

For me, it's not really about Unity vs Unreal. I'm waiting for Godot

(Maybe in 5 more years?)