Unity, its closest peer, is a piece of crap in a lot of ways. But it's a piece of crap that has a lot of important features. I look forward to the day nobody ever has to reach for Unity again.
Unity, its closest peer, is a piece of crap in a lot of ways. But it's a piece of crap that has a lot of important features. I look forward to the day nobody ever has to reach for Unity again.
Currently, in comparison to Godot, Unity is better in regards to:
- C# as a first class citizen, really good performance, especially with DOTS
- extremely wide platform support, especially in regards to consoles
- many optimizations and functionality such as occlusion culling and LODs out of the box
- modern render pipelines that are geared towards lower end devices (URP), while others that are suited for more visually stunning projects (HDRP and i'd argue that also the default pipeline)
- a huge amount of tutorials, articles and examples of how to do something
- the biggest asset store of any game engine out there, providing everything from AI plugins, character controllers, inventory systems, real time occlusion culling solutions, billboarding solutions, model LOD generation solutions, dialogue systems and anything else that you could think of, really; it's an excellent source for throwing together prototypes and yoinking a few ideas of other developers after looking at their code
- really big share of the market is taken up by Unity, so professionally it makes sense to use it and learn it
- this also means that most of the external tools that one might want to use also integrate really well with Unity
However, Unity is also a lot worse in other aspects: - there is no networking solution that's actively supported
- DOTS and URP/HDRP were both haphazardly thrown together and feel broken
- frankly, in the past 3-5 years, it seems like Unity doesn't know what it wants to be and as a consequence feels inconsistent
- the closed source nature of it is also a pretty big problem for many projects
Who knows where the industry will be in 10 years, but personally i hope that Godot succeeds where jMonkeyEngine, Xenko/Stride, NeoAxis and many others have failed.I've been doing C# since .Net 1.0, have netcore contributions, and have to conclude that this is "pro" extremely subjective.
- Unity forces you to use ugly non-idiomatic C#.
- GScript is a language built for game engine scripting. It has deep knowledge of game concepts, as well as the scene graph.
- Rust/other via GDNative are just as good as DOTS.
- There is a GD build with first-class C#.
Can you elaborate on this?
Idiomatic C# is PascalCase public members. Look at the BCL. Yes, the capitalization of fields in Unity determines the flavor of property, buy that's exactly what attributes were designed to do.
disclaimer: I wrote the NET6 PR.
Agreed, however it also being purpose built not only makes it so that your skills will be non transferable, but also that learning resources for it will be more limited in comparison as will code libraries.
For example, last i checked the language also has some interesting restrictions, like no Singleton design pattern for example; that alone makes managing global background services in games harder. Edit: seems like you can sort of have Singletons now, though having some that are completely separate from the scene graph would be even better: https://docs.godotengine.org/en/stable/getting_started/step_...
There are some really lovely people making plugins for Godot as we speak (the terrain one is especially cool), however it will take years for an ecosystem to be built around Godot. Historically, it has worked out for some languages nicely, like Lua, but less so for others, like ActionScript. For some people a purpose built language is a boon, for others it's a drawback.
> There is a GD build with first-class C#
I think our definitions of "first class" differ. In Unity, you don't use anything else apart from C# and even when there also was Boo or their version of ECMAScript, C# got a really large amount of love in regards to documentation, examples and tutorials.
Since C# support is so new in Godot, that's not exactly the case and for example, as of now i cannot yet open a project in JetBrains Rider and get information about which API methods are slow and should be used with caution, or common code suggestions like i can for Unity.
Now, personally i believe that C# being supported is a good thing and even Godot having separate builds for versions with/without is an idea that makes sense, but there's still a lot of refinement to be had before it is truly usable enough so that you can breeze through projects with it and be sure that both your code will be performant enough (without having to go down to a lower level) and that you won't hit snags along the way.
The efforts of Unity to have their .NET workflow be smooth and comfortable cannot be praised enough - if they gave as much attention and consideration to the actual editor and plugin ecosystem (as opposed to deprecating features with no replacement, or releasing features before they're stable), they'd really be in a stable spot!
Oh, and you can also look at Xenko/Stride engine to see what another engine that uses C# and has had a bit more attention given to it looks like (even though the engine itself is somewhat half baked and doesn't have terrain support out of the box, much like Godot).
That said, i'm sure that the situation will only improve in the coming years!
If Microsoft hadn't bought Xamarin and rereleased Mono with a more permissive license than AGPL (so that Unity can finally update their Mono runtime), then Unity would have really met its downfall. If this (stealth) partnership between Microsoft and Unity didn't happen, I expect a lot of developers to have already moved on to Unreal/Godot in much faster rates.
Personally I found that the choice of programming language mattered much less than I thought they would, since I spent most of my time and effort on drawing rather than coding.
For example if I want to build a platformer, with tons of special effects, I can do this in about 2 days with Unity.
The asset store itself is Unity's biggest advantage. Want to make a game about finding Easter eggs in the woods, buy Gaia and you have your forest.
From a technical point of view , Unity is amazing. My one concern is the business seems to want to extract more and more from users. You went from being able to buy Unity to needing to subscribe, and subscribe to a bunch of other auxiliary services.
That said, C# is C# so your skills are easily transferable. I'd love to see another commerical C# driven option.
I'm not a big fan of how Godot tries to support 3 or 4 programing languages. This fractures your userbase and makes finding tutorials much harder. Although I will admit my very first programing language was Unity's JavaScript implementation.
Everytime I use unreal I'm blown away by how smooth it is (as long as I find what I'm looking for in their insanely huge toolbox), unity meanwhile just feels like constant roadwork.
Over the last five years it went from "not a professional game engine" to "a professional game engine". That doesn't mean it's a good one.