If you have no experience whatsoever with programming, go straight to gdscript, ignore and avoid C#, and don’t even think about C++.
it doesn’t matter what language you use, it matters that you learn the basics of coding like conditions, expressions, functions, variables and objects.
programming is not about what the code looks like but how it does what it does. once you learn that you can move to another very easily.
I started with python, once I was experienced with it it was so much easier to learn C++ and then C. and knowing C++ it was very easy to move to C#.
people often call gdscript “basicaly python”, but it’s nothing like python, it is so much better in every way, one important example is how it has both static and dynamic typing. types (of variables) can be optional or obligatory, but the var
will tell you where a variable was defined, and you can also define an empty array and fill it later. In python types are always static and you define them by giving them a value, so it’s never clear where a variable was defined or what type it is and code that’s over 50 lines long becomes impossible to debug.
python:
tmp = 50
speed = 0.5
gdscript:
var tmp : int = 50
var speed : float = 0.5
it also has OOP (which python doesn’t, at least not in a sane useful way).
so for learning the basics, and some more advanced features like inheritance, gdscript is perfect.
if you go to a different language after learning it, there will be some new things like pointers and references and more requirements for keywords, but the rest will just be learning the language’s “lingo”, for example, here’s a foreach loop with 3 languages (gdscript, C# and C++)
gdscript
func iterate() -> void:
var arr : Array = [1, 2, 3, 4, 5, 6]
for i : int in arr:
print(i)
C#
void iterate() {
int[6] arr = {1, 2, 3, 4, 5, 6};
foreach (int i in arr)
{
GD.Print(i);
}
}
C++
void iterate()
{
int arr[6] = {1, 2, 3, 4, 5, 6};
for (int i : arr)
{
std::cout << i;
}
}
notice how C++ needs a library (std) to print text to the console, in the case of C# we are using the godot library. also notice how we define the variable type in each case but gdscript is more clear thanks to the var
and func
keywords. also how gdscript can use the Array
class while the other languages have a built-in system based on pointers that needs more time to learn AND libraries like Map
, or in the case of C# there’s also built-in types like Queue
.
I would say avoid C#, because if and once you learn it, it has so many options that are built-in, that it will be very difficult to learn something different later, specially if you are self-taught.
also, for godot, you need to learn C# on it’s own before jumping in to make a game, godot won’t held your hand and you must know what you are doing.
I recommend that (if you decide on C#) doing a tutorial on C#, finishing it and making an app in C#, before you try to make games with it, otherwise you will get stuck.