# DungeonCraft – Design-Entscheidungen Eigenständiges Dungeon-Management-Spiel (Genre: Dungeon-Aufbau & Verteidigung), läuft als WASM im Browser. ## Technik - Rust + **macroquad** (WebGL), Ziel `wasm32-unknown-unknown` - Oberfläche komplett **im Canvas** - Schrift: **DINOBYTE** Bitmap-Font (CP437, 6×8 px, CC BY 4.0, siehe CREDITS.md) für alle Texte, ganzzahlig skaliert - Alle UI-Fenster mit **CP437-Rahmen** (einfach für Panels, doppelt für Dialoge); Balken (HP/Mana/Tor) als Pixel-Balken - Sound: Event-System + macroquad-Audio vorbereitet (Lautstärke, Stumm-Taste M); Klänge werden später generiert ## Grafik - **3D**, **echt isometrisch** (orthografische Kamera) - Kamera **frei 360° drehbar + neigbar** - Wände mit **unregelmäßiger Oberfläche** (Rauschverformung der Wandflächen, nahtlos zwischen Nachbarn) - Texturen: **prozedurale Pixelart** (Kachel-Atlas) - Figuren: **Pixel-Sprites als Billboards** (immer zur Kamera gedreht) - Licht: **Dunkel + Fackeln** – Grunddunkelheit, eroberte Bereiche und Lichtquellen (Fackeln, Kern, Portal, Tor) hell, flackerndes Licht - UI bleibt 2D-Ebene darüber, Minikarte ## Steuerung - Linksklick: aktives Werkzeug benutzen (Rechteck aufziehen für Graben/Räume) - Rechtsklick: Einheit aus der Hand absetzen - Kamera: WASD/Pfeiltasten, rechte Maus ziehen, Mausrad-Zoom, Bildschirmrand - Drehen/Neigen: mittlere Maustaste ziehen, Q/E drehen, R/F neigen - Zauber: 0 Blitz, X Heilung, V Wicht beschwören - Fackeln: automatisch beim Erobern; fremde Gebiete schummrig sichtbar ## Geplant (nach 3D) - Repo komplett auf Englisch; Spieltexte in separaten Sprachdateien (EN + DE, erweiterbar), Sprache im Spiel umschaltbar - Menü: Speichern (Download *.dcsave), Laden (Dateiauswahl + Drag & Drop), Autosave im Browser (localStorage) - Einstellungen: Sprache + Ton, Kamera, Grafik, Spiel, Tastenbelegung – gespeichert im Browser **und** im Savegame - Musik: eigener **XM/MOD-Replayer in Rust**, gemeinsamer Mixer für Musik + Effekte (Streaming über JS-Audio-Plugin, ersetzt macroquad-Audio) - Soundtrack (als .xm komponiert, in MilkyTracker bearbeitbar): Titel/Menü, mehrere ruhige Aufbau-Tracks, Kampf, Sieg/Niederlage-Jingles; **Titelmelodie als Leitmotiv in allen Stücken erkennbar** ## Spielinhalt (volles Konzept) - **Graben**: Erde/Gold markieren → Grubenwichte graben, bringen Gold heim, erobern Boden - **Räume**: Schatzkammer, Quartier, Pilzgarten, Trainingshalle, Bibliothek - **Portal** erobern → Kreaturen: Kobold, Höhlenspinne, Schattenmagier, Steinoger (abhängig von Räumen) - **Bedürfnisse**: Schlaf, Essen, Lohn (Zahltag); unzufriedene Kreaturen gehen - **Hand**: eigene Einheiten aufnehmen/absetzen (max. 8) - **Zauber** (Mana): Blitz, Heilung, Grubenwicht beschwören - **Helden**: Ritter, Bogenschützin, Priester, Zwergenhauer, Lichtpaladin (graben sich zum Seelenkern durch) ## Ziel - **Sieg**: Heldentor zerstören - **Niederlage**: Seelenkern zerstört ## Torangriff - **Angriffsflagge**: Spieler setzt eine Sammelflagge; freie Kreaturen marschieren hin und greifen alles in der Nähe an (auch das Tor) - **Tor**: ca. 3000 HP, regeneriert langsam, wenn es nicht angegriffen wird - **Verteidiger** erscheinen bei HP-Schwellen 75 % / 50 % / 25 % (letzter Trupp mit Boss), herausfordernd ## Heldenwellen - **Endlos**, solange das Tor steht - Stärke richtet sich nach dem **Armeewert** (Summe HP × Angriff aller Kreaturen inkl. Stufen) - Wellenstärke **mitwachsend 60 % → 100 %** des Armeewerts, mit etwas Zufall - **Schonfrist** 5 Minuten, danach **Mindestwelle** (z. B. 2 Ritter) auch bei schwacher Armee - Ziel: immer schaffbar, aber herausfordernd ## Betrieb / Test - Build im Docker (Multi-Stage: Rust → nginx:alpine) - Testversion auf Port **18093**, später zusätzlich Subdomain über Nginx Proxy Manager