Files

17 KiB
Raw Permalink Blame History

Void Bastion - Alpha 0.1.0

Ein plattformübergreifender 2D-Tower-Defense-Prototyp für Godot 4. Der aktuelle Stand ist für Windows, Android und später iOS ausgelegt.

Enthalten

  • sieben auswählbare realistische Weltraumkarten im Querformat; vier zusätzliche Sektoren werden im internen Shop mit Kernkristallen freigeschaltet
  • Kartenkatalog mit vier Sektoren pro Seite, persistent gespeicherten Freischaltungen und direktem Shop-Einstieg bei gesperrten Karten
  • vollständig sichtbare Einsatzkarten ohne Scrollen, Minikarte oder Richtungstasten
  • hellere, kontrastreichere Stationskarten und eigens gestaltete modulare Metallfahrbahnen mit realistischen Materialtexturen auf Geraden und Kurven, Führungsschienen, gebürsteten Paneelen, cyanfarbenen Energieleitungen, farbigen Reflexionen, Schraubpunkten, warmen Positionslichtern und dezenten Lichtkegeln
  • feste Benutzeroberfläche mit 1600 × 900 Referenzauflösung
  • eine exakt eine Rasterzelle (80 Pixel) breite Straße, die direkt aus den Wegdaten gezeichnet wird
  • sichtbare Straßenmitte, Gegner-Lauflinie und gesperrte Bauzellen verwenden auf jeder Karte dieselbe Datenquelle und können deshalb nicht mehr gegeneinander verrutschen
  • deutlich längere Wendeschleifen auf Bastion Prime und der Helios-Werft, damit mehr Baufläche taktisch relevant wird
  • sichtbares 80-Pixel-Bauraster mit automatischem Einrasten der Türme
  • jede geeignete Plattformzelle ist bebaubar; ausschließlich Wegzellen, Reaktoren und Bereiche außerhalb der Plattform sind gesperrt
  • neu erzeugte, straßenfreie HD-Kartenbasen mit 3344 × 1882 Pixeln und Mipmaps für eine schärfere Windows-Darstellung
  • sechs Türme: Kinetik, Laser, Rakete, Plasma, EMP-Puls und Railgun
  • neun Gegnerklassen mit Luft- und Bodeneinheiten: Jäger, Fregatte, Kreuzer, Abfangjäger, Schildkreuzer, Luft-Belagerer, schneller Boden-Rover, Panzer und schwerer Läufer
  • neue Bodeneinheiten-Grafiken mit leuchtend grünen Warnmarkierungen und Energielichtern
  • Zielprioritäten für Türme: erste, letzte, höchste verbleibende Hülle oder Schildziele zuerst; Laser priorisiert Schilde immer automatisch
  • Luft-/Bodenvorschau wird durch gleich gestaltete grüne Pfeile unterschieden: Luft nach oben, Boden nach unten
  • Schildgegner haben einen blauen, gegen den Uhrzeigersinn abnehmenden Schildring; Lasertreffer bauen zuerst Schildpunkte ab und übertragen Überschuss auf die Hülle
  • sechs Türme mit klar ausgewiesenen Zielen: Boden, Luft oder beide Kategorien; universelle Türme verursachen reduziert Schaden
  • HUD-Vorschau mit kleinen Einheitensymbolen und Stückzahl für aktuelle und nächste Welle
  • Entwickler-Testregler für Gegner-Lebenspunkte (F9 ein-/ausblenden, +/− verändern; Faktor 0,5×–3,0×, im Online-Koop deaktiviert)
  • 15 automatisch skalierende Missionswellen
  • drei wählbare Schwierigkeitsgrade: Leicht behält die bisherige Kurve; Schwer startet knapper und erhöht ab Missionsmitte Gegnerhülle, Gegnerzahl und fortgeschrittene Gegnertypen stärker
  • höhere Schwierigkeitsgrade beginnen mit knapperen Ressourcen und belohnen einen Kartensieg mit mehr Kernkristallen
  • freiwilliger Endlosmodus nach Welle 15 mit unbegrenzt weiter skalierenden Gegnern
  • das Ende eines Endloslaufs zählt ausdrücklich nicht als gescheiterte Mission
  • Kommandoschiff-Boss in jeder fünften Welle
  • Platzierung per Maus oder Touch
  • dreistufiges interaktives Einstiegstutorial
  • Platzierungsvorschau mit gültiger beziehungsweise ungültiger Bauposition
  • Turmverbesserungen bis Stufe 3 und Verkauf
  • sichtbarer Reichweitenkreis bereits vor der Platzierung
  • Turmkarten mit Schaden, Schüssen pro Sekunde, Reichweite sowie Einzel- oder Flächenschaden
  • Upgrade-Vorschau mit dem konkreten Zuwachs an Schaden, Feuerrate und Reichweite
  • kompaktes Turm-Informationsfenster, damit möglichst wenig von der Karte verdeckt wird
  • korrigierte Zielausrichtung des Kinetik-Geschützes
  • zusätzliche sinnvolle Bauplätze auf Bastion Prime, insbesondere zwischen den Wegschleifen und auf der linken Plattform
  • zusätzliche Bauplätze zwischen den parallelen Fahrbahnen der Helios-Werft
  • feste Reaktor-Sperrzonen auf allen Karten; auf Reaktoren und offenen Reaktorkammern wird kein Bauraster angezeigt und es können dort keine Türme platziert werden
  • auf eine Rasterzelle verkleinerte Turmdarstellung, damit angrenzende Türme nicht in die Fahrbahn hineinragen
  • dauerhaft gespeicherte Kernkristalle als spätere Freischaltwährung
  • Nova-Arkologie (24), Cryo-Schleuse (32), Solarforge (40) und Vestige-9 (48) als kaufbare Einsatzsektoren
  • dauerhaftes lokales Gastprofil mit stabiler Spieler-ID als Grundlage für Apple-, Google- und Windows-Anmeldung
  • eigene Profilansicht mit lokalen Missions- und Endlosbestwerten pro Karte
  • frei wählbarer Spielername mit identischer Prüfung im Spiel und auf dem Server
  • zweistufige Kontolöschung direkt im Pilotenprofil; danach wird ein neues lokales Gastprofil erstellt
  • direkter Datenschutz-Link im Pilotenprofil
  • sichtbare App-Version und vorbereitete Support-Mail an support@gergames.de im Pilotenprofil; Version, Plattform und gekürzte Spieler-ID werden für eine schnellere Fehlerzuordnung eingesetzt
  • wartende, lokal gespeicherte Highscore-Einträge für die spätere sichere Serverübertragung
  • eigener Multiplayerbereich mit schneller Spielersuche sowie privaten Koop-Räumen mit sechsstelligen Raumcodes
  • gemeinsame Online-Lobby mit Spielernamen, festen Verteidigungsseiten und manuellem Bereit-Status für beide Piloten
  • reservierter Spielerplatz und automatische Wiederverbindung bei einem kurzzeitigen Netzverlust; die laufende Partie wartet bis zu 60 Sekunden
  • Vorschau einer symmetrisch gespiegelten Zwei-Spieler-Arena mit gemeinsamem Reaktor
  • getrennte Ressourcenmodelle für beide Koop-Spieler sowie gemeinsam geteilte Reaktorleben
  • sichtbarer und jederzeit abbrechbarer Wartezustand für schnelle und private Online-Partien
  • bereits spielbarer lokaler Koop-Modus mit einem KI-Partner auf der gespiegelten Kartenhälfte
  • nahezu verdoppelte Koop-Weltbreite: Beide Spieler erhalten eine vollständige Kartenhälfte in ursprünglicher Größe
  • Spiegelachse direkt durch den vorhandenen Kartenreaktor, sodass Hintergrundreaktor, gemeinsamer Zielpunkt und Laufwege wieder zusammenpassen
  • eigener Ansichtswechsel zwischen der unverkleinerten Spieler- und KI-Kartenhälfte
  • zwei gleichwertige Gegnerströme von den äußeren Kartenrändern zum gemeinsamen Reaktor
  • die KI baut und verbessert selbstständig Kinetik-, Laser- und Raketentürme ausschließlich auf ihrer Seite
  • Abschussbelohnungen und Baukosten werden dem jeweiligen Spieler beziehungsweise KI-Partner getrennt zugerechnet
  • farblich getrennte Bauflächen und markierte KI-Türme zur schnellen Zuordnung im Gefecht
  • fünf Kernkristalle als Belohnung für jede erfolgreich abgeschlossene Karte
  • auswählbare Spielgeschwindigkeit bis 5× sowie automatischer Start der nächsten Welle
  • Pause, Missionssieg, Niederlage und lokaler Wellenrekord
  • jederzeit sichtbarer Zurück-Button zum Abbrechen der laufenden Runde und Wechseln ins Kartenmenü
  • lokaler Speicherstand für Rekord und Tutorialstatus
  • für Mobilgeräte geeigneter Compatibility-Renderer
  • vorbereitete AdMob-Anbindung für Android und iOS mit Einwilligungsabfrage
  • freiwillige Belohnungswerbung für einmalig 150 Notfallenergie pro Mission
  • zurückhaltende Vollbildwerbung frühestens nach drei Missionen und mit 15 Minuten Mindestabstand
  • keine Bannerwerbung und keine erzwungene Werbung während einer Angriffswelle

