{"id":571,"date":"2025-06-02T09:00:00","date_gmt":"2025-06-02T07:00:00","guid":{"rendered":"https:\/\/staratnight.de\/blog\/?p=571"},"modified":"2025-06-01T16:26:26","modified_gmt":"2025-06-01T14:26:26","slug":"scenes-und-nodes-die-bausteine-deines-godot-spiels","status":"publish","type":"post","link":"https:\/\/staratnight.de\/blog\/scenes-und-nodes-die-bausteine-deines-godot-spiels\/","title":{"rendered":"Scenes und Nodes: Die Bausteine deines Godot-Spiels"},"content":{"rendered":"\n<p>Nachdem du <a href=\"https:\/\/staratnight.de\/blog\/2d-spieleentwicklung-mit-godot-installation-und-erster-ueberblick\/\">Godot erfolgreich installiert und einen ersten Blick auf den Editor geworfen hast<\/a>, tauchen wir nun in das Herzst\u00fcck der Godot Engine ein: Sc<strong>enes<\/strong> und <strong>Nodes<\/strong>. Wenn du aus der Welt der Programmierung kommst, kannst du dir Nodes als die Objekte deines Spiels vorstellen, und Scenes als die Art und Weise, wie diese Objekte organisiert und wiederverwendet werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was sind Szenen und Nodes?<\/h3>\n\n\n\n<p>In Godot ist eine <strong>Scene<\/strong> eine Sammlung von <strong>Nodes<\/strong>, die in einer Baumstruktur organisiert sind \u2013 dem <strong>Scene-Tree<\/strong>, den du im Scene-Dock siehst. Eine Scene kann alles M\u00f6gliche darstellen: einen einzelnen Charakter, ein Objekt in der Spielwelt, ein Level oder sogar das gesamte Spiel. Das Geniale daran ist, dass Szenen <strong>wiederverwendbar<\/strong> sind und du sie in andere Szenen instanziieren kannst.<\/p>\n\n\n\n<p>Jede Szene ben\u00f6tigt einen <strong>Root Node<\/strong>. Das ist der oberste Node in der Baumstruktur deiner Szene.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 1: Eine neue Scene erstellen und einen Wurzel-Node hinzuf\u00fcgen<\/h3>\n\n\n\n<p>Wir beginnen damit, eine leere Leinwand f\u00fcr unser Spiel zu schaffen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Gehe im Men\u00fc oben auf <strong>Scene<\/strong> -&gt; <strong>New Scene<\/strong> (oder dr\u00fccke Strg + N).<\/li>\n\n\n\n<li>Godot fragt dich nun (links im Node-Dock), welchen Typ von Node du als Wurzel f\u00fcr diese neue Szene verwenden m\u00f6chtest. Du siehst eine Liste von Node-Typen.<\/li>\n\n\n\n<li>Da wir uns auf 2D konzentrieren, w\u00e4hlen wir einen passenden 2D-Node. F\u00fcr unseren Fall <strong>Node2D<\/strong>. Er hat Eigenschaften wie Position, Rotation und Skalierung im 2D-Raum.<\/li>\n\n\n\n<li>Klicke dazu einfach auf &#8222;Scene 2D&#8220; im Scene Dock.<\/li>\n<\/ol>\n\n\n\n<p>Du solltest nun im <strong>Scene-Dock<\/strong> (links oben) &#8222;Node2D&#8220; als Root-Node sehen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 2: Die Szene speichern<\/h3>\n\n\n\n<p>Bevor wir weitere Elemente hinzuf\u00fcgen, ist es wichtig, unsere Szene zu speichern:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Gehe im Men\u00fc auf <strong>Scene<\/strong> -&gt; <strong>Save Scene<\/strong> (oder dr\u00fccke Strg + S).<\/li>\n\n\n\n<li>Godot \u00f6ffnet einen Speicher-Dialog.<\/li>\n\n\n\n<li>Gib deiner Szene einen Namen, z.B. <code>main_scene<\/code>. Godot f\u00fcgt automatisch die Dateiendung <code>.tscn<\/code> hinzu.<\/li>\n\n\n\n<li>Speichere die Szene im <strong>Hauptverzeichnis<\/strong> deines Projekts (dort, wo die <code>project.godot<\/code> Datei liegt). Sp\u00e4ter werden wir Ordner f\u00fcr Szenen erstellen, aber f\u00fcr die erste Szene ist das Projekt-Root in Ordnung.<\/li>\n\n\n\n<li>Klicke auf <strong>Save<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p>Du solltest nun im <strong>Filesystem-Dock<\/strong> (links unten) die Datei <code>main_scene.tscn<\/code> sehen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 3: Einen weiteren Node hinzuf\u00fcgen<\/h3>\n\n\n\n<p>Jetzt f\u00fcgen wir der Szene etwas Sichtbares hinzu. Wir werden einen <strong>Sprite2D Node<\/strong> hinzuf\u00fcgen, der einfach ein 2D-Bild anzeigen kann. Nodes werden als Kinder anderer Nodes hinzugef\u00fcgt, um die Baumstruktur zu bilden. Ein Kind-Node erbt die Transformation (Position, Rotation, Skalierung) seines Eltern-Nodes.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stelle sicher, dass du im Scene-Dock den <strong>Node2D<\/strong> (deinen Wurzel-Node) ausgew\u00e4hlt hast.<\/li>\n\n\n\n<li>Klicke auf den Button <strong>&#8222;+&#8220;<\/strong> (Add Child Node) oberhalb des Scene-Trees.<\/li>\n\n\n\n<li>Suche in der Liste nach <strong>Sprite2D <\/strong>(du kannst die Liste filtern).<\/li>\n\n\n\n<li>W\u00e4hle Sprite2D aus und klicke auf <strong>Create<\/strong> (oder doppelklicke).<\/li>\n<\/ol>\n\n\n\n<p>Du solltest jetzt im Scene-Dock sehen, dass unter deinem Node2D ein Sprite2D einger\u00fcckt ist. Das zeigt die Eltern-Kind-Beziehung (Node2D ist der Elternteil von Sprite2D).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 4: Dem Sprite ein Bild zuweisen<\/h3>\n\n\n\n<p>Ein <strong>Sprite2D Node<\/strong> ist dazu da, ein 2D-Bild anzuzeigen. Dieses Bild wird in Godot als <strong>Texture<\/strong> bezeichnet. Ein Sprite2D ben\u00f6tigt also eine zugewiesene Texture, um sichtbar zu sein. Hier kommt der <strong>Inspector<\/strong> ins Spiel, dein Werkzeug, um die Eigenschaften des aktuell ausgew\u00e4hlten Nodes zu sehen und zu \u00e4ndern.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Klicke im Scene-Dock auf deinen <strong>Sprite2D Node<\/strong>, um ihn auszuw\u00e4hlen. Der Inspector sollte sich nun aktualisieren und die Eigenschaften des Sprite2D Nodes anzeigen.<\/li>\n\n\n\n<li>Suche im Inspector (rechts am Bildschirm) nach der Eigenschaft <strong>&#8222;Texture&#8220;<\/strong> (ganz oben, im Abschnitt &#8222;Sprite2D&#8220;). Momentan steht dort &#8222;&lt;empty&gt;&#8220;.<\/li>\n\n\n\n<li>Klicke auf das Dropdown-Men\u00fc oder das Wort &#8222;&lt;empty&gt;. Es \u00f6ffnet sich ein Men\u00fc.<\/li>\n\n\n\n<li>W\u00e4hle im Men\u00fc <strong>&#8222;Load&#8220;<\/strong>.<\/li>\n\n\n\n<li>Es \u00f6ffnet sich ein Dateidialog, der standardm\u00e4\u00dfig in deinem Projektordner ist. Godot-Projekte enthalten standardm\u00e4\u00dfig eine Datei namens <code>icon.svg<\/code> (das Godot-Logo). Diese ist perfekt, um sie als erste Texture zu verwenden.<\/li>\n\n\n\n<li>W\u00e4hle die Datei <code>icon.svg<\/code> aus und klicke auf <strong>Open<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p>Schau jetzt in den zentralen <strong>Viewport.<\/strong> Du solltest nun das Godot-Logo Mitte sehen.&nbsp;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 5: Den Sprite positionieren<\/h3>\n\n\n\n<p>Dein Sprite2D ist ein Child des Node2D. Node2D hat eine Transform-Eigenschaft, die Position, Rotation und Skalierung im 2D-Raum bestimmt. Da Sprite2D ein Child ist, erbt es diese Transformation und hat zus\u00e4tzlich eigene.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stelle sicher, dass dein <strong>Sprite2D Node<\/strong> immer noch im Scene Dock (links) ausgew\u00e4hlt ist und seine Eigenschaften im Inspector (rechts) angezeigt werden.<\/li>\n\n\n\n<li>Suche im Inspector den Abschnitt <strong>&#8222;Transform&#8220;<\/strong>.<\/li>\n\n\n\n<li>Unter &#8222;Transform&#8220; findest du die Eigenschaft <strong>&#8222;Position&#8220;<\/strong>, die aus X- und Y-Koordinaten besteht. Die Mitte des Viewports ist standardm\u00e4\u00dfig bei (0, 0).<\/li>\n\n\n\n<li>\u00c4ndere die Werte f\u00fcr X und Y, z.B. setze X auf 100 und Y auf 100. Beobachte, wie sich der Sprite im Viewport verschiebt.<\/li>\n\n\n\n<li>Alternativ: W\u00e4hle in der <strong>Toolbar<\/strong> (oben) das <strong>&#8222;Move&#8220; Werkzeug<\/strong> aus (Fadenkreuz-Symbol mit den Pfeilen, Shortcut: W). Klicke auf den Sprite im Viewport und ziehe ihn mit der Maus herum. Du siehst, wie sich die &#8222;Position&#8220;-Werte im Inspector \u00e4ndern, w\u00e4hrend du ihn bewegst.<\/li>\n<\/ol>\n\n\n\n<p><strong>Tipp:<\/strong> Der Umgang mit den Werkzeugen ist ein wenig gew\u00f6hnungsbed\u00fcrftig. Wenn im Viewport mal was nicht so funktioniert, wie du erwartest, liegt es mit hoher Wahrscheinlichkeit daran, dass du das falsche Werkzeug ausgew\u00e4hlt hast. Am besten stellst du es immer wieder zur\u00fcck auf &#8222;Select Mode&#8220; (das ist das Pfeil-Symbol, Shortcut: Q).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 6: Eine weitere Eigenschaft \u00e4ndern<\/h3>\n\n\n\n<p>Um ein Gef\u00fchl f\u00fcr den Inspector zu bekommen, kannst du versuchen, eine andere Eigenschaft zu \u00e4ndern:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Suche im Inspector nach dem Abschnitt <strong>&#8222;Visibility&#8220;<\/strong>.<\/li>\n\n\n\n<li>Finde die Eigenschaft <strong>&#8222;Modulate&#8220;<\/strong>. Diese steuert die Farbe und Transparenz des Sprites.<\/li>\n\n\n\n<li>Klicke auf das Farbfeld neben &#8222;Modulate&#8220;. Ein Farbw\u00e4hler \u00f6ffnet sich. W\u00e4hle eine beliebige Farbe aus und sieh, wie sich die Farbe des Sprites im Viewport \u00e4ndert.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Szenen im Spielmodus ausf\u00fchren<\/h3>\n\n\n\n<p>Du hast jetzt eine Scene erstellt, einen Sprite hinzugef\u00fcgt, ihm eine Texture gegeben und ihn positioniert. Aber wie sieht das Ganze im Spiel aus? Godot bietet dir zwei Hauptm\u00f6glichkeiten, dein Spiel oder deine Scene auszuf\u00fchren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Aktuelle Scene ausf\u00fchren:<\/strong> Dies startet nur die Scene, die du gerade im Editor ge\u00f6ffnet hast. Das ist super n\u00fctzlich, wenn du an einem bestimmten Teil deines Spiels arbeitest (z.B. einem Charakter, einem Level) und ihn schnell testen willst, ohne das gesamte Spiel zu starten.<\/li>\n\n\n\n<li><strong>Projekt ausf\u00fchren:<\/strong> Dies startet das gesamte Spiel ab der &#8222;Main Scene&#8220;, die du im Projekt festgelegt hast (machen wir sp\u00e4ter).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 7: Die aktuelle Scene ausf\u00fchren<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Schau in die <strong>Toolbar<\/strong> ganz oben rechts.<\/li>\n\n\n\n<li>Suche den Button <strong>&#8222;Run Current Scene&#8220;<\/strong>. Er sieht aus wie ein Filmklappen-Symbol mit einem Play-Button darauf. Das Tastenk\u00fcrzel daf\u00fcr ist F6.<\/li>\n\n\n\n<li>Klicke diesen Button (oder dr\u00fccke F6).<\/li>\n<\/ol>\n\n\n\n<p>Es \u00f6ffnet sich ein neues Fenster, das deine <code>main_scene.tscn<\/code> anzeigt. Du siehst das Godot-Logo an der Position, die du zuvor im Editor eingestellt hast.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 8: Das Projekt ausf\u00fchren und die Main Scene festlegen<\/h3>\n\n\n\n<p>Wenn du das erste Mal das gesamte Projekt startest, fragt Godot dich, welche Scene die Main Scene sein soll. Diese Scene wird immer als Erstes geladen, wenn das Spiel startet.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Schau wieder in die <strong>Toolbar <\/strong>ganz oben rechts.<\/li>\n\n\n\n<li>Klicke nun auf den ganz linken Play-Button <strong>&#8222;Run Project&#8220;<\/strong> (oder dr\u00fccke das Tastenk\u00fcrzel F5).<\/li>\n\n\n\n<li>Da dies das erste Mal ist, dass du das Projekt startest, erscheint ein Dialogfenster, das dich fragt: &#8222;No main scene has ever been defined. Select one?&#8220;.<\/li>\n\n\n\n<li>Klicke auf <strong>&#8222;Select&#8220;<\/strong>.<\/li>\n\n\n\n<li>Es \u00f6ffnet sich ein Dateidialog. W\u00e4hle deine Datei <code>main_scene.tscn<\/code> aus.<\/li>\n\n\n\n<li>Klicke auf <strong>&#8222;Open&#8220;<\/strong>.<\/li>\n\n\n\n<li>Da wir nur eine Scene haben, kannst du auch einfach auf &#8222;<strong>Select Current<\/strong>&#8220; klicken.<\/li>\n<\/ol>\n\n\n\n<p>Godot wird nun die <code>main_scene.tscn<\/code> als Main Scene f\u00fcr dein Projekt festlegen und sie dann ausf\u00fchren. Du siehst wieder dasselbe Fenster mit dem Godot-Logo.<\/p>\n\n\n\n<p>Beim n\u00e4chsten Mal, wenn du F5 dr\u00fcckst, wird diese Scene direkt gestartet, ohne dass du gefragt wirst. Die Einstellung wird in der <code>project.godot<\/code>-Datei gespeichert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Dein n\u00e4chster Schritt<\/h3>\n\n\n\n<p>Sehr gut, du hast eine Scene erstellt, einen Sprite2D hinzugef\u00fcgt und mit einer Textur versehen und dein Spiel gestartet.<br>Als n\u00e4chstes werden wir ein Script an den Sprite anh\u00e4ngen und damit f\u00fcr ein wenig Bewegung sorgen.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem du Godot erfolgreich installiert und einen ersten Blick auf den Editor geworfen hast, tauchen wir nun in das Herzst\u00fcck der Godot Engine&hellip;<\/p>\n","protected":false},"author":2,"featured_media":601,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[35,34,37],"class_list":["post-571","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-godot","tag-2d-game","tag-godot","tag-sprite"],"_links":{"self":[{"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/posts\/571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/comments?post=571"}],"version-history":[{"count":3,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/posts\/571\/revisions"}],"predecessor-version":[{"id":607,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/posts\/571\/revisions\/607"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/media\/601"}],"wp:attachment":[{"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/media?parent=571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/categories?post=571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staratnight.de\/blog\/wp-json\/wp\/v2\/tags?post=571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}