Dungeon Crawler - Android Kartenspiel (Godot 4.x). Projekt 17 / Epic #116.
- GDScript 100%
Framework decision: Godot 4.3 (native Android export, mobile renderer, GDScript, 64-bit int for billion-range progression, MIT-licensed). Architecture (6 Autoload singletons via project.godot): - GameManager global state and player stats - SaveSystem 3 save slots in user:// (auto-save after battle) - DeckManager collection, deck, draw/hand/discard piles - BattleManager turn flow, AP, status effects, allies - LevelGenerator procedural tile-based dungeons with fog-of-war - ProgressionSystem XP, level-up, skill tree, enemy scaling Includes: - Main scene as application entry point - Card resource class for typed card data (weapon/magic/heal/debuff/ally) - Android export preset (arm64-v8a, portrait, package de.ybauer.dungeoncrawler) - .gitignore for Godot artifacts (.godot, /android, export builds) Closes ticket #123 (project 17, epic #116). |
||
|---|---|---|
| scenes/main | ||
| scripts | ||
| .gitignore | ||
| export_presets.cfg | ||
| icon.svg | ||
| project.godot | ||
| README.md | ||
Dungeon Crawler
Android-Kartenspiel mit rundenbasiertem Kampf, prozeduralen Dungeons und Endlos-Progression.
- Projekt: 17 / Epic #116
- Engine: Godot 4.3 (Mobile Renderer)
- Plattform: Android (arm64-v8a, Portrait)
Framework-Entscheidung
Godot 4.x gewählt aus folgenden Gründen:
- Nativer Android-Export – APK/AAB direkt aus dem Editor, ohne Gradle-Bastelei (
gradle_build/use_gradle_build=falsereicht für den Standard-Build). - TileMap- & Tile-System – passt direkt zur Anforderung der kachelbasierten prozeduralen Levels (Ticket #118).
- GDScript – schnelle Iteration, kein Compile-Zyklus, gut geeignet für Karten-/Statuseffekt-Logik.
- 64-bit
intvon Haus aus – deckt den geforderten Milliarden-Bereich für XP/Schaden (Ticket #124) ohne BigInt-Bibliothek. - Open Source, MIT-Lizenz – keine Engine-Royalties, kein Vendor-Lock-in, im Gegensatz zu Unity oder Unreal.
- Autoload-Singletons – sauberer DI-Ersatz für die geforderten Manager-Klassen.
Alternativen verworfen:
- Unity: Lizenzunsicherheit nach Runtime-Fee-Debakel, schwerere Tooling-Kette.
- Flutter/Flame: UI-Stack, aber 2D-Game-Tooling deutlich dünner.
- React Native: kein echtes Game-Framework.
- Eigenentwicklung in Kotlin/Compose: zu viel Plumbing für Rendering, Audio, Input.
Architektur
Sechs Autoload-Singletons (siehe project.godot, Section [autoload]):
| Manager | Verantwortung | Tickets |
|---|---|---|
GameManager |
Globaler State, Spielerwerte, Szenenwechsel | #122 |
SaveSystem |
3 Slots, Auto-Save, user://saves/ |
#122 |
DeckManager |
Sammlung, Deck, Nachzieh-/Hand-/Friedhof-Stapel | #126, #120 |
BattleManager |
Rundenlogik, AP, Statuseffekte, Verbündete | #117, #121, #125 |
LevelGenerator |
Prozedurale Kachel-Dungeons, Fog-of-War | #118 |
ProgressionSystem |
XP, Level-Up, Fertigkeitenbaum, Gegner-Skalierung | #124 |
Ladereihenfolge ist absichtlich: GameManager → SaveSystem → Deck → Battle → Level → Progression. Damit kann Save sich auf den GameManager stützen und Progression auf alles darunter.
Verzeichnisstruktur
dungeon-crawler-godot/
├── project.godot # Engine-Config (Autoloads, Mobile-Renderer, Portrait)
├── export_presets.cfg # Android-Export: arm64-v8a, Package de.ybauer.dungeoncrawler
├── icon.svg
├── scenes/
│ ├── main/Main.tscn # Einstiegsszene
│ ├── battle/ # Kampf-Szenen (Ticket #117)
│ └── dungeon/ # Dungeon-Karte (Ticket #118)
├── scripts/
│ ├── managers/ # Die 6 Autoload-Singletons
│ ├── cards/ # Card.gd (Resource-Klasse)
│ ├── entities/ # Spieler/Gegner/Verbündete
│ └── ui/ # UI-Komponenten
├── resources/cards/ # Karten als `.tres`-Ressourcen
└── assets/ # Icons, Sounds
Build
# Editor öffnen
godot --editor --path .
# Android-Build (Templates müssen installiert sein)
godot --headless --export-debug "Android" export/dungeon-crawler.apk
Git
Repository: http://192.168.178.106:3000/yannick/dungeon-crawler-godot