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. Das Camera2D-Node folgt standardmäßig seinem Elternteil. Stellen Sie sich vor, Sie möchten, dass er wackelt, wenn der Spieler Schaden nimmt. Da diese Funktion in Godot nicht eingebaut ist, würden Sie ein Skript anhängen und das Wackeln der Kamera programmieren.

../../_images/scripting_camera_shake.gif

Verfügbare Skriptsprachen

Godot bietet fünf Programmiersprachen für das Gameplay: GDScript, C#, VisualScript sowie C++ und C über seine GDNative-Technologie. Es gibt noch weitere 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.

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 Unterstützung von C# inzwischen ausgereift ist, finden Sie im Vergleich zu GDScript weniger Lernressourcen für diese Sprache. Deshalb empfehlen wir C# vor allem Benutzern, die bereits Erfahrung mit dieser 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. Dies ist eine der Funktionen, die wir mit einer Sprache eines Drittanbieters wie Lua oder Python nicht ohne weiteres bereitstellen konnten.

  • 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

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 für Ihr Spiel spezifisch sind. Zum Beispiel, um KI, 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.

Diese Sprache ist die beste Wahl für die Leistung. Sie müssen sie nicht für ein ganzes Spiel 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.