Ich habe begonnen einen Prototypen für ein neues Spiel zu programmieren. Es wird wieder ein Jump'n'Run, diesmal allerdings ohne Klemmbaustein-Optik (#GeorgeDecker). Die Engine programmiere ich wieder selber. Ich bleibe bei SDL3, werde dort aber nicht mehr den klassischen Renderer verwenden, sondern konsequent die neue GPU-API. Und basierend auf meinen Erfahrungen mit der ersten Engine versuche ich natürlich alles mögliche zu verbessern.

Ich habe eine ungefähre Idee, was Inhalt des Spiels sein könnte und was das Ziel ist. Das ist etwas, was ich bei George Decker nicht hatte, da hab ich nur drauf los programmiert 🙂

Im Moment konzentriere ich mich auf die Technik:

  • Grundgerüst mit Game-Loop (zeichnen der Frames) und Editor ✅
  • Mehr Parallax-Layer mit Gaussian Blur ✅
  • Grafiken, die weiter hinten liegen, werden kleiner gezeichnet (bei George Decker waren die Tiles gleich groß) ✅
  • Bessere Kamerasteuerung
  • Bessere Steuerung und Verhalten der Spielfigur
  • animierte Sprites, um zum Beispiel Bäume darstellen zu können, deren Blätter sich bewegen.

Danach kommt das Thema Beleuchtung dran. Hab mir dazu schonmal grob angeschaut, wie man dynamischere Lichteffekte in 2D-Games bekommt, aber das wird noch eine Herausforderung.

Ich überlege auch, ob ich einen Koop-Modus einbaue. Wäre interessant zu programmieren ;-)

Ich bastel mal wieder an #GeorgeDecker rum. In den letzten 2 Wochen habe ich die Grafik-Engine von SDL2 auf #SDL3 portiert. Unter anderem ergibt sich dadurch die Möglichkeit Grafik-Shader zu verwenden. Ich habe daher mal einen Unschärfe-Effekt eingebaut. Nur Elemente, die auf dem Weg der Spielfigur liegen, werden scharf gezeichnet. Alles dahinter wird weich gezeichnet. Je weiter weg, desto unschärfer wird es. Auch Elemente vor dem Spieler sind jetzt unscharf. Ich glaube, das gibt der Grafik mehr Tiefe.

Die letzte Woche war ganz gut. Betreue grad einen Schülerpraktikanten bei der #denic. Hab ihm viel erklärt und mit ihm auch einen Abstecher in eins unserer Rechenzentren gemacht. Er interessiert sich für Anwendungsentwicklung und will später mal Spiele programmieren. Es war also absolut unvermeidbar, ihm mein Spiel #GeorgeDecker zu zeigen und ein bisschen was dazu zu erklären 😁​.
Die letzten Tage hat er dann angefangen mit Python zu programmieren. Sowas macht mir Spaß und ist mal ne Abwechslung von der üblichen Arbeit. Die übliche Arbeit macht natürlich auch Spaß.

(Ich muss das schreiben, weil mein Productowner hier mitliest) 😉​

Bugfixes! War ja klar, dass ich ein paar Fehler übersehen habe. Erschreckend ist allerdings, dass ich kurz vor Release noch was richtig kaputt gemacht habe: an einer Stelle fehlte plötzlich ein Lavafluss, was mir beim Aufzeichnen des YouTube-Videos aufgefallen ist.

Hier also jetzt die Version 0.17.1:

#GeorgeDecker

- YouTube

Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

George Decker, Version 0.17.0, das "Companion & Pyramid Update"

Dies ist das größte Update des Spiels bisher! Es enthält ein brandneues Level, das größte, das ich bisher gebaut habe. Es gibt viele neue Elemente, Game-Mechaniken und sogar einen Begleiter für George!

Die Highlights:

  • Neuer riesiger Level, der im Untergrund einer Pyramide spielt. Voll mit Schätzen, Gefahren und Rätseln
  • George bekommt einen Begleiter. Nur mit ihm zusammen kann der Level gemeistert werden
  • Audio-Engine unterstützt jetzt ogg vorbis und kann Audio-Loops nahtlos abspielen
  • Einige Objekte können nun auch auf anderen Ebenen erstellt werden, wodurch beispielsweise Partikeleffekte und Geräusche nun auf allen Paralax-Ebenen möglich sind
  • Neues, überarbeitetes HUD
  • Brandneuer Soundtrack, exklusiv für den neuen Level komponiert
  • Der Level greift viele Elemente aus meinem Stopmotion-Film auf
  • Neue Objekte! Unter anderem gibt's jetzt Batterien für die Taschenlampe, die auch leer werden.