Starten

  1. Godot 4.x installieren.
  2. Im Godot-Projektmanager project.godot aus diesem Ordner importieren.
  3. Das Projekt öffnen und F6 oder F5 drücken.

Die Oberfläche ist für 1600 × 900 entworfen und skaliert automatisch auf andere Querformat-Auflösungen.

Beim ersten Öffnen einer frisch entpackten Kopie kann der Import der drei großen HD-Karten je nach PC ungefähr eine Minute dauern. Danach startet das Projekt normal.

Der Prototyp wurde mit der offiziellen Godot-Version 4.7.2 importiert und im automatisierten Headless-Test ohne Skript- oder Laufzeitfehler gestartet.

Der mitgelieferte Logiktest lässt sich bei Bedarf mit godot --headless --path . --script res://tests/smoke_test.gd erneut ausführen.

Für reproduzierbare Windows-Builds steht packaging/windows/build.ps1 bereit. Godot und NSIS werden als Parameter übergeben; das Skript exportiert das Spiel, erstellt den Installer und gibt anschließend Größe und SHA-256-Prüfsumme aus. Die manuellen Freigabeprüfungen stehen in ALPHA_TEST_CHECKLIST.md.

Die Hinweise zum aktuellen Windows-Testbuild stehen in RELEASE_NOTES_0.1.0-alpha.13.md.

