Comment by giancarlostoro
8 years ago
I gotta say Godot is one of those open source projects I want to see more commercial adoption of. Not only is it well done, it is miles ahead of the commercial offerings and everything from the tooling to the engine is MIT licensed. You can do plugins not only for the engine, but the tooling itself! This means that you're not limited only by what is already available through the standard IDE they built (which is really already great) but by your imagination entirely. You can code plugins in any native language you so desire as well thanks to GDNative (this includes Rust, D, and more).
Also don't forget, they've got the latest of Mono available to you, so modern C# features at your fingertips, no more C# 3.5 like a certain industry slowpoke...
Godot is advancing at a fast clip. Godot 3 is a nice milestone. They're on bullet now for physics, which is nice (just like all the GTA games). Disney BSDF, their pbr stuff, and global illumination lighting look really good. https://godotengine.org/storage/app/media/devlog/rendering/f...
Here's some video of their third person platformer demo project: https://www.youtube.com/watch?v=aRwCxMYSIk8
And their post about 3.0: https://godotengine.org/article/godot-3-0-released
If nothing else, I hope it puts some pressure on Unity to solve and ship fixes for some of their longstanding weaknesses — (their bizarre and fundamentally handicapped prefab system, their slow runtime boehm garbage collector which hasn't been updated in a decade, the need to expensively recompile your entire project with every small change to a .cs file, etc) as opposed to just making grand promises at keynotes. I do like Unity's recent integrations of ProBuilder and TextMeshPro. I don't mean to bash it, but Godot deserves to succeed alongside it given its admirable development and licensing model.
> miles ahead of the commercial offerings
In some ways, maybe. In all ways, or even "most", no. Definitely not.
For a free engine it is impressive, no doubt, but it is not miles ahead of commercial offerings.
In some ways yes, and it will only get better over time as more developers become aware of Godot. It may even be that most people wont realize the richer plugin ecosystem that will grow around Godot (which is surely growing!) and that will be it's biggest strength much like how Atom and VS Code spread so quickly. Godot doesn't force you into their ecosystem, they welcome you to use GDScript but it's not your only path forward thanks to GDNative.
You weren't kidding about D. It looks like just this week someone released some D bindings for Godot. Exciting! I really like D, and I am curious to try gamedev in D.
https://code.dlang.org/packages/godot-d
I really wasn't! Glad you found it, I think the Github repository is even older if it's the project I saw a while back. All of that is possible because of GDNative, which ties together native code back to Godot itself so you don't have to recompile the whole engine just to bind native code to it.
Adding a link to their GitHub since to me is looks like the dub website is slow / down?
Link to D bindings for Godot:
https://github.com/GodotNativeTools/godot-d
Edit: Looks like they got Rust and C++ bindings in their umbrella too:
https://github.com/GodotNativeTools
Unity can use .NET 4.6 now. It wasn't because they were slowpokes, xamarin would not license it to them until they were acquired by Microsoft.
- Mono's license prior to the Microsoft/Xamarin acquisition was LGPL, which is open ended and doesn't allow e.g. discriminating against Unity; Unity would not accept it under those terms
- Xamarin did offer a commercial license to Unity; Unity would not accept it
- MS began to release their own .NET implementation under the kinds of license terms that Unity wanted years ago, but Unity didn't budge
- In the meantime, MS then relicensed Mono itself—the .NET implementation that Unity actually wanted—under the kinds of terms that Unity wanted, but still Unity didn't show signs of moving until very recently
The whole it's Mono's fault that Unity sucks was essentially a successful PR attempt for Unity to disclaim responsibility for their shortcomings, with the (maybe not unintentional) side effect of directing public ire towards Mono for not doing enough free work (to benefit what was already one of the industry's most successful companies!)
"Its mono's fault" was told to me by one of the founders of Xamarin, in person, not by Unity. Perhaps they did offer Unity a license to their newer stuff, but at completely unacceptable terms. Xamarin's concern was that Unity would be a direct competitor with their own cross platform product.
I don't consider this to be anyone's fault, my point is that post-MS acquisition, it is easier to get access to the newest mono runtimes/compilers, which is why we are seeing them appear in Unity and in Godot.
>MS began to release their own .NET implementation under the kinds of license terms that Unity wanted years ago, but Unity didn't budge
That one wouldn't have targeted all of their platforms, right?
Perpetual arbitrary changing license fees are something everyone wants to avoid.
The fees went away, they started moving.
Its more complicated than that, but ultimately they won: the people demanding license fees got flipped off and they got what they wanted for free.
...so, I know a lot of people have been angry about this, but by every metric what they did was a total business success.
If you want the guys from Unity to act differently, you have to actually tangibly affect them (eg. pick a different engine), not just complain.
2 replies →
As a fulltime Unity dev, this doesn't matter much to me, because it doesn't address the major pain point for larger Unity games. This .NET upgrade does not include a modern garbage collector, and the garbage collector update has been "maybe next year, but definitely not now, because it's hard" for as long as I've been using Unity.
Workarounds exist. That's great. I don't care. Workarounds don't address the default experience of writing idiomatic C#.
I've considered switching to Unreal, but that has GC built into it a little too much. I know nothing about its characteristics, but it makes me wary. This thread makes me want to investigate Godot. Can anyone provide a one-sentence summary of the GC situation there?
I have yet to have any GC issues in a Unity project over 5 years of using it, even larger scale ones. But I would agree I rarely write "idiomatic" C#, I don't like many things about that style of programming in the first place to be honest.
A garbage collector is rarely the issue; poor development practices and not planning memory usage patterns in the architecture will cost you orders of magnitude of performance long before the GC itself is an issue.
Its not even hard to have zero GC allocations on ~99% of frames. This will give you better performance than the best GC implementations over bad allocation patterns ever could. This is also true of Unreal (UObjects are GC'd as you mentioned) and literally everything else using a GC; its not a free pass to forget about memory management.
Thats one of the primary reasons why I rarely use code assets from the Asset Store; most people don't know how to write performant C# whatsoever; they get killed by a thousand cuts but none of them show up in the profiler, effectively wasting 90% of the CPU without any warning signs. (This is true of almost every software ever released.)
I'm not one for premature micro-optimizations, but on the other hand I don't see how you can get any kind of performance without accounting for macro-optimizations from the very beginning.
Blaming the GC for poor performance is pretty much the same as doing unbuffered byte-by-byte I/O and then wondering why its 1000x slower than the competition even after weeks of micro-optimizations.
3 replies →
Sure!
Hopefully a more experienced Godot dev will jump in and correct me if I'm wrong here..
Godot uses reference counting, but additionally supports a function which you can call on an object which will cause it to become 'unmanaged' by the reference counter, allowing you to free its memory on your own terms (or leak the memory, if you're not careful).
Godot 3.0 added support for Mono, but I'm not sure how that works. I'm guessing that game objects in Godot are still reference counted, but now you also have memory allocated by the Mono runtime which will be garbage collected.
6 replies →
Unreal doesn't have GC as far as I know. Everything is built on C++ objects. There's some reference counting here and there, but I've not yet run into problems with it.
5 replies →
You still run with the same naive and expensive boehm garbage collection sweeper that Unity has always had (since 2005?). The machinations some Unity developers go through to avoid allocating memory and inadvertently triggering a sweep are worse than the old days of just managing your own memory manually in C and C++.
Why they have never hired a team to simply create a reference counting fork of their object system is beyond me. Their GC is the reason Unity games have a reputation for running with inconsistent choppy frame rates. You'd think fixing that would be top priority.
But they have never committed publicly to a timeline to fix it, and it is a glaring weakpoint in their runtime environment. Possibly worse than any other, besides the insane and broken way they designed their "prefab" concept. Those 2 flaws have led me to call Unity the "Javascript of Game Engines" in the past. It's not quite that bad, but it's close.
Curious to hear your critique of prefabs.
6 replies →
I just tried to upgrade my project to 4.6 in Unity a few hours ago (using the 2018.1 beta). I ended up having to switch back because of build errors. For anyone who is interested in upgrading to 4.6: I suggest waiting until later in the 2018 release cycle so that all the kinks can be worked out.
I also encountered problems upon the first upgrade. But it was easy to fix after doing some googling. On Windows, you need to make sure you install the correct .Net Targeting Pack.
2 replies →
Unity is a bottomfeeding company in so many ways. If they were more upfront about prioritizing phone-apps and low-fi projects, it would be acceptable. But instead, their business plan appears to be:
1. Rope in beginners with network effect, asset store, popular fear of C++.
2. Promote as many new features as possible, with only the most minimal discretion of whether the features actually work or help, anybody because once their demographic notices the ploy, they are too invested to leave. Ideally, they will build a few products for the asset store to make up for the dismal investment.
3. Throw enough dirt and some of it will stick. Mass promotion to beginners gives them enough sign-ups to keep going. Interesting how the pricing model means beginners can’t view the unpredictable performance issues until they start paying.
They consistently fail to prioritize the problems with memory management, lightmapping, and material standards that plague serious Unity devs. I have switched to using Unreal and it’s like night and day. I am super interested in Godot.
Given the love they get from companies like Nintendo, Google and Microsoft, it seems to work quite well.
Loving Godot so far. I'd tried many an engine to get into gaming. With Godot, i felt the least resistance.