Godot vs Unity: First impressions with Unity

Unity is kinda slow.


tl;dr: I'm deeply familiar with Godot, and I've just tried out Unity. Here are my impressions.


Why am I learning Unity?

In general, I've been planning to poke around with Unity at some point, if for no other reason than to have an understanding for how Godot compares. As far as I understand, Unity is the industry standard game engine.

In particular, I was poking around with Unity last week in order to use it with some friends to make a game for the Ludum Dare 48 game jam. (Check out our game here!)

So what do I think about Unity?

Pros

  • $$$
    • It's free! At least for me, right now, since I'm not making any money.
  • Modular
    • It's more modular, in more places, than I was expecting.
    • I like how editor add-ons are handled through the package manager.
    • And I like how "components" can be added in an à-la-carte fashion to "game objects".
  • I like that it integrates with whichever popular external IDE I know and love.
  • Support and reliability
    • Since it's a for-profit product, and so widely used by the game-dev community, it has a lot of great support and documentation.
    • I feel like I don't need to worry about getting heavily invested in my project before realizing that some critical edge-case in my production plan isn't supported by the editor.
  • Addons, integrations, bells-and-whistles galore!
    • It has all the bells and whistles I can think of, and handy integrations for all of the related game development workflow tools I could possibly want to use.
  • The asset store has so much stuff!
  • User base
    • It seems like just about everyone in the game-dev industry is familiar with it, so it'll reliably be a good choice for any team.

Cons

  • IT'S SO SLOW! Ironically, using the "Unity Real-Time Development Platform" does not happen in "real-time". At each step of the development workflow, you are left waiting in-front of a progress bar, while Unity prepares the next step.
    • Fortunately, the generated games seem to be fast enough for the most part!
  • A couple more bugs and crashes than I'd expect from such a well-used and supported product.
    • But it's still probably better than most apps, and it is doing a lot of crazy stuff under-the-hood to make games happen.

More thoughts

