Files
dungeoncraft/DESIGN.md
T

65 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- **Kachel-Outlines**: dezente dunkle Linien um jedes Feld (Böden, Wandoberseiten, senkrechte Wandkanten), folgen der unregelmäßigen Oberfläche; abschaltbar (Taste G, später Grafik-Einstellungen)
- 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