← Back to context

Comment by cardanome

7 hours ago

> 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.

    • But then I have to code in those other languages, languages that require manual memory management that I'm not as familiar with. C# is many times faster than gdscript, and I don't have to think about memory hardly at all. And it's easy enough to code the whole game in it.

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.

>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?

    • Without agreeing (or disagreeing) with their larger point, dynamic types become more of liability as a project gets larger

      Like "schemaless" database applications, there's always types/schema somewhere: the choice is if they'll be explicitly defined at the place of construction, or implicitly spread out across all the places data happens to flow in your application. And the more places there are, the more spread out they'll be.

      Static typing is also really nice for game dev since proper unit tests are harder (but not impossible) compared to your average CRUD app.

      8 replies →