Werbung und Datenschutz

Die mobile Werbeanbindung ist technisch vorbereitet, aber absichtlich noch nicht für echte Werbung freigeschaltet:

  • is_real steht auf false; Android und iOS verwenden ausschließlich Googles offizielle Test-App- und Test-Anzeigen-IDs.
  • Unter Windows bleibt das Werbesystem vollständig deaktiviert.
  • Ein Belohnungsvideo erscheint nur nach einem freiwilligen Tipp auf Video: +150 Notfallenergie und höchstens einmal pro Mission.
  • Vollbildwerbung kann nur am Ende einer Mission erscheinen, frühestens nach drei Missionen und niemals häufiger als alle 15 Minuten.
  • Banner, App-Open-Anzeigen und Rewarded-Interstitials werden nicht verwendet.
  • Vor der Initialisierung der Anzeigen wird auf Mobilgeräten Googles Consent-Information aktualisiert. Wenn eine Einwilligung erforderlich ist, wird zuerst das UMP-Formular angezeigt.
  • Apples App-Tracking-Transparency-Abfrage ist derzeit deaktiviert. Sie wird erst aktiviert, wenn später tatsächlich Tracking beziehungsweise personalisierte Werbung benötigt und rechtlich geprüft wird.

Für die spätere Veröffentlichung müssen im AdMob-Konto eigene App- und Anzeigen-IDs angelegt, in ads_manager.gd beziehungsweise den beiden Export-Konfigurationsdateien eingetragen und is_real bewusst auf true gesetzt werden. Zusätzlich brauchen wir eine veröffentlichte Datenschutzerklärung, die korrekte Datenschutzdeklaration in App Store Connect und Google Play sowie eine erreichbare app-ads.txt-Datei auf der Entwickler-Webseite. Bis diese Punkte erledigt und echte Geräte getestet sind, dürfen die Test-IDs nicht ersetzt werden.

