Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

Skriptsprachen

Diese Lektion gibt Ihnen einen Überblick über die verfügbaren Skriptsprachen in Godot. Sie lernen die Vor- und Nachteile der einzelnen Optionen kennen. Im nächsten Teil werden Sie Ihr erstes Skript mit GDScript schreiben.

Skripte hängen an einem Node und erweitern dessen Verhalten. Das bedeutet, dass Skripte alle Funktionen und Eigenschaften des Nodes erben an das sie angehängt sind.

Nehmen wir zum Beispiel ein Spiel, in dem ein Camera2D-Node einem Schiff folgt. Der Camera2D-Node folgt standardmäßig seinem Parent. Stellen Sie sich vor, Sie wollen, dass die Kamera wackelt, wenn der Spieler Schaden nimmt. Da dieses Feature in Godot nicht eingebaut ist, würden Sie ein Skript an den Camera2D-Node anhängen und das Wackeln programmieren.

../../_images/scripting_camera_shake.gif

Verfügbare Skriptsprachen

Godot bietet fünf Gameplay-Programmiersprachen an: GDScript, C#, VisualScript und über seine GDExtension-Technologie C und C++. Es gibt noch mehr von der Community-unterstützte Sprachen, aber dies sind die offiziellen.

Sie können mehrere Sprachen in einem einzigen Projekt verwenden. In einem Team könnten Sie zum Beispiel die Spiellogik in GDScript programmieren, da es schnell zu schreiben ist, und C# oder C++ verwenden, um komplexe Algorithmen zu implementieren und deren Leistung zu maximieren. Oder Sie können alles in GDScript oder C# schreiben. Es ist Ihre Entscheidung.

Wir bieten diese Flexibilität, um den Anforderungen verschiedener Spieleprojekte und Entwickler gerecht zu werden.

Welche Sprache soll verwendet werden?

Wenn Sie Anfänger sind, empfehlen wir mit GDScript zu beginnen. Wir haben diese Sprache speziell für Godot und die Bedürfnisse von Spieleentwicklern entwickelt. Sie hat eine leichtgewichtige und unkomplizierte Syntax und bietet die engste Integration mit Godot.

../../_images/scripting_gdscript.png

Für C# benötigen Sie einen externen Code-Editor wie VSCode oder Visual Studio. Obwohl die C#-Unterstützung mittlerweile ausgereift ist, werden Sie im Vergleich zu GDScript weniger Lernressourcen dafür finden. Deshalb empfehlen wir C# vor allem Anwendern, die bereits Erfahrung mit der Sprache haben.

Schauen wir uns die Merkmale jeder Sprache an, sowie ihre Vor- und Nachteile.

GDScript

GDScript ist eine objektorientierte und imperative Programmiersprache für Godot. Sie wurde von und für Spieleentwickler entwickelt, um Ihnen Zeit beim Programmieren von Spielen zu sparen. Seine Features umfassen:

  • Eine einfache Syntax, die zu kurzen Textdateien führt.

  • Rasend schnelle Kompilierungs- und Ladezeiten.

  • Enge Editor-Integration mit Code-Vervollständigung für Nodes, Signale und weitere Informationen aus der Szene, an die es angehängt ist.

  • Built-in-Vektor- und Transformations-Typen, die eine effiziente Nutzung der linearen Algebra ermöglichen - ein Muss für Spiele.

  • Unterstützt mehrere Threads so effizient wie statisch typisierte Sprachen.

  • Keine Garbage Collection, da dieses Feature bei der Erstellung von Spielen irgendwann im Weg ist. Die Engine zählt Referenzen und verwaltet den Speicher in den meisten Fällen standardmäßig für Sie, aber Sie können den Speicher auch kontrollieren, wenn Sie ihn brauchen.

  • Gradual Typing. Variablen haben standardmäßig dynamische Typen, aber Sie können auch Typ-Hinweise für strenge Typ-Prüfungen verwenden.

