Godot 4.0 beta 16: Initial .NET 7 support
godotengine.org
godotengine.org
Godot 3 is good. I use it professionally every day for 2 years. AMA.
I used it to build a multiplatform (including mobile) radio app similar to nightwave plaza (https://plaza.one/) and it worked remarkably well
also Pixelorama was built using Godot
Do you have any thoughts on the skeletal system and has it improved in Godot 4? I sort of got it to eventually work, but it was really tedious. Have you ever used it and do you know if it has improved in 4.0 that makes it more viable to use?
We bought a license to Spine from http://esotericsoftware.com/
It has a godot runtime SDK.
That being said, GDScript has some flaws: it's performance is bad, the typing system needs work, it doesnt allow cyclical references of classes and the coroutine API is not greatly designed.
But for prototyping game code it's pretty hard to beat for developer speed.
For UI code it's top tier.
I think you'll like Godot. I generally find it faster to develop things in than either Unity or Unreal.
I've got a pretty huge toolbox of custom modular scripts for adding functionality to UIs, and a pretty solid theming and layout system.
I'm looking forward to 4.0 coming out (well, 4.1) when they go back to smaller incremental updates and a higher focus on stability, so I can start using it for more projects. If the web builds weren't so broken I would have used it for ludem dare this month, but I went back to 3.5 and sorely missed the new features.
Maybe some of that comes in 4.x work, maybe some has to wait until 5. Most of it sounds like feature additions instead of things that require rewrites of existing 4.0 code.
It wouldnt be hard for a AAA shop to use Godot for the editor and use GDScript to build UIs, VFX (visual effects) and DSL (domain specific language) type stuff.
Writing all your simulation and netcode logic in c++ makes 'godot' pretty unlimited.
AAA would want to completely replace Godot's renderer, but that is 100% feasible for a big studio with talented graphics engineers.
Why is it that C# is that popular for gamedev, and only a few titles use JVM?
Unity.
edit: also C# allows precise measurement of memory usage and padding, while in Java one can only guess
There's one big difference in the feature set: unless things have changed very recently, the JVM lacks value objects.
Other features are also critical to performance such as true generics. Say List<Vector3f> in C# is specialized for that type, no overhead from objects, no extra pointers, no casting.
In C#, if you are very careful, you can get close to the performance of C++. I don't think the same can be said about Java, because the language does not give you the tools to achieve that.
Not as important, but still: C#, as a language, became pretty sophisticated during the recent years. It picked up quite a few functional idioms from OCaml, F#, Haskell and other functional languages, so you have pretty decent horsepower under your fingers. For instance, it can validate for possible null reference access during compile time now, thus nearly eliminating NRE (NullRefenceException) bugs in run time.
Most game engines are written as a large chunk of C++ code that runs each frame's timing, and the big subsystems like physics, particles, sound, and the scenegraph. All the important engineers will be dedicated to working on this engine and it behaves like a framework. The "game logic" is generally considered to be a minority of the code, and because less-technical people generally author it, it gets written in a higher-level "scripting" language.
This creates some serious constraints on that language. It must be possible to call into the scripts from the main engine and the overhead must be low. The scripts often have to make calls into the data structures of the main engine (e.g. for physics queries) and the overhead of that should be low as well. It should also be possible to control the scripting language's GC because the main engine is pretty timing-sensitive. Memory consumption is pretty important as well.
All these requirements point towards two implementations specifically: Lua (and LuaJIT), and Mono. Those two runtimes go out of their way to make it easy and fast to embed. A third option which a lot of engines pick is to write their own scripting language where they control everything about it. Any other language you can think of (with the possible exceptions of Haxe) will have some major hurdle that prevents easy embedding. The fact that you can compile multiple languages to Mono bytecode pushes some folks in that direction; if you're planning to write a lot of code in the scripting engine (not all of them do! See: Unreal) that's nice flexibility to have.
But actually, C# was always meant as a “managed c++” in a way, while Java rather optimizes on the runtime level (which is helped by less control by the developer). Nonetheless, Java is more than fine for game development, besides the obvious Minecraft there are plenty small to big indie games written in Java.
https://github.com/derkork/openscad-graph-editor
What other instances are there of non-game usage?
Tesla uses Godot in their mobile apps to do some rendering: https://twitter.com/MFrunker/status/1430922577309011976