From 4764d4b03993ecad5c430b0a4c406aab6a91f488 Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Tue, 14 Apr 2026 02:14:58 +0200 Subject: [PATCH] docs: add tavern in-game scene design spec --- .../specs/2026-04-14-tavern-scene-design.md | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 docs/superpowers/specs/2026-04-14-tavern-scene-design.md diff --git a/docs/superpowers/specs/2026-04-14-tavern-scene-design.md b/docs/superpowers/specs/2026-04-14-tavern-scene-design.md new file mode 100644 index 0000000..c429147 --- /dev/null +++ b/docs/superpowers/specs/2026-04-14-tavern-scene-design.md @@ -0,0 +1,145 @@ +# Design: Taverne In-Game-Szene + +Datum: 2026-04-14 +Status: Genehmigt + +--- + +## Kontext + +Die bestehende `tavern.tscn` ist ein einfacher Gastraum-Blockout der als Lobby-Warteraum dient (vor Spielstart). Nach `game_started` müssen Spieler in eine richtige In-Game-Szene wechseln: die vollständige 2-stöckige Taverne, in der die Geschichte beginnt. + +Gleichzeitig wird der Gastraum als wiederverwendbare Sub-Scene extrahiert, damit Lobby und In-Game-Szene dieselbe Geometrie nutzen (keine Duplikation). + +--- + +## Grundriss + +**Variante B — Offene Küche:** Gastraum und Küche sind offen verbunden. Spieler können die Küche vom Gastraum aus sehen, aber nicht betreten (Tresen als Grenze). Private Gemächer als abgetrennter Bereich mit verschlossener Tür. + +``` +OBERGESCHOSS +┌─────────────────────────────────────────┐ +│ [Z1][Z2][Z3][Z4][Z5][Z6][Z7][Z8][Anna]│ +│ ←————————— Korridor ————————————→ │ +│ [Treppe] │ +└─────────────────────────────────────────┘ + +ERDGESCHOSS +┌─────────────────────────────────────────┐ +│ [Eingang] [——— Gastraum ———] [Private] │ +│ [offene Küche hinten] │ +│ [Treppe] │ +└─────────────────────────────────────────┘ +``` + +- 8–10 Gästezimmer + Annas Zimmer im Obergeschoss (~9–11 Türen total) +- Küche sichtbar, aber nicht betretbar +- Private Gemächer: verschlossene Tür, nicht betretbar + +--- + +## Szenenarchitektur + +### Neue Dateistruktur + +``` +scenes/ + taproom.tscn ← Gastraum als wiederverwendbare Sub-Scene + (bisher war das der Inhalt von tavern.tscn) + tavern_lobby.tscn ← Lobby/Warteraum; instanziert taproom.tscn + tavern.tscn ← In-Game-Szene: vollständige 2-stöckige Taverne + (instanziert taproom.tscn + Obergeschoss + Rest) + dm_view.tscn ← DM-Szene (Stub; wird in Schritt 7 ausgebaut) +``` + +### SceneManager-Änderungen + +```gdscript +const SCENES := { + "lobby": "res://scenes/tavern_lobby.tscn", # war: "tavern" + "tavern": "res://scenes/tavern.tscn", # neu: volle In-Game-Taverne + "dm_view": "res://scenes/dm_view.tscn", # neu: DM-Stub + # "chamber" entfällt — Zimmer sind Teil von tavern.tscn + ... +} + +# _on_root_ready → transition_to("lobby") (war: "tavern") +# _on_game_started → Spieler: transition_to("tavern") +# DM: transition_to("dm_view") +``` + +--- + +## Szeneninhalt `tavern.tscn` + +### Erdgeschoss + +| Bereich | Betretbar | Notiz | +|---|---|---| +| Gastraum (`taproom.tscn`) | Ja | Sub-Scene | +| Küche | Nein | Vom Gastraum sichtbar, Tresen als Grenze | +| Private Gemächer | Nein | Verschlossene Tür | +| Ausgang | Ja | Tür → Myzelpfad (nächste Szene) | + +Myzelspur am Boden: Treppe ↓ → Gastraum → Ausgang (als Decal oder farbige Plane-Meshes). + +### Obergeschoss + +| Bereich | Betretbar | Notiz | +|---|---|---| +| Korridor | Ja | Verbindet alle Zimmer | +| Gästezimmer 1–8 (oder mehr) | Ja | Spieler-Zimmer mit SpawnPoint | +| Annas Zimmer | Ja | Tür offen, Raum myzelüberzogen | + +Annas Zimmer: Myzelspur führt aus der Tür → Korridor → Treppe ↓. + +### Spawn-Logik + +- Jedes Spieler-Zimmer hat einen `Marker3D` Node namens `SpawnPoint` +- Server weist beim `game_started` jedem Peer eine Zimmer-ID zu +- Client spawnt Spieler-Kamera/Controller am zugehörigen SpawnPoint + +### Spawn-Sequenz (Spieler-Client) + +1. Fade in from black — "Augen öffnen sich" +2. Spieler liegt im Bett — kurze Aufsteh-Animation +3. DM hat Zeit für Narration (keine Eingabe nötig) +4. Spieler übernimmt Kontrolle (First Person) + +### DM + +`game_started` → `transition_to("dm_view")` — Stub-Szene, wird in Schritt 7 (DM Regiepult) ausgebaut. + +--- + +## Detailgrad + +### Jetzt (Blockout) + +Alles als BoxMesh-Placeholder, analog zur bestehenden `tavern.tscn`: + +- Wände, Böden, Decken aller Räume +- Treppen (Rampe oder Stufen-Boxen) +- Türen als Lücken in der Wand +- Betten als flache Box + SpawnPoint (`Marker3D`) darüber +- Tresen als Box (Küchen-Grenze) +- Collision shapes für alle Geometrie +- Myzelspur: einfache farbige Plane-Meshes am Boden + +### Später (eigene Features) + +- Echte 3D-Modelle via Meshy AI / Blender +- Myzel-Shader und Partikeleffekte +- Kerzen- und Fackel-Beleuchtung +- Fade-in + Aufsteh-Animation (AnimationPlayer) +- Tür-Interaktionen (öffnen/schließen) +- Audio: Gastraum-Atmosphäre, Schritte + +--- + +## Abhängigkeiten + +- Bestehende `tavern.gd` und `tavern.tscn` werden refactored (nicht gelöscht) +- `scene_manager.gd` bekommt neue Keys und geänderte `_on_root_ready` / `_on_game_started` Logik +- `network_manager.gd`: `game_started` Signal bereits vorhanden, keine Änderung nötig