DISCLAIMER: I am definitely biased. I am pretty familiar with Godot's quirks and annoying aspects at this point, so they don't stand out to me anymore. Also I'm expecting to continue using Godot after this experience. Unity is almost certainly better than my impressions might lead me to believe from the brief tinkering I did over the last week.

  • Unity takes a long time to download and install!
    • I guess it takes about as long as I would expect, but Godot is somehow magically much faster to install than I would think, and I guess I've just become spoiled.
  • Unity Hub
    • I was a little confused at first about what was going on with the Unity Hub application being separate from the actual Unity editor application.
    • But I totally understand the value of the hub and why it exists.
  • Updating to the next version of Unity
    • I installed Unity last week, since I thought I'd try to be ready ahead of time to jump into Unity this week. Since then, there has been another version of Unity released! Cool.
    • But I was very confused by the update process.
    • The in-editor update-to-new-release dialog just directed me to this page: https://unity3d.com/unity/qa/lts-releases.
    • But, shouldn't the hub have actually handled the updating and notification process for me, before I even opened the editor?
    • And it's very confusing which link on that page is relevant for me.
    • Then, when actually trying to install the update, after about five minutes of installation, I got an error message about the Visual Studio component, and the installation aborted.
    • But it looked like it actually installed the editor correctly anyway.
  • Learning the basics
    • Opening a new project is so slow! 3 minutes??
    • I first tried out Unity's integrated tutorials.
    • I worked through the Lego microgame and the FPS microgame tutorials.
    • Running ("Playing") a project within the editor is so slow to start!
    • The integrated tutorials are a pretty nice feature, but I learn better with text-based articles.
    • So I moved on to the tutorials at learn.unity.com.
      • I worked through their "Unity Essentials pathway", but it was definitely a little basic for me.
  • Moving around in the Scene view
    • I initially really didn't like the controls Unity has chosen for changing the view of the scene (panning, zooming, rotating, etc.).
      • I found the controls unintuitive, difficult to use, and slow to accomplish my goals.
      • After using Unity for a few days though, I got used to the controls.
    • In contrast, I also downloaded and poked around with Blender (a 3D asset creation tool) last week, and was immediately impressed with how easy it's view controls were to use. And I didn't need to read any docs or watch any videos on how to use the controls. I just tried a few clicks, drags, and key presses and just about everything worked as I expected on the first try.
    • I haven't actually done anything with 3D or the 3D scene view in Godot, so I'm not sure how it compares.
      • *Edit*: Ok, I just tried Godot's 3D editor, and I don't particularly like how moving around works there either. And it's still different from the other two programs! Ok, so moving around in 3D space is just hard, I get it...
    • I do really like the wrap-around mouse movement when panning/rotating/scrolling by dragging.
  • Exporting a project
    • Despite telling the installation wizard that I want to install the WebGL export library, it seems like it isn't included.
    • So I read through the Unity docs on how to add modules to the editor.
    • Unfortunately, the docs tell me to click an "Add modules" button that doesn't actually exist.
    • It seems like this is a problem for other folks as well.
    • But none of the fixes from other folks seemed to work for me.
    • So I uninstalled and reinstalled Unity... (which, as mentioned above, takes quite a long time).
    • Building a project in Unity is so slow!
    • Also, after building my project through the build menu, I was unable to then "locate" that same folder for publishing my WebGL build.
      • The folder exists, but Unity doesn't recognize it as containing my build (despite the build actively running in my browser tab...).
    • After exporting my WebGL project, and publishing it on Unity's site, I can't find how to get back to it!
      • This seems bizarre. How can there not be a link to this anywhere in unity.com??
      • It's not listed under Account, Services, Dashboard, Assets, Distribute, or Projects.
      • Eventually, I was forced to re-publish the game through the Unity editor in order to navigate to the page.
  • Using the asset store
    • The "Free Assets" filter checkbox is too hard to find and use.
    • Filter options seem to not be usable until after submitting an initial search?
    • Then, the "On Sale Only" checkbox is automatically selected by default.
    • And, apparently, when the "On Sale Only" checkbox is selected, the "Free Assets" checkbox is not shown.
      • Hiding this checkbox is a bad design decision. It makes the user not even realize that it could possibly be shown. Instead, they should have shown it as disabled, and provided a tooltip explaining why it's disabled.
      • Also, since they show and hide so much UI when anything changes, the entire side menu jumps around a lot, and it's very hard to keep track of where things are, and it makes it very easy to accidentally mis-click on the wrong thing.
    • All-in-all, I feel a little pushed to pay money.
  • Scripting
    • Unity is so slow to respond to script changes! 20 seconds after adding a single variable!
    • I don't mind that Unity doesn't let you choose to use any language other than C#.
      • Design-wise, I'm sure some things will work more simply because of this engine choice to be opinionated.
    • And I don't mind too much that Unity doesn't include an integrated IDE.
      • If you write code, you have strong opinions about IDE features and shortcuts. If you are forced to use something other than your favorite tool, you will probably resent it.
      • I've been using GDScript in Godot's built-in editor for a couple years now. I'm very familiar with it, and I still really miss all my other powerful IDE features from IntelliJ.
      • But it would be nice if there was at least some basic text editor support within Unity. Having to context-switch out to a different application in order to make a quick one-line code change and then come back and re-orient yourself between the different windows does get a little fatiguing.
  • Package manager
    • I really appreciate the modular design of Unity's package system.
    • However, it also just makes me think about how strange it is that Unity is so slow out-of-the-box even without any of these optional packages included!
  • Character rigging
    • I was really frustrated for an hour trying to figure out why a model I'd rigged in Blender wasn't getting imported and configured correctly in Unity.
    • I could open up the model, and see the correct bone structure. But when testing it, the mesh wasn't following the underlying bones!
    • I could not find anything out of place to explain the problem.
    • After eventually closing and restarting Unity and trying again, everything worked fine... :(
    • At a couple other points during the week, I fixed some magical bugs in Unity by just closing and restarting.
    • Unfortunately, I'm still deterred from restarting the program too much, since it's a slow process.
  • No fuzzy search.
    • This lets you search for things by only typing a subset of the characters from the word that your looking for.
    • For example, if I'm searching for "BabyController", I might type "bacon" (yum).
    • It's a really common feature of search boxes in development programs, and it's a huge time saver!
  • Navigating within the editor between scenes/prefabs is confusing/difficult.
    • Sometimes I accidentally open a scene/prefab, or make a quick edit, but then want to go back to the previous scene/prefab I was working on, or vice versa.
    • But I can't see any sort of breadcrumbs or context for the opened scene/prefab history.
    • It seems like this should be shown as tabs somewhere.
    • Also, I really want my mouse's back button to take me back to the previous scene/prefab I had open.
  • The distinction between prefabs and scenes is confusing.
    • Why are they treated differently than scenes by the editor?
    • Conceptually, they are annoying to treat differently, as the author, and the engine could technically be rearchitected to treat them the same within the editor.
    • As your project grows, you naturally tend to need to convert scenes into prefabs, and nest those prefabs.
    • I found this post, which does a good job of asking whether the "nested prefab" concept could just be replaced with a "nested scene" concept, and describing the problem.
  • Mouse is twice as sensitive (or more?) in a WebGL build than when playing within the editor.
    • This was annoying to debug and adjust, since making a WebGL build is a slow process.
  • And, as I discovered during the game jam, everything is so much slower as soon as you start using real assets and working with other people!
    • But I think that's going to be true for any team on any game. Especially 3D games.
A screenshot showing the Unity opening progress bar; it says "Busy for 19:16" and it's about a third of the way done.
:( I don't know what button I accidentally clicked in project settings to cause this massive reset, but I'm REALLY sad that I did!
And the worst part, is that I know I'm going to need to uncheck that setting as soon as I can get Unity to open again...

  • I think Unity may have some memory-management issues somewhere along the line.
    • When using Unity all day, my OS would gradually become more and more sluggish until all programs became virtually unusable.
    • So I'd have to restart my machine, and then everything would be fine again!
    • Although, even in the freshly restarted state, most parts of the Unity dev workflow still seem a little slower than they should be.
  • It seems like most WebGL games generated in Unity that I've seen (which is a lot recently, due to Ludum Dare) suffer from pretty significant periodic garbage-collection stutter.

I'm sure I'll use Unity with a team again someday, and I'll be happy to try it again. But, for this week, I'm also happy to be going back to Godot!

🎉 Cheers!

This is a simple icon representing my sabbatical.

Comments