Szenen und Nodes

Einführung

../../_images/chef.png

Stell Dir für einen Moment vor, Du wärest kein Spieleentwickler mehr. Stattdessen bist Du ein Koch! Tausche Dein Hipster-Outfit gegen eine Toque und eine Zweireiher-Jacke aus. Statt Spiele zu erstellen, kreierst Du jetzt neue und leckere Rezepte für Deine Gäste.

Also, wie kreiert der Koch ein Rezept? Rezepte sind in zwei Abschnitte unterteilt: der erste beinhaltet die Zutaten und der zweite die Anleitung. Auf diese Weise kann jeder dem Rezept folgen und Deine großartige Kreation genießen.

Spiele in Godot zu entwickeln, fühlt sich ganz ähnlich an. Die Engine ist wie eine Küche. In dieser Küche sind die Nodes wie ein Kühlschrank voller frischer Zutaten, mit denen Du kochen kannst.

Es gibt viele Arten von Nodes. Einige zeigen Bilder, andere spielen Töne ab, wieder andere stellen 3D-Modelle dar usw. Es gibt Dutzende von ihnen.

Nodes („Knoten“)

Aber fangen wir mit den Grundlagen an. Nodes sind die Grundbausteine, aus denen ein Spiel aufgebaut ist. Wie oben erwähnt, gibt es Nodes für eine Vielzahl besonderer Aufgaben. Unabhängig davon haben alle Nodes folgende Attribute gemeinsam:

  • Er hat einen Namen.
  • Er hat veränderbare Eigenschaften.
  • Er kann einen Callback erhalten, um jeden Frame zu verarbeiten.
  • Er kann erweitert werden (um weitere Funktionen).
  • Er kann anderen Nodes als Unterobjekt hinzugefügt werden.
../../_images/tree.png

Der letzte Punkt ist besonders wichtig. Ein Node kann weitere Nodes als „Kind“-Objekte enthalten. Werden Nodes in dieser Art und Weise verschachtelt, entstehen Bäume.

Nodes in Godot auf diese Art zu ordnen, ermöglicht es, Projekte übersichtlich zu organisieren. Da verschiedene Knoten unterschiedliche Funktionen haben, können durch ihre Kombination komplexere Funktionen erstellt werden.

Mach Dir keine Sorgen, wenn Du noch nicht alles komplett verstanden hast. Wir werden in den nächsten Abschnitten die Konzepte vertiefen. Das Wichtigste, was Du Dir im Moment merken solltest, ist, dass Spiele in Godot aus Nodes aufgebaut sind und diese in einer Baumstruktur angeordnet werden können.

Szenen

../../_images/scene_tree_example.png

Nachdem das Konzept von Nodes geklärt ist, wenden wir uns nun den Szenen zu.

Eine Szene besteht aus einer Reihe von Nodes, die hierarchisch organisiert sind (wie ein Baum verzweigt). Ferner gilt für eine Szene:

  • Sie hat stets einen Wurzel-Node.
  • Sie kann abgespeichert und wieder geladen werden.
  • Sie kann instanziert werden (dazu später mehr).

Ein Spiel zu starten, heißt, eine Szene zu starten. Ein Projekt kann mehrere Szenen enthalten, aber um ein Spiel zu starten, muss eine davon als Haupt-Szene (Main Scene) festgelegt werden.

Grundsätzlich ist der Godot-Editor ein Szenen-Editor. Er verfügt über zahlreiche Werkzeuge zur Bearbeitung von 2D- und 3D-Szenen sowie Benutzeroberflächen, aber der Editor basiert auf dem Konzept der Bearbeitung einer Szene und den Nodes, aus denen sie besteht.

Editor

Open the project you made in Einführung in den Godot-Editor, or create a new one. This will open the Godot editor:

../../_images/empty_editor.png

Wie bereits erwähnt, fühlt sich die Spieleentwicklung in Godot so an, als würde man in einer Küche hantieren. Also öffnen wir mal den Kühlschrank und fügen dem Projekt ein paar frische Nodes hinzu. Wir beginnen mit einer „Hello World“-Nachricht, die wir auf dem Bildschirm ausgeben werden.

Um dies zu erreichen, müssen wir eine „Label“-Node hinzufügen. Clicke dafür den „Node hier anhängen“-Button (Plus-Symbol) oben links im „Szene“-Fenster. Dieser Button ist die Haupt-Methode, um neue Nodes zu einer Szene hinzuzufügen. Die Node wird immer eine Kind-Node der aktuell ausgewählten Node sein. Wenn keine Node ausgewählt ist, wird die neue Node ein Kind der Haupt („root“)-Node.

Bemerkung

In einer leeren Szene (ohne Haupt [„root“]-Node) zeigt das Szenen-Fenster verschiedene Optionen für eine Haupt-Node an. „2D Szene“ fügt eine Node2D-Node hinzu, „3D Szene“ fügt eine Spatial-Node hinzu, „Benutzerschnittstelle“ fügt eine Control-Node hinzu und „Selbst-erstellte Node“ lässt dich eine beliebige Node auswählen (entspricht dem Plus-Button oben links im Szenen-Fenster). Der Stern-Button zeigt deine Node-Favoriten an, damit du sie direkt als „Selbst-erstellte Node“ benutzen kannst.

Beachte, dass diese Voreinstellungen hier der Einfachheit halber aufgeführt sind und für die verschiedenen Szenentypen nicht zwingend erforderlich sind. Nicht jede 3D-Szene benötigt eine Spatial-Node als Haupt-Node, ebenso wenig wie jede GUI- oder 2D-Szene eine Control-Node oder Node2D als Haupt-Node braucht.

