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.

Zum Beispiel, ein Spiel, in welchem eine Kamera, ein 'Camera2D'-Node, einem Schiff folgt. Diese Kamera folgt dem übergeordneten Node standardgemäß. Stellen Sie sich vor, Sie möchten, dass die Kamera wackelt, wenn der Spieler Schaden nimmt. Da diese Funktion in Godot nicht als solche existiert, müssten Sie ein Skript an das 'Camera2D'-Node anhängen und diesen Wackel-Effekt in dem Skript selbst implementieren.

../../_images/scripting_camera_shake.gif

Verfügbare Skriptsprachen

Godot bietet fünf Gameplay-Programmiersprachen an: GDScript, C#, VisualScript und über seine GDNative-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, Leveldesigner Quests in der grafischen Sprache VisualScript skripten lassen und C# oder C++ verwenden, um komplexe Algorithmen zu implementieren und ihre 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.

Warnung

Godot 4.0 wird kein VisualScript mehr haben. Deswegen empfehlen wir, keine neuen Projekte mit visuellem scripting in Godot zu beginnen. Für spätere Godot 4.x Versionen könnte VisualScript als eine Erweiterung implementiert werden.

Während Godot 3.x VisualScript weiterhin offiziell unterstützt, empfehlen wir stattdessen GDScript auszutesten, vor allem dann, wenn du vor hast dein Projekt zu Godot 4 zu migrieren.

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 Funktionen umfassen:

  • Eine einfache Syntax, die zu kurzen Dateien 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.

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

  • Graduale Typisierung. 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 so. 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 Funktionen, 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 Müllsammlers bewusst sein muss.

Bemerkung

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

Da Godot die Mono .NET-Laufzeitumgebung verwendet, können Sie theoretisch jede .NET-Bibliothek oder jedes .NET-Framework eines Drittanbieters in Godot verwenden, ebenso wie jede Common Language Infrastructure-konforme Programmiersprache wie 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.

VisualScript

Warnung

Godot 4.0 wird kein VisualScript mehr haben. Deswegen empfehlen wir, keine neuen Projekte mit visuellem scripting in Godot zu beginnen. Für spätere Godot 4.x Versionen könnte VisualScript als eine Erweiterung implementiert werden.

Während Godot 3.x VisualScript weiterhin offiziell unterstützt, empfehlen wir stattdessen GDScript auszutesten, vor allem dann, wenn du vor hast dein Projekt zu Godot 4 zu migrieren.

Visual Scripting ist eine graphenbasierte visuelle Programmiersprache, bei der man Blöcke miteinander verbindet. Sie kann ein großartiges Werkzeug für Nicht-Programmierer wie Spieldesigner und Künstler sein.

../../_images/scripting_visualscript.png

Sie können andere Sprachen verwenden, um benutzerdefinierte Blöcke zu erstellen, die spezifisch für Ihr Spiel sind, z. B. um KIs, Quests oder Dialoge zu schreiben. Darin liegt die Stärke von VisualScript.

Obwohl es alle grundlegenden Bausteine bietet, die Sie benötigen, um komplette Spiele zu programmieren, raten wir davon ab, VisualScript auf diese Weise zu verwenden. Die Programmierung mit VisualScript ist im Vergleich zu anderen Programmiersprachen langsam.

Siehe auch

Weitere Informationen finden Sie unter Einführung in VisualScript.

C und C++ über GDNative

Mit GDNative können Sie Spielcode in C oder C++ schreiben, ohne dass Sie Godot neu kompilieren oder gar neu starten müssen.

../../_images/scripting_cpp.png

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

GDNative ist die beste Wahl für Leistung. Sie müssen sie nicht während eines gesamten Spiels verwenden, da Sie andere Teile in GDScript, C# oder VisualScript schreiben können.

Bei der Arbeit mit GDNative ähneln die verfügbaren Typen, Funktionen und Eigenschaften sehr 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 fünf offizielle Skriptsprachen und bietet Ihnen damit Flexibilität in Bezug auf 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.