Verwendet wird Godot AdMob Plugin 7.0 aus godot-sdk-integrations/godot-admob. Die Android- und iOS-Erweiterungen liegen mit im Projekt; ein iOS-Build benötigt später weiterhin macOS, Xcode und ein Apple-Developer-Konto.

Online-Backend

Unter server/nakama liegt der reproduzierbare Docker-Compose-Stack für das selbst gehostete Online-Backend. Er besteht aus Nakama 3.37.0, einer eigenen internen PostgreSQL-16-Datenbank und einem täglichen Backup-Dienst mit 14 Tagen Aufbewahrung.

Der Stack ist auf dem vorgesehenen Unraid-Server eingerichtet. Nakamas Spiel-API läuft auf Port 7350, die Verwaltungskonsole ist ausschließlich an den Loopback-Port 7351 gebunden und PostgreSQL besitzt keinen veröffentlichten Host-Port. Echte Geheimnisse werden nur in der geschützten .env-Datei auf Unraid gespeichert und durch .gitignore ausdrücklich aus dem Quellpaket ausgeschlossen.

Die öffentliche Spiel-API ist unter api.void-bastion.gergames.de erreichbar. DNS, HTTPS/WSS über den vorhandenen Nginx Proxy Manager und die Godot-Nakama-Clientanbindung sind eingerichtet. Website und Spielserver verwenden damit getrennte Adressen.

Spielupdates

Der Client prüft beim Start die öffentlichen Releases des Projekts. Ist eine neuere Version vorhanden, erscheint im Hauptmenü ein kompakter Update-Hinweis. Unter Windows öffnet er direkt das aktuelle Setup, unter Android künftig das aktuelle APK; fehlt ein passendes Paket, wird die öffentliche Release-Seite geöffnet. Ein Update wird niemals ungefragt installiert.

Kartenregel: Laufweg und Reaktor

Jede Einzelspielerroute muss mit ihrem letzten Wegpunkt exakt im Mittelpunkt der primären Reaktorzone enden. _validate_route_ends_at_reactor() prüft diese Vorgabe beim Laden jeder Karte; der Smoke-Test prüft sie zusätzlich für alle vorhandenen Karten. Dadurch bleiben sichtbare Straße, Gegnerbewegung, Bausperre und Reaktoreinfahrt deckungsgleich.

Steuerung

Online-Stand Alpha 0.1.0: Der offizielle Nakama-Godot-Client, automatische Gastanmeldung, servergeprüfte öffentliche Spielernamen, Kontolöschung im Spiel, 36 autoritative Ranglisten, geprüfte Ergebnisübermittlung, Echtzeit-Sockets, serverautoritativer Zwei-Spieler-Koop, private Räume per Raumcode, eine Bereit-Lobby und Wiederverbindung sind eingebaut. Ranglisten lösen den aktuellen öffentlichen Profilnamen über die unveränderliche Spieler-ID auf. Die öffentliche API ist über https://api.void-bastion.gergames.de mit einem gültigen Let's-Encrypt-Zertifikat freigeschaltet. Details stehen in ONLINE_SETUP.md.

