Files
Void-Bastion/README.md
T

13 KiB
Raw Blame History

Void Bastion – spielbarer Prototyp 0.20

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

  • drei auswählbare realistische Weltraumkarten im Querformat
  • 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
  • drei Türme: Kinetik, Laser und Rakete
  • drei Gegnerklassen mit unterschiedlichen Werten
  • 15 automatisch skalierende Missionswellen
  • drei wählbare Schwierigkeitsgrade: Leicht entspricht dem bisherigen Balancing, Mittel ist der neue Standard und Schwer erhöht Gegnerhülle, Tempo und Anzahl deutlich
  • 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
  • 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
  • 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
  • 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
  • normale und doppelte Spielgeschwindigkeit
  • 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.

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.

Steuerung

Online-Stand 0.20: Der offizielle Nakama-Godot-Client, automatische Gastanmeldung, 36 autoritative Ranglisten, geprüfte Ergebnisübermittlung, Echtzeit-Sockets, serverautoritativer Zwei-Spieler-Koop und private Räume per Raumcode sind eingebaut. 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.

  • 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.

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, Einladungen und Wiederverbindung nach kurzzeitigem Netzverlust ergänzen
  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.