docs: add tavern in-game scene design spec

This commit is contained in:
2026-04-14 02:14:58 +02:00
parent 8b9c946c9a
commit 4764d4b039

View File

@@ -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] │
└─────────────────────────────────────────┘
```
- 810 Gästezimmer + Annas Zimmer im Obergeschoss (~911 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 18 (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