With the major controversy of Unity throwing game devs under the bus, a lot of people have been looking into moving to Godot. I'm writing this post from the ...
I made a blog post about my experience switching from Unity to Godot earlier this year, and some tips for Unity devs.
Personally I dislike using scripting languages as the primary language for any bigger project. The lack of proper static typing commonly causes issues with linting, code-completion, error highlighting and refactoring tools. Lack of namespaces can lead to name clashes with type names and such especially ones you start adding bunch of 3rd party plugins.
Also using having to include/preload any script files using string references like this: const Rifle = preload("res://player/weapons/rifle.gd") is not just plain bad in my books. Its just plain dirty compared to Namespaces in C# or Packages in Java.
I do like Python and I use it quite a bit at work to automate things as you can install and import bunch of ready made libraries for almost anything and just write script that is like sub 500 lines and does whatever. But the moment I need to make anything that contains multiple files and some object oriented practices things will get increasingly more annoying very fast.
Having interfaces is quite nice as well as it allows me to keep my code more loosely coupled. I try to keep my code as portable as possible by keeping much of my code in a separate project that has no dependencies to Godot. This way I can use nUnit in another separate project to do unit tests for the code and just write wrappers and whatever in Godot project. If Godot API changes I generally only need to fix the code in the wrapper classes.
C# works fine with Godot and with the changes in Godot 4.x its better than ever with Godot.
Here’s a pretty good blog post comparing the two:
Personally I dislike using scripting languages as the primary language for any bigger project. The lack of proper static typing commonly causes issues with linting, code-completion, error highlighting and refactoring tools. Lack of namespaces can lead to name clashes with type names and such especially ones you start adding bunch of 3rd party plugins.
Also using having to include/preload any script files using string references like this:
const Rifle = preload("res://player/weapons/rifle.gd")
is not just plain bad in my books. Its just plain dirty compared to Namespaces in C# or Packages in Java.I do like Python and I use it quite a bit at work to automate things as you can install and import bunch of ready made libraries for almost anything and just write script that is like sub 500 lines and does whatever. But the moment I need to make anything that contains multiple files and some object oriented practices things will get increasingly more annoying very fast.
Having interfaces is quite nice as well as it allows me to keep my code more loosely coupled. I try to keep my code as portable as possible by keeping much of my code in a separate project that has no dependencies to Godot. This way I can use nUnit in another separate project to do unit tests for the code and just write wrappers and whatever in Godot project. If Godot API changes I generally only need to fix the code in the wrapper classes.