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.

Erstellen eines neuen Projekts

Veranschaulichen wir die abstrakten Konzepte an einem Beispiel. Einer langen Tradition folgend, beginnen wir mit einem „Hello World“-Projekt. Das wird unser Einstieg in die Nutzung des Editors sein.

Wenn Du die Godot-Programmdatei außerhalb eines Projekts ausführst, wird die Projektverwaltung angezeigt. Dieser hilft Entwicklern bei der Organisation ihrer Projekte.

../../_images/project_manager.png

Um ein neues Projekt anzulegen, klicke auf die Schaltfläche „Neues Projekt“. Wähle und erstelle einen Verzeichnispfad für das Spiel und gib den Projektnamen „Neues Projekt“ ein:

../../_images/create_new_project.png

Editor

Nachdem Du „Neues Projekt“ angelegt hast, öffne es. Dadurch wird der Godot-Editor gestartet:

../../_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.

Drück dazu auf die „Node hier anhängen“-Schaltfläche (das Pluszeichen im Kopf des Szene-Fensters):

../../_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

If this doesn’t immediately work and you have a hiDPI display on at least one of your monitors, go to Project → Project Settings → Display → Window then enable Allow Hidpi under Dpi.

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…