Unity to Godot
I originally planned to write a bit about items and enchantments, but that has to be pushed for next time, because of the elephant in the room.
Unity to Godot
The Unity debacle has been quite distracting this week. Now there are lots of people that are FAR more affected than me, but what has been communicated clearly is that Unity will not hesitate to change things without warning, pulling the rug under your feet, and optimise for the mobile platform and monetisation thereof. This means that if you're not in that space, well, tough luck.
In my case, I'm not currently affected, but if Unity hits rock bottom I certainly am. The question becomes: do I wait to find out? I rely on being able to use Unity and its updates on systems I'm planning to use (like the UI) for several years from now. I'm not going to be done with the game anytime soon, and now there's a shadow over long-term support. I don't want the game that I've poured sweat over a decade (and plan to pour more) to be randomly shafted because some greedy people make some stupid decisions. It doesn't make me feel I have control over my solo super-personal project.
So, what to do? Continue or move to a different engine? A lot of people working on short-term games say they will finish and then move to some other engine. Other people with long-term projects are stuck because they've invested too much in Unity. But, what have I invested in Unity? The answer, given the size of the codebase and they years I've working on is, surprisingly, "not much". I'm not using any Unity assets, or their UI (yet), or their pathfinding, or their particle systems, or their inspector (that failed because of my code-heavy approach), or GameObjects, or ScriptableObjects, or Addressables, or a myriad of half-baked features that it provides. I use C#, serialization, shaders, drawing instanced quads using compute shaders and simple editor windows for debug displays. Everything else is pretty much DIY. Not being tied to Unity stuff is actually quite liberating at this point, as it makes the porting effort from impossible/years to a fraction of that.
So, what's the alternative? For me, the most realistic option, by a big margin, seems to be Godot. It's open-source, it seems good enough and stable enough at the moment, and it's only gaining more traction. Not falling to the proprietary trap again. Same with social media -- ok with Reddit and Twitter while they exist, but no more proprietary ones, only Mastodon. Enough with the bait-and-switch tactics in products you invest in.
So what now? I'll be starting an exploratory phase on Godot, to figure out if it ticks the exact boxes that I want. What are those?
- Easy serialization of data structures, for both binary purposes (savegame) and configuration (json)
- Interfacing with a C++ plugin
- Good debugging of native code
- Good debugging of script code
- Easy writing/debugging shaders
- A reasonable solution for game UI
- Easy creation of debug editor windows
Time will tell.