Files
dungeoncraft/DESIGN.md
T

3.9 KiB
Raw Blame History

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