Ich bin das erste mal hier dabei :) Auf Einladung von Schrompf habe ich mich motivieren lassen mitzumachen.
Vorstellung
Für diejenigen die mich nicht kennen: ich bin Entwickler in der Spieleindustrie, ich war bei EA Phenomic und bin jetzt bei Envision Entertainment. Meine Hauptsprache ist C#. Da wir seit über'n Jahrzeht unsere in-house Engine nutzen und weiterentwickeln, kam ich bisher nie dazu, mir Engines wie Unity, Unreal & co anzuschauen. Ich wollte mal zwischendurch Lua lernen und hatte mir privat Defold angeguckt gehabt, aber für die zfx action habe ich mich für Godot entschieden, um eine (für mich) neue Engine mit gutem Ruf und C# support kennenzulernen.
Ich finde die Themen super, die haben den nötigen kreativen Anreiz geliefert 🙂
Ich habe mich am Wochenende nach Lehrbuch drangesetzt... Ideen gesammelt, game-design Dokument formuliert, Datenstrukturen modelliert, und habe damit an einem Prototypen in C# gebastelt. Die Spiellogik darin ist unabhängig von einer jeglichen Engine, und wird aktuell mit einer WPF Anwendung isoliert getestet. Sobald ich zufrieden bin ziehe ich dann alles nach Godot um.
Ich lasse mich aktuell stark aus zwei meiner aktuellen Lieblingsspiele inspirieren: Opus Magnum (Planen, Knobeln, Optimieren) und Balatro (Zufall, Investieren, Opfern), ich versuche ein Blend von beiden Spielen mit meinen eigenen Twists zu basteln.
Design Zusammenfassung
Es wird ein taktisches Einzelspieler-Roguelite auf Hexfeldern: Man programmiert freischaltbare Roboter über ein begrenztes Command-Tape, um in acht vorgegebenen Aufgaben wachsende Lieferziele zu erreichen.
Die Aufgaben sind denkbar einfach: erfülle eine Mindestanzahl an Lieferungen von A nach B. Vorteilhaft für den Roboter ist es, sobald ein oder mehrere Packesel einsetzt werden um die Tragekapazität enorm zu erhöhen.
Ressourcen wie Energie, Vorschau und Tape-Länge werden verwaltet, Wetter und Zonenmodifikatoren beeinflussen die nächsten Anweisungen, und eine feste Effektreihenfolge sorgt für Planbarkeit.
Vor jedem Lauf werden Anweisungen aus dem Roboterspeicher gezogen, auf dem Tape angeordnet, vorab geprüft und anschließend ausgeführt. Zwischen der Ausführungszeiten kann man Patches einspielen, oder sich kosmischer Strahlung mit zufälliger Auswirkung aussetzen. Glitches treten als Sofortereignisse auf oder werden gegen steigende Energiekosten aufgeschoben.
Durch Metaprogression sollen später weitere Roboter und Optionen freigeschaltet werden. Effizienzmetriken wie benötigte Anweisungen, Pfadlänge, besuchte Felder, verschwendete Energie und Lieferungsüberschuss sollen den Spielstil bewerten und zu immer eleganteren Programmen motivieren.
Fortschritt
Hier eine Vorschau des Prototyps vom Wochenende: http://xtr1m.com/temp/zfx1.mp4
[ZFX Action 25] [Projekt] Donkeys & Droids
Re: [ZFX Action 25] [Projekt] Donkeys & Droids
Ich habe Fortschritte beim Prototyp gemacht.
Die core loop ist nun ein deterministischer endlicher Automat. Beim erreichen eines Zustands kriegt eine GUI die Möglichkeit, mit einem Request, Zustandsübergänge über Commands auszulösen. Requests und Commands sind beide stark typisiert.
Im Spiel wird durch einen Command eine menge von Absichten (Intent) generiert. Sämtliche Effekte im Spiel kriegen die Gelegenheit, die generierten Intents zu modifizieren (als Modifier) modelliert. Danach werden die modifizierten Intents ausgeführt, und eine Menge von Results werden generiert, und als Ergebnis des Commands an die GUI zurückgegeben. Somit kann das Spiel der GUI gezielt alle Änderungen mitteilen, und die GUI kann mit diesem kontext die nächste Stufe im Spiel auslösen.
Die Spiellogik kommt komplett ohne einer jeglichen Zeitkomponente aus, Animationen usw kann die GUI wie sie will machen.
Ich habe meine Core Loop (Glitch, Improve, Execute) modelliert und mein WPF Prototyp erweitert, um auf Zustandsänderungen im Spiel zu reagieren, und die nächsten Schritte auszulösen. Ich habe mir auch hilfsweise ein PropertyGrid eingebaut um jederzeit in den Spielzustand reingucken zu können.
Als nächstes will ich mich um die eigentliche Ausführung der Programme und dessen Anweisungen kümmern.
Viel Spaß beim Zusehen: http://xTr1m.com/temp/zfx2.mp4
Die core loop ist nun ein deterministischer endlicher Automat. Beim erreichen eines Zustands kriegt eine GUI die Möglichkeit, mit einem Request, Zustandsübergänge über Commands auszulösen. Requests und Commands sind beide stark typisiert.
Im Spiel wird durch einen Command eine menge von Absichten (Intent) generiert. Sämtliche Effekte im Spiel kriegen die Gelegenheit, die generierten Intents zu modifizieren (als Modifier) modelliert. Danach werden die modifizierten Intents ausgeführt, und eine Menge von Results werden generiert, und als Ergebnis des Commands an die GUI zurückgegeben. Somit kann das Spiel der GUI gezielt alle Änderungen mitteilen, und die GUI kann mit diesem kontext die nächste Stufe im Spiel auslösen.
Die Spiellogik kommt komplett ohne einer jeglichen Zeitkomponente aus, Animationen usw kann die GUI wie sie will machen.
Ich habe meine Core Loop (Glitch, Improve, Execute) modelliert und mein WPF Prototyp erweitert, um auf Zustandsänderungen im Spiel zu reagieren, und die nächsten Schritte auszulösen. Ich habe mir auch hilfsweise ein PropertyGrid eingebaut um jederzeit in den Spielzustand reingucken zu können.
Als nächstes will ich mich um die eigentliche Ausführung der Programme und dessen Anweisungen kümmern.
Viel Spaß beim Zusehen: http://xTr1m.com/temp/zfx2.mp4
- Schrompf
- Moderator
- Beiträge: 5256
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [ZFX Action 25] [Projekt] Donkeys & Droids
Ich versteh zwar nicht viel von Deinen internen Vorgängen und Schlüsselwörtern, aber klingt als hättest Du Fortschritt auf dem Weg zur Spielbarkeit. Das ist doch toll!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.