Die Schaltfläche Bestenliste im Hauptmenü zeigt die zwölf besten Piloten. Karte, Schwierigkeitsgrad sowie Mission oder Endlosmodus können direkt in der Ranglistenansicht gefiltert werden. Jede Zeile nennt Karte und Schwierigkeit sichtbar; der eigene Eintrag wird farblich hervorgehoben.

  • Turm unten auswählen und auf eine freie Plattformfläche klicken oder tippen.
  • Am PC folgt der Reichweitenkreis vor dem Bau dem Mauszeiger. Auf Mobilgeräten markiert der erste Tipp den Bauplatz samt Reichweite; der zweite Tipp auf dasselbe Feld bestätigt den Bau.
  • Nur die markierten Rasterfelder sind bebaubar; Türme rasten automatisch in der Feldmitte ein. Die sichtbare Straße wird exakt auf denselben Rasterzellen und derselben Mittellinie gezeichnet, denen auch die Gegner folgen.
  • Die Einsatzkarte wird vor dem Start im Hauptmenü gewählt.
  • Im Hauptmenü wird außerdem der Schwierigkeitsgrad gewählt; die eingeblendete Kurzbeschreibung zeigt die wichtigsten Auswirkungen und den Kristallbonus.
  • Die komplette Einsatzkarte bleibt auf PC und Mobilgeräten sichtbar; ein Verschieben ist nicht notwendig.
  • Einen vorhandenen Turm auswählen, um ihn zu verbessern oder zu verkaufen.
  • Das Informationsfeld rechts oben zeigt dabei die aktuellen Werte und den Mehrwert der nächsten Stufe.
  • Nächste Welle startet den Angriff.
  • 1× beziehungsweise 2× ändert die Spielgeschwindigkeit.
  • P, Escape oder die Pause-Schaltfläche pausiert das Spiel.
  • Nach Welle 15 kann die erfolgreiche Mission beendet oder freiwillig im Endlosmodus fortgesetzt werden.
  • Unter Multiplayer → Mit KI-Partner startet die gespiegelte Koop-Arena sofort. Du baust auf der vollständigen linken Karte, die KI auf deren vollständiger Spiegelung; beide Seiten verteidigen denselben Reaktor. Mit KI > und < ICH wird ohne Verkleinerung zwischen beiden Seiten gewechselt.
  • Unter Multiplayer → Raum erstellen wird ein privater Koop-Raum angelegt und ein sechsstelliger Code angezeigt. Der Mitspieler wählt Raum beitreten und gibt diesen Code ein.
  • In der anschließenden Lobby werden beide Pilotennamen und Verteidigungsseiten angezeigt. Die Partie startet erst, wenn beide Bereit gewählt haben.

Nächste Produktionsschritte

  1. Balancing sowie Testanzeigen auf echten Android- und iOS-Geräten prüfen
  2. Soundeffekte, Musik und zusätzliche Trefferanimationen
  3. Kampagnenfortschritt und zusätzliche Bossvarianten
  4. Freischaltmenü für neue Türme und Karten mit den bereits gespeicherten Kernkristallen
  5. Plattformkonten mit einer eigenen plattformübergreifenden Spieler-ID verbinden
  6. Private Raumcodes und die autoritative Koop-Synchronisierung auf echten Android-, iOS- und Windows-Geräten testen
  7. Freundesliste und direkte Einladungen auf zwei echten Clients mit der neuen Server-Runtime prüfen
  8. Store-Käufe erst nach stabiler Offline- und Koop-Kernversion

Godot Agent Tools MCP

Das Projekt enthält das MIT-lizenzierte Godot-Addon Agent Tools 0.3.1 unter addons/agent_tools sowie die lokale MCP-Brücke unter tools/godot-agent-tools-mcp.

Der Plugin-Eintrag ist in project.godot aktiviert. Beim geöffneten Godot-Editor lauscht die lokale Brücke ausschließlich auf 127.0.0.1:9920. Codex wurde systemweit mit dem Namen godot-agent-tools auf diese lokale Brücke konfiguriert.

Geprüfter Zustand:

  • 70 MCP-Werkzeuge erkannt
  • res://main.tscn als aktuelle Szene erkannt
  • Szenenwurzel VoidBastion vom Typ Node2D erkannt
  • 57 Projektverweise geprüft, keine Probleme gefunden

Nach einem Neustart beziehungsweise einer neuen lokalen Codex-Sitzung stehen die Godot-Werkzeuge automatisch zur Verfügung, solange dieses Projekt im Godot-Editor geöffnet ist.

Grafikherkunft

Die Karten und Sprite-Grafiken im Ordner assets wurden für dieses Projekt mit dem integrierten OpenAI-Bildgenerator erzeugt. Für Version 0.12 wurden die drei Karten als straßenfreie, hochauflösende Stationsdecks neu erzeugt und auf 3344 × 1882 Pixel aufbereitet. Die exakten Rasterstraßen entstehen nun im Spiel aus denselben Wegdaten wie Gegnerlinie und Bausperre. Die final verwendeten Prompts stehen in ART_ASSETS.md.