Godot GDScript vs C# Tutorial – Complete Guide

Have you ever wondered which programming language to choose when starting a new game project using the Godot Engine? If yes, then you’re in the right place! In this tutorial, we’ll put two Godot’s supported languages – GDScript and C# – under the microscope. We aim to compare and contrast these languages to help you determine the best choice for your game development projects.

What is GDScript and C#?

Let’s start with understanding these two languages.

GDScript is Godot’s built-in, Python-like scripting language. It’s designed to integrate seamlessly with the engine, leading to a smooth game development experience.

On the other hand, C# is a multi-paradigm language developed by Microsoft. It’s best known for its usage in the .NET platform, but Godot Engine also supports it as one of its scripting tools.

Why Should You Learn GDScript and C#?

Each of these languages has its own set of advantages, and knowing both can widen your game development skillset.

GDScript scores points for being beginner-friendly and having a tight integration with the Godot Engine. This makes it a perfect starting point for greenhorn game developers.

C# might require a steeper learning curve, but it gets back with rich features and wider applications. If you’re already familiar with C#, adding Godot into the mix could open new possibilities for your game dev career.

CTA Small Image
FREE COURSES AT ZENVA
LEARN GAME DEVELOPMENT, PYTHON AND MORE
ACCESS FOR FREE
AVAILABLE FOR A LIMITED TIME ONLY

Getting Started with GDScript

For beginners venturing into game development using Godot, we recommend starting with GDScript. Let’s take a look at a few basic examples of GDScript.

In GDScript, declaring and assigning variables is as simple as can be. Look at the following example:

var name = "GameDev Academy"

You can also define functions in GDScript. Here’s how you can create a simple function:

func greet():
    print("Hello, Zenva!")

Calling functions in GDScript is straightforward, as shown below:

greet()

Lastly, GDScript supports conditional logic with `if`, `else if`, and `else` statements, similar to other popular languages. Let’s take a look:

var score = 85

if score >= 90:
    print("Excellent")
elif score >= 75:
    print("Good")
else:
    print("Needs Improvement")

Fundamentals of C# in Godot

If you’re familiar with .NET or wish to tap into the power of C#, Godot has got you covered. Let’s take a look at a few basic examples in C#:

Declaring and assigning variables in C# is quite standard:

string name = "GameDev Academy";

Here’s how you can define a simple method in C#:

void Greet() {
    Console.WriteLine("Hello, Zenva!");
}

To call the function, you simply use the function name:

Greet();

C# also offers robust options for conditional logic. Check out the example below:

int score = 85;

if (score >= 90) {
    Console.WriteLine("Excellent");
} else if (score >= 75) {
    Console.WriteLine("Good");
} else {
    Console.WriteLine("Needs Improvement");
}

Advanced Coding Concepts with GDScript and C#

Now, let’s take a step forward and explore some advanced coding concepts with both GDScript and C# in Godot game engine.

Loops are imperative in any programming language, offering the ability to perform repetitive tasks more efficiently. Here’s how you can write a loop in GDScript:

for i in range(10):
    print(i)

And here’s a loop in C#:

for (int i = 0; i < 10; i++) {
    Console.WriteLine(i);
}

Object-oriented programming (OOP) is a major reason for the popularity of both GDScript and C#. Let’s explore how to define classes and create object instances in both languages starting with GDScript:

class Player:
    var name
    func _init(_name):
        name = _name
var player1 = Player.new("John")

And in C#:

public class Player {
    public string name;
    public Player(string _name) {
        name = _name;
    }
}
Player player1 = new Player("John");

To manage error handling, both GDScript and C# use try/catch exception handling blocks. Let’s take a look at how this can be done in GDScript:

try:
    var file = File.new()
    file.open("user://savegame.save", File.WRITE)
except:
    print("An error occurred while trying to save the game.")

In C#, the concept of exception handling remains the same:

try {
    FileStream file = new FileStream("user://savegame.save", FileMode.Create);
} catch (Exception e) {
    Console.WriteLine("An error occurred while trying to save the game.");
}

The comprehensibility and adaptability of both GDScript and C# make them incredibly efficient scripting tools for Godot engine. Having a grasp on both not only aids in versatile game development but also makes you a more adaptable and skilled game developer.

Array and Dictionaries with GDScript and C#

Arrays and dictionaries are two critical data structures in programming that allow you to store and manipulate data efficiently. Let’s explore arrays and dictionary operations in both GDScript and C#.

Arrays in GDScript and C#

First, let’s see how to initialize an array in GDScript:

var myArray = [1,2,3,4,5]

You can access and modify an array element by its index in GDScript as follows:

print(myArray[0])  # prints 1
myArray[0] = 10
print(myArray[0])  # prints 10

In C#, the array initialization is a little bit different:

int[] myArray = new int[] {1, 2, 3, 4, 5};

Array operations in C# are quite similar to GDScript:

Console.WriteLine(myArray[0]);  // prints 1
myArray[0] = 10;
Console.WriteLine(myArray[0]);  // prints 10

Dictionaries in GDScript and C#

Now, let’s take a look at dictionaries. Here is how you can define a dictionary in GDScript:

var myDict = {"apple": 1, "banana": 2, "cherry": 3}

Accessing and modifying a dictionary value in GDScript is done with keys:

print(myDict["apple"])  // prints 1
myDict["apple"] = 10
print(myDict["apple"])  // prints 10

In C#, the equivalent data structure is a Dictionary. Here’s how you can declare a dictionary in C#:

Dictionary myDict = new Dictionary() {
    {"apple", 1},
    {"banana", 2},
    {"cherry", 3}
};

You can access and modify a dictionary value in C# using keys, similar to GDScript:

Console.WriteLine(myDict["apple"]);  // prints 1
myDict["apple"] = 10;
Console.WriteLine(myDict["apple"]);  // prints 10

Mastering arrays and dictionaries in both GDScript and C# can significantly enhance your data manipulation capabilities in game development with the Godot engine.

GDScript vs C# – A Conclusion

Ultimately, choosing between GDScript and C# depends on your specific needs and familiarity. GDScript offers a simple learning curve, making it a perfect entry point into the world of game development. On the other hand, if you’re looking for powerful features and wider applications, C# is a wise choice, especially if you already have experience with it.

Great news is that at Zenva, we offer comprehensive tutorials in both GDScript and C#, that cater to both beginners and intermediate developers, and everyone in-between! Whether you choose GDScript or C#, rest assured, we have your back.

Where to Go Next – Keep Learning

In order to truly hone your skills and deepen your understanding of both GDScript and C#, there’s much more you can explore. At Zenva, we are committed to providing comprehensive learning resources that take you from beginner to professional in your own time, at your own pace.

As the next step in your learning journey with Godot, we highly recommend our Godot Game Development Mini-Degree. This comprehensive collection of courses teaches you how to build your own games using the Godot 4 engine, exploring various aspects of game development, such as GDScript language, UI systems, player combat, and more. The curriculum caters to both beginners and more experienced developers, with step-by-step guidance provided throughout.

Furthermore, you might want to browse through our wider collection of Godot Courses. These include everything from beginner-friendly introductions to professional-level game development tutorials.

The courses we provide at Zenva Academy are project-based, meaning that you’ll gain practical, hands-on experience with every concept you learn. They are also self-paced, allowing you to fit upskilling into your schedule without stress. Upon course completion, you are provided with certificates, adding concrete evidence of your skills to your portfolio.

Remember, learning is a journey and every step counts. We, at Zenva, are here to guide you every step of the way as you stack up your coding knowledge and game development skills, empowering you to reach your fullest potential.

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

FREE COURSES
Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.