GDScript sieht aus wie Python, da Sie Ihre Codeblöcke mit Einrückungen strukturieren, aber in der Praxis funktioniert es nicht auf dieselbe Weise. Es ist von mehreren Sprachen inspiriert, darunter Squirrel, Lua und Python.

Bemerkung

Warum verwenden wir nicht direkt Python oder Lua?

Vor Jahren verwendete Godot Python, dann Lua. Die Integration beider Sprachen erforderte eine Menge Arbeit und hatte starke Einschränkungen. Zum Beispiel war die Unterstützung von Threads eine große Herausforderung bei Python.

Die Entwicklung einer eigenen Sprache bedeutet für uns nicht mehr Arbeit und wir können sie auf die Bedürfnisse von Spieleentwicklern zuschneiden. Wir arbeiten jetzt an Leistungsoptimierungen und Features, die mit Sprachen von Drittanbietern nur schwer zu realisieren wären.

.NET / C#

Da Microsofts C# ein Favorit unter Spieleentwicklern ist, unterstützen wir sie offiziell. C# ist eine ausgereifte und flexible Sprache, für die eine Vielzahl von Bibliotheken geschrieben wurde. Dank einer großzügigen Spende von Microsoft konnten wir die Unterstützung für diese Sprache hinzufügen.

../../_images/scripting_csharp.png

C# besitzt einen hervorragenden Kompromiss zwischen Leistung und Benutzerfreundlichkeit, obwohl man sich seines Garbage Collectors bewusst sein muss.

Bemerkung

Sie müssen die .NET-Edition des Godot-Editors verwenden, um Skripte in C# zu schreiben. Sie können ihn auf der Godot-Website unter Download herunterladen.

Da Godot .NET 6 verwendet, können Sie theoretisch jede .NET-Bibliothek oder jedes .NET-Framework eines Drittanbieters in Godot verwenden, ebenso wie jede Programmiersprache, die mit der Common Language Infrastructure kompatibel ist, z.B. F#, Boo oder ClojureCLR. C# ist jedoch die einzige offiziell unterstützte .NET-Option.

Bemerkung

Der GDScript-Code selbst ist nicht so schnell wie kompilierter C#- oder C++-Code. Allerdings ruft der meiste Skriptcode Funktionen auf, die mit schnellen Algorithmen in C++-Code innerhalb der Engine geschrieben wurden. In vielen Fällen hat das Schreiben von Spiellogik in GDScript, C# oder C++ keine signifikanten Auswirkungen auf die Leistung.

Achtung

Projekte, die in C# mit Godot 4 geschrieben wurden, können derzeit nicht auf die Web-Plattform exportiert werden. Um C# auf dieser Plattform zu verwenden, sollten Sie stattdessen Godot 3 verwenden. Unterstützung für die Plattformen Android und iOS ist ab Godot 4.2 verfügbar, dies ist aber experimentell und es gelten einige Einschränkungen.

C++ per GDExtension

Mit der GDExtension können Sie Spielcode in C++ schreiben, ohne Godot neu kompilieren zu müssen.

../../_images/scripting_cpp.png

Dank unserer internen C-API-Brücke können Sie jede beliebige Version der Sprache verwenden oder Compiler-Hersteller und -Versionen für die generierten gemeinsamen Bibliotheken mischen.

GDExtension ist die beste Wahl, wenn Sie Leistung benötigen. Sie müssen sie nicht für das gesamte Spiel verwenden, da Sie andere Teile in GDScript oder C# schreiben können.

Bei der Arbeit mit GDExtension ähneln die verfügbaren Typen, Funktionen und Eigenschaften stark der eigentlichen C++-API von Godot.

Zusammenfassung

Skripte sind Dateien mit Code, die Sie an ein Node anhängen, um dessen Funktionalität zu erweitern.

Godot unterstützt vier offizielle Skriptsprachen und bietet Ihnen damit Flexibilität zwischen Leistung und Benutzerfreundlichkeit.

Sie können Sprachen mischen, um beispielsweise anspruchsvolle Algorithmen mit C oder C++ zu implementieren und den Großteil der Spiellogik mit GDScript oder C# zu schreiben.