Comment by cheeseomlit
3 days ago
Agreed 100%, C# is obviously a second-class citizen and I'm not going to waste my time with GDScript. It really is a shame because there are so many things to like about Godot, but the litany of issues with C# support due to their focus on GDScript has just soured the whole thing for me. Unity is just not an option as far as I'm concerned due to their bizarre licensing fiasco (and their own mountain of technical issues). So it's Monogame/FNA for me I suppose.
> I'm not going to waste my time with GDScript.
The GDScript hate is so odd.
If you know any scripting language you know GDScript. How much time are you wasting when it takes one afternoon to learn? And nowadays it even has gradual typing support for those that are scared of dynamic types.
I have seen C# devs coming to Godot being super prejudiced against GDScript and then end up using GDScript anyway because it is just more pleasant to use.
Still doesn't have full static typing support to my knowledge, which is a dealbreaker to me.
The other things are that it just has less support for structuring your code in different ways, and of course the performance is vastly worse. My game does some state space exploration for the enemy AI, so having code that runs an order of magnitude slower just doesn't work for me.
It has support for typing Arrays and Dictionaries these days. Yes, nested Arrays are still a problem but I am sure they will get to it.
As for performance well the GDExtension support has also gotten much better. You can always go down to C++, Rust, Nim, Zig or whatever. It is really easy to set up.
1 reply →
I don't hate it, but I don't like it either.
Mostly because I don't like the Python-style use of significant whitespace. But functions aren't first class citizens, making closures and lambdas awkward, type hinting isn't supported everywhere (such as with callables). I could probably come up with more petty gripes if I opened up a project and played with it. "pass" is an abomination to God.
It's a lot better than it used to be and it gets the job done but I still find it ugly and awkward as a language.
A more general complaint I have is that Godot tries to load every script regardless of whether it's actually included in the game hierarchy.
[dead]
>for those that are scared of dynamic types.
If you aren't scared of dynamic types for any type of semi-large project (like a game..) then you aren't qualified to talk about much.
Why?
9 replies →
Did you check out Stride? https://www.stride3d.net
I'm developing a game in Godot using C# and my experience with it is very good. I guess it depends on how deeply you integrate with Godot. I try as far as its possible to write my game headless. My opinion may change when I have gotten to the point of actually shipping a game though, so this take needs a grain of salt.
For me the real headaches emerged when I started writing [Tool] classes in C# for scripting within the editor itself. I don't know enough about the lower level nitty-gritty stuff to explain it, but I basically had to close and re-open the editor every time I recompiled. It had something to do with not being able to load assemblies, for example if I had a Tool script which referenced a sqlite library. There were also some concerning instances of Exported properties losing their saved values, though in that case they can at least be restored from previous versions of the .tscn file from version control