Um nun einen Label-Knoten zu dieser Szene hinzuzufügen, kannst Du auf die Schaltfläche Custom Node oder den Plus-Button oben links klicken. In Szenen, die nicht leer sind, verwendst Du die Schaltfläche Node hinzufügen, um Unternodes zu erstellen.

../../_images/newnode_button.png

Daraufhin öffnet sich der Dialog „Node erstellen“, in dem die lange Liste der Nodes angezeigt wird, die erzeugt werden können:

../../_images/node_classes.png

Wähle aus der Liste den „Label“-Node aus. Am schnellsten findest Du den Node wahrscheinlich durch die Suche:

../../_images/node_search_label.png

Jetzt nur noch auf „Erstellen“ drücken! Nach einem Druck auf die Schaltfläche passiert eine ganze Menge:

../../_images/editor_with_label.png

Zunächst einmal wechselt die Szene zum 2D-Editor (da „Label“ ein 2D-Node-Typ ist), und das Label erscheint, vorausgewählt, in der oberen linken Ecke des Ansichtsfensters.

Der Node erscheint als neuer Eintrag im Szenenbaum (oben rechts) und die Label-Eigenschaften werden im Inspektor aufgeführt (unten rechts).

Mit dem nächsten Schritt wird die „Text“-Eigenschaft des Labels geändert. Ändern wir es zu „Hello World“:

../../_images/hw.png

OK, alles bereit zum Ausführen der Szene! Betätige die „Szene starten“-Schaltfläche oben rechts (die kleine Filmklappe mit dem Play-Symbol) oder drücke F6:

../../_images/playscene.png

Uuuund… Ups.

../../_images/neversaved.png

Szenen müssen abgespeichert sein bevor sie ausgeführt werden können. Speichere also die Szene bspw. als „Hello.tscn“ in „Szene“ -> „Szene speichern“ ab:

../../_images/save_scene.png

Und hier tut sich nun etwas Interessantes auf. Der Dateidialog ist ein besonderer Dateidialog, der es Dir ermöglicht, ausschließlich innerhalb des Projekts zu speichern. Das Hauptverzeichnis des Projekts ist „res://“, was soviel wie „Ressourcenpfad“ bedeutet. Das heißt, Dateien können nur innerhalb des Projektes abgespeichert werden. Behalte das bei zukünftigen Dateioperationen immer im Hinterkopf, dass „res://“ für den Ressourcenpfad steht und unabhängig von Plattform oder Installationsort stets dafür genutzt wird, um auf Dateien innerhalb des Spiels heraus zuzugreifen.

Nach dem Abspeichern der Szene und nochmaligen Drücken von „Szene starten“ sollte die „Hello World“-Demo nun endlich ausgeführt werden:

../../_images/helloworld.png

Geschafft!

Bemerkung

Falls dies nicht sofort funktioniert und ein hiDPI-Display gebraucht wird, kann dies unter Projekt → Projekteinstellungen → Display → Window aktiviert werden, indem unter Dpi, Allow Hidpi eingeschaltet wird.

Konfigurieren des Projekts

OK, es wird Zeit, das Projekt einzurichten. Bisher war die einzige Möglichkeit, etwas auszuführen, die aktuelle Szene zu starten. Projekte können allerdings mehrere Szenen haben, deshalb muss eine davon als Hauptszene bestimmt werden. Das ist die Szene, die gestartet wird, wenn das Projekt ausgeführt wird.

Diese Einstellungen werden alle in der project.godot-Datei gesichert, die nichts anderes ist als eine gewöhnliche INI-Datei. In dieser Datei werden dutzende Einstellungen gespeichert, die festlegen, wie ein Projekt auszuführen ist. Um das Bearbeiten dieser Einstellungen zu vereinfachen, stellt Godot den „Projekteinstellungen“-Dialog zur Verfügung.

Um diesen Dialog aufzurufen, wähle im Menü „Projekt“ -> „Projekteinstellungen“ aus. Versuch es jetzt einmal.

Nachdem sich das Fenster geöffnet hat, wollen wir die Hauptszene festlegen. Suche dazu die Application/Run/Main Scene-Einstellung auf und klicke rechts auf das kleine Dateisymbol, um die ‚Hello.tscn‘ als Hauptszene zu selektieren.

../../_images/main_scene.png

Mit dieser Änderung wird von nun an beim Drücken des „Starten“-Knopfes (oder F5) diese Szene ausgeführt, ganz gleich, welche Szene Du gerade bearbeitest.

Der Projekteinstellungsdialog bietet eine Vielzahl von Optionen, die in project.godot gespeichert werden und zeigt anfänglich die jeweiligen Standardwerte an. Sobald Du einen Wert änderst, wird links neben dem Eintrag ein sich gegen den Uhrzeigzeigersinn drehender Pfeil angezeigt. Dieser bedeutet, dass die Eigenschaft in der Datei project.godot gespeichert wird. Ein Klick auf diesen Pfeil setzt den Wert wieder auf Standard.

Übrigens ist es möglich, benutzerdefinierte Projektparameter hinzuzufügen und diese während der Laufzeit über den ProjectSettings-Singelton abzufragen.

Fortsetzung folgt…

In diesem Tutorial haben wir von „Szenen und Nodes“ gesprochen, aber bisher haben wir nur mit einer Szene und einem Node gearbeitet! Keine Sorge, im nächsten Tutorial werden wir genau da ansetzen…