Szenen und Nodes

Einführung

../../_images/chef.png

Stell Sie sich für einen Moment vor, Sie wären kein Spieleentwickler mehr. Stattdessen sind Sie ein Koch! Tauschen Ihr Hipster-Outfit gegen eine Kochmütze und eine Zweireiher-Jacke aus. Statt Spiele zu erstellen, kreieren Sie jetzt neue und leckere Rezepte für Ihre 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 Ihre 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 Sie kochen können.

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 und diesen in jedem Frame behandeln.
  • Er kann erweitert werden (um weitere Funktionen).
  • Er kann in anderen Nodes als Unterobjekt eingehängt 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 Nodes über unterschiedliche Funktionen verfügen, können durch ihre Kombination komplexere Funktionen erstellt werden.

Mach Sie sich keine Sorgen, wenn Sie noch nicht alles komplett verstanden haben. Wir werden in den nächsten Abschnitten die Konzepte vertiefen. Das Wichtigste, dass Sie sich im Moment merken sollten 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 instanziiert 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

Zum öffnen des Godot Editor, öffnen Sie ein bestehendes Projekt oder erstellen ein neues:

../../_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. Diese Schaltfläche ist die Hauptmethode zum Hinzufügen neuer Nodes zu einer Szene und fügt den ausgewählten Node immer als untergeordnetes Element des aktuell ausgewählten Nodes (oder in einer leeren Szene als Wurzel-Node) hinzu.

Bemerkung

In einer leeren Szene (ohne Wurzel-Node) zeigt das Szenen-Dock verschiedene Optionen, um der Szene schnell einen Wurzel-Node hinzuzufügen. "2D-Szene" fügt einen 2D-Node hinzu, "3D-Szene" fügt einen räumlichen Node hinzu, "Benutzeroberfläche" fügt einen Kontroll-Node hinzu und "Anderer Node", mit dem Sie einen beliebigen Node auswählen können (dies entspricht dem Drücken des "Untergeordneten Node hinzufügen" -Taste). Sie können auch das sternförmige Symbol drücken, um die Anzeige Ihrer bevorzugten Nodes umzuschalten.

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-Node zu dieser Szene hinzuzufügen, können Sie auf die Schaltfläche Custom Node oder den Plus-Button oben links klicken. In nicht leeren Szenen verwenden Sie die Schaltfläche Node hinzufügen, um Unter-Nodes 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ählen Sie aus der Liste den "Label"-Node aus. Am schnellsten finden Sie 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.

Das Node wird im Szenenbaum-Editor im Szenendock angezeigt, und die Beschriftungseigenschaften werden im Inspektor-Dock angezeigt.

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

../../_images/hw.png

OK, jetzt ist alles bereit um die Szene abzuspielen! Klicken Sie auf "Szene starten" in der oberen Leiste (die kleine Filmklappe mit dem Play-Symbol) oder drücken 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 Ihnen 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ählen Sie im Menü "Projekt" -> "Projekteinstellungen" aus. Versuchen Sie es jetzt einmal.

Nachdem sich das Fenster geöffnet hat, wollen wir die Hauptszene festlegen. Suchen Sie dazu die Application/Run/Main Scene-Einstellung auf und klicken 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 Sie gerade bearbeiten.

Der Projekteinstellungsdialog bietet eine Vielzahl von Optionen, die in project.godot gespeichert werden und zeigt anfänglich die jeweiligen Standardwerte an. Sobald Sie einen Wert ändern, 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 dieser Anleitung haben wir von "Szenen und Nodes" gesprochen, aber bisher haben wir nur mit einer Szene und einem Node gearbeitet! Keine Sorge, im der nächsten Anleitung werden wir genau da ansetzen…