Die vollständigen Release-Notes, Quellcode und Downloads findet Ihr auf meiner GitHub-Seite:

Viel Spaß, und gebt mir Feedback!

#GeorgeDecker #opensource #games #gamedev #gamedevelopment #sdl2

- YouTube

Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

Blick auf die Uhr: das waren jetzt gut 3 Stunden "speed programming". Die Audio Engine kann jetzt Vorbis Audio Files (.ogg) lesen 🙂

Ein Test-File wird auch wie erhofft nahtlos ohne Audio-Glitches am Ende abgespielt.

#GeorgeDecker

Mit dem neuen Level bin ich fertig, bin allerdings noch über ein Problem bei den Soundeffekten gestolpert. Die Hintergrundgeräusche wie Wind, Vögel oder Wasser, werden in einer Endlosschleife abgespielt. Leider oft nicht nahtlos, man hört entweder einen kurzen Tonaussetzer oder eine Art Plopp-Geräusch. Dachte zunächst, es liegt an meinen Samples und hab die in den letzten Tagen fast alle neu erstellt mit Ableton.

Das hat leider nichts gebracht. Die eigentliche Ursache ist nämlich mein Audio-Format. Ich habe sämtliche Audio-Files in mp3 komprimiert, und das ermöglicht leider kein nahtloses Abspielen. Es erzeugt am Anfang der Audio-Daten eine Lücke (Decoder-Delay) und am Ende werden Nullen (=Stille) hinzugefügt, um das angebrochene Audio-Frame auf 1152 Samples aufzufüllen. Mit ein bisschen Pech wird sogar noch ein weiteres leeres Frame angefügt.

Es ist nicht möglich, diese "leeren" Daten sauber rauszufiltern, da im MP3-Format nicht gespeichert wird, wie groß das Delay oder zusätzlichen Daten am Ende sind.

Ich werde daher auf ein anderes Format wie Vorbis (ogg) oder Opus umsteigen, zumindest für die Endlos-Samples. Mal schauen, ob ich das heute Abend programmiert bekomme.

#GeorgeDecker

Ich glaube, spätestens am Wochenende werde ich eine neue Version meines Spiels veröffentlichen. Ich habe gestern die fehlenden Soundeffekte erstellt und heute morgen die letzten Sprachaufnahmen gemacht. An einigen Stellen muss ich noch Soundeffekte einbauen und etwas Feinschliff machen. Vor allem auch mal komplett durchspielen, und schauen, dass alles funktioniert.

#GeorgeDecker

Noch ein paar "Fun-Facts" zu dem Level: würde man ihn tatsächlich mit Klemmbausteinen aufbauen, wäre er etwa 8 Meter breit und 4 Meter hoch.

In Pixeln sind es 32000 in der Breite und 15000 in der Höhe, was dann ungefähr 17 mal 14 Full HD-Monitoren entspricht, also 238 Monitore insgesamt.

#GeorgeDecker

Bevor ich heute das restliche Laminat zusammen mit Nick verlegt habe, hab ich auch noch am Spiel gearbeitet und die letzten Szenen in meinem "Pyramiden-Level" geskripted.

Der Level ist mit Abstand der bisher größte Level. Er besteht aus über einer halben Million Klemmbausteinen, 20000 Sprites, 800 Lichtern, 1000 Objekten und Unmengen an Partikel-Effekten. Ich befürchte, letzteres könnte auf älteren Rechnern Probleme geben.

Erstmalig bekommt George einen Begleiter in diesem Level, ein uraltes Lebewesen aus purer Energie und Licht. Dieses muss George aber erstmal ausfindig machen und befreien. Mit den beiden gibt es dann viele Szenen, in denen das Lebewesen George hilft. George hat auch ganz viel Dialog bekommen, den ich auch schon größtenteils aufgenommen habe. Es fehlen noch ein paar Zeilen am Ende und einige Soundeffekte muss ich noch erstellen.

Am Ende triff George dann noch auf einen alten Widersacher, und der Level endet fast so, wie in meinem Stopmotion Film. Da kommt dann auch wieder ein Soundeffekt zum Einsatz, den ich damals im alten DENIC-Gebäude aufgezeichnet hatte. Ich sage nur "Ding... Ausgang". 🙂

#GeorgeDecker