knuspermagier.de
Ein L und zwei P. Philipp!

Meine fünfzehn Minuten mit Godot

Bereits vor etlichen Monaten habe ich mal kurz bei Godot, damals noch in der Version 3 reingeschaut und fand das alles schon ganz interessant. Allerdings sorgte ich damals nur dafür, dass drei Bälle eine schiefe Ebene herunter rollten und machte wieder aus.

Nun kam in 2023 Version 4 raus und ich hatte im Dezember ein bisschen Zeit im vorweihnachtlichen Stress um mir ein paar Youtube-Tutorials anzuschauen und auch selbst herumzuprobieren. Bei den ganzen Verbesserungen und Änderungen muss man sagen, dass sich das Warten gelohnt hat!

(Ja gut, der letzte Satz war hauptsächlich dazu da, irgendwie “Warten” unterzubringen)


Ich hatte eine ganz lose Spiel-Idee. So ein 2D-Spiel in der typischen Zelda-Draufsicht, man spielt eine kleine Wühlmaus, die Dinge einsammelt. Die Spielmechanik, die ich ganz witzig fand und implementieren wollte, war, dass man sich, wie es sich für eine Wühlmaus gehört, überall eingraben kann und damit in die Unterwelt wechselt. So kann man sich zum Beispiel unter Zäunen durchgraben, oder bösen NPCs ausweichen. Vielleicht war ich etwas inspiriert vom neuen Zelda.

Ich suchte mir also ein Tutorial, das ungefähr sowas erklärt und fand dieses hier, was nette und kurze Happen an Informationen darbot. Meinen erster Mindblow-Moment gab es direkt am Anfang, als man einfach mal ein kostenloses Asset-Pack für sein neues Spiel herunterläd. Ich hatte nicht damit gerechnet, dass es unendlich viele Asset-Packs mit tausenden Sprites, Animationen, Tiles und allem möglichen Kram gibt. Im Tutorial wird dieses Ninja-Pack verwendet, ich lud mir dann dieses, aber auch itch.io gibt es unendlich viele und es gibt auch noch kenney.nl mit… noch mehr.


Ich fing also an zu basteln und mich daran zu gewöhnen, wie alles funktioniert. Was sind Szenen, welche Nodes muss man wo im Tree platzieren, damit es funktioniert. Insgesamt kam ich mit dem Tutorial und etwas Trial and Error sehr gut voran. Es ist wirklich komplett umwerfend, wie viele Funktionen in dieser Software stecken.

Zuerst versuchte ich mir also zu erschließen, wie ich meine Vorstellung mit den zwei “Welten” baue. Ich legte also zwei Szenen an, Oberwelt und Unterwelt und schrieb ein Script um auf Tastendruck zwischen beiden zu wechseln. Mir fiel natürlich direkt auf, dass die Spielfigur direkt wieder zum Startpunkt wechselt, denn jede Szene hat ihren eigenen Player und die Übernahme der Daten muss man komplett selber handlen. Hier konnte ich mich auch direkt am Anfang der ganzen Sache direkt in ein Rabbit Hole stürzen. “Wie baue ich am besten etwas, wo man frei zwischen verschiedenen Welten wechseln kann” ist nicht unbedingt eine Anforderung, die in jedem Anfänger-Tutorial direkt abgedeckt wird.

Ich hatte mehrere Ideen:

  • Ich lasse alles in einer Szene, und regele die unterschiedlichen Welten nur als Ebenen in der TileMap, die ich dann je nachdem ausblende
  • Ich speichere mir beim Szenenwechsel Position usw vom Player und lade es in der neuen Szene rein
  • Ich speichere mir die Player-Node, entferne sie aus der alten Szene und werfe sie einfach in die neue Szene rein.

Ich entschied mich erstmal für das letzte. Wahrscheinlich ist es die schmutzigste Art das zu tun, aber es funktioniert!

Als die Grundfunktionalität des Spiels geklärt war, kümmerte ich mich um andere Dinge. Kollisionskram für die TileMap, damit man ein paar Begrenzungen hat, wo man nicht lang gehen kann. Ich baute ein, dass, wenn man sich “eingräbt”, automatisch die aktuelle Tile in der TileMap gewechselt wird, damit an der Grabestelle ein schöner Haufen ist. In der Unterwelt is am Anfang natürlich auch noch alles mit Erde gefüllt und Gänge müssen erstmal noch gegraben werden.


Als nächstes sollte man natürlich Items einsammeln und ablegen können. Also nahm ich mir erstmal das nächstgelegene Sprite, was zufällig ein Ei war, und baute später sogar noch eine Aufsammel-Animation ein. Auch das funktionierte überraschend einfach.


Doch woher kommen die Eier? Ich brauchte ein paar Tiere, die Eier legen. Ich fand allerdings erstmal nur eine Kuh. Aber auch die war schnell integriert, sogar mit Idle- und Lauf-Animationen. Wenn man die fertigen Assets hat, lässt sich das alles so schnell in Godot zusammenstecken, dass ist erstaunlich. Ich wollte noch für etwas Dynamik sorgen und baute ein, dass die Kuh etwas zufällig herumläuft. Dafür benutzte ich den NavigationAgent, was nach etwas herumprobieren auch völlig problemlos war.

Später fand ich noch ein Küken, das kann an sich auch keine Eier legen, aber es ist ja auch nur ein Spiel!


Als nächstes entdeckte ich die Terrains. Damit muss man im Editor nur das Tileset entsprechend markieren und schwupps kann die Engine richtige große Bereiche generieren, wo auch die Ränder und alles korrekt passen. Vor allem beim Graben im Untergrund sieht das am Ende viel besser aus.

Hier und da hatte ich noch etwas nicht perfekt markiert, daher ist es noch etwas kaputt, aber vom Prinzip her, mega cool.


Im nächsten Schritt wollte ich etwas an Pixelart verzweifeln und mir doch noch eine süße Wühlmaus pixeln, was mir leider nur so mittelgut gelang. Ebenfalls baute ich einen schöneren Haufen


Ungefähr zwei Wochen lang habe ich mich nun also mit Godot beschäftigt und immer mal wieder 20-30 Minuten investiert und immer große Fortschritte gemacht und viel Spaß gehabt und doch habe ich die Sache jetzt auch schon genauso lang nicht mehr angefasst — warum nur?

Also abgesehen davon, dass das Spielkonzept natürlich jetzt nicht besonders ausgereift war, würde jetzt die wirkliche Arbeit beginnen. Ich müsste eine ganze Welt im TileMap-Editor zusammenbauen, noch mehr NPCs einbauen und noch unendlich viel kreative Arbeit leisten, dass daraus irgendetwas rundes wird. Tausend Sachen, die einem Godot zwar möglichst leicht macht, aber die man am Ende natürlich trotzdem machen muss. Da fehlt mir jetzt etwas die Vision um daran Spaß zu haben.

Letztendlich war meine Zielsetzung ja nur, dass ich mir mal Godot angucke und ein Gefühl dafür bekomme. Mein Gefühl ist, dass es ein ultra ausgereiftes und tolles Projekt ist, dass einem so viel bietet und vor allem dank der vielen verfügbaren Tutorials einen so leichten Einstieg ermöglicht.

Wenn ich irgendwann nochmal eine ausgefallenere Idee habe, weiß ich auf jeden Fall, in welcher Engine ich versuchen kann sie umzusetzen!

Kommentare, Feedback und andere Anmerkungen?
Schreib mir eine E-Mail 🤓