Update the game design doc to the current state

Move the implemented systems (netcode, hunter role, phase/timer match
loop, win conditions, both match modes, spawn areas, shooting,
role-based visibility, spectator freecam, networked paint) out of the
"missing" section, document the multiplayer and match-loop subsystems,
and trim the open items to what's actually left.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 4.8 committed 2026-06-30 18:20:20 +02:00
1 parent 057c99fa1d
commit 6e76510005
1 file changed
+67 -27
+67 -27
View File
@@ -36,9 +36,12 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha
sind immer menschliche Spieler.
- **Keine automatische Tarnungs-Bewertung.** Wie gut eine Bemalung tarnt, entscheidet
allein das Auge des Seekers — das Spiel misst/wertet die Tarnung nicht.
- **Noch offen / Geschmacksfrage** (bitte hier markieren, was dir an Meccha Chameleon (nicht) gefällt):
- Posen-System ja/nein?
- Taunt/Pfeifen ja/nein?
- **Entschieden (seit letzter Fassung):**
- **Posen-System: ja** — ist umgesetzt (Silhouette anpassen).
- **Infection-artiger Modus: ja** — als **Conversion-Modus** umgesetzt (getroffener Hider
wird zum Hunter, statt nur „gefunden" zu sein).
- **Noch offen / Geschmacksfrage:**
- Taunt/Pfeifen ja/nein? (noch nicht umgesetzt)
> **TODO (User):** Hier eintragen, was dir bei Meccha Chameleon gefällt und was nicht — danach
> schärfen wir Scope & Reihenfolge.
@@ -86,46 +89,83 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha
- [x] **GameModeManager** (erweiterbare State-Machine, Tab schaltet um)
- [x] **Player-Control-Modus** (Laufen + Kamera per Maus)
- [x] **Paint-Modus** (kein Movement, Linksklick malt, Rechtsklick hält Kamera-Dreh)
- [x] **First-Person-Modus** (Hunter: FP-Kamera + Schießen per Linksklick-Raycast)
- [x] **Free-Cam / Spectator-Modus** (gefundene/zuschauende Spieler beobachten frei)
- [x] **FrameRateLimiter** (FPS-Begrenzung, VSync-Handling)
- [x] Git initialisiert (Unity-`.gitignore` + `.gitattributes`), englische Commits
### Multiplayer (reines Online-PvP)
- [x] **Netcode for GameObjects** (NGO 2.13) als Netzwerk-Stack
- [x] **Host/Join**, Lobby-Szene + Match-Szene (`The Room`)
- [x] **Spieler-Synchronisation** (NetworkTransform, owner-authoritativ)
- [x] **Bemalung über das Netzwerk** (`PlayerPaintSync`: ServerRpc/ClientRpc/NetworkVariable,
Late-Join-Replay der Paint-Stamps)
- [x] **Rollen-Prefab-Varianten**: Hunter (groß, Sprint ×2, FP+Schießen) / Hider (klein)
- [x] **Spawn-Areas** über getaggte (konvexe) Collider: `SpawnArea`, rollen­spezifisch
`HunterSpawnArea` / `HiderSpawnArea` mit Fallback-Kette (Rolle → `SpawnArea` → Ring);
zufälliges Streuen per Rejection-Sampling innerhalb der Form
### Match-Loop (Hide & Seek)
- [x] **Server-autoritative State-Machine** (`MatchManager`, repliziert via Named Messages):
**Verstecken → Suchen → Auflösung → zurück zur Lobby**
- [x] **Pro-Phase-Timer** als Inspector-Properties in Sekunden (`hideDuration`,
`seekDuration`, `resolveDuration`)
- [x] **Rollenabhängige Sichtbarkeit** (jeder Client rechnet lokal aus Rolle/Phase/Modus):
Hider-Meshes werden je nach Modus/Phase für Hunter (bzw. andere Hider) ausgeblendet
- [x] **Hunter-Schießen**: Raycast aus FP-Kameramitte, Cooldown (`shootCooldown`),
Reichweite (`shootRange`), server-validierter Treffer
- [x] **Found-State** (`NetworkVariable<bool>`, server-write): getroffener Hider →
Mesh bei allen aus → nur noch **Spectator-Freecam**
- [x] **Früh-Ende der Suchphase**, wenn alle Hider gefunden/konvertiert sind
- [x] **Zwei Match-Modi** (`matchMode`, Inspector):
- **Classic** — getroffener Hider wird „gefunden" (Freecam)
- **Conversion** (Infection) — Hider blind füreinander; getroffener Hider **wird Hunter**
(echte Hunter-Variante, **an Ort und Stelle**, sauberes Reveal via `conversionRevealDelay`)
- [x] **Platzhalter-HUD** (`MatchHud`, OnGUI): Phasenname + Countdown + Hunter-Crosshair
- [x] **Kamera-Occlusion-Fade** (`HeroCutout`): kegelförmiger weicher Cut (radial + axial),
konstante Bildschirm-Lochgröße, raycast-getriggert
---
## 4. Checkliste — Was noch fehlt ❌
### Bemalen / Camouflage (höchste Priorität, ist unser Alleinstellungsmerkmal)
### Bemalen / Camouflage (Alleinstellungsmerkmal)
- [ ] Bemalung **zurücksetzen** / Undo
### Spielablauf (Hide & Seek)
- [ ] **Seeker/Hunter-Rolle** (immer menschlicher Spieler)
- [ ] **Runden-System**: Vorbereitungsphase (verstecken/bemalen) → Suchphase
- [ ] **Zeitlimit** + Timer-Logik
- [ ] **Sieg-/Niederlage-Bedingungen** (Seeker findet alle Hider im Zeitlimit — keine automatische Tarnungs-Wertung)
- [ ] **Taunt/Pfeifen** (optional, ggf. erzwungen) — falls gewünscht
- [ ] **Spielmodi**: Standard, Infection, ggf. eigene Ideen
- [ ] **Auflösungs-Phase mit Inhalt**: aktuell läuft nur der Countdown; noch kein
**Ergebnis-Screen** (wer hat gewonnen, wer wurde gefunden/konvertiert)
- [ ] **Explizite Sieg-/Niederlage-Auswertung** (Hunter gewinnt bei „alle gefunden",
Hider gewinnen bei Timeout) — derzeit nur impliziter Phasenwechsel
- [ ] **Taunt/Pfeifen** (optional, ggf. erzwungen) — noch offen
### Multiplayer (Kern — reines Online-PvP, kein Singleplayer)
- [ ] **Netcode** (z. B. Netcode for GameObjects / Mirror / Photon)
- [ ] Lobby / Matchmaking / Host-Join
- [ ] Spieler-Synchronisation inkl. **Bemalung über das Netzwerk**
### Multiplayer
- [ ] **Matchmaking** über reines Host-Join hinaus (Lobby-Browser / Codes / Relay)
- [ ] Robustheit: Reconnect, Host-Migration, Disconnect-Edge-Cases im Match
### Welt & Präsentation
- [ ] **Maps / Level-Design** (Verstecke, abwechslungsreiche Oberflächen/Farben)
- [ ] **UI/HUD**: Timer, Rollen-Anzeige, Farbwähler, Menüs, Ergebnis-Screen
- [ ] **Audio**: SFX (Pfeifen, Schritte, Klettern), Musik
- [ ] Beleuchtung / Art-Direction
- [ ] **Maps / Level-Design** ausbauen (mehr Verstecke, abwechslungsreiche
Oberflächen/Farben) — Szenen `Lobby`, `The Room`, `Test Map` existieren als Basis
- [ ] **Echtes UI/HUD** statt des OnGUI-Platzhalters: Timer, Rollen-/Phasen-Anzeige,
Farbwähler, Menüs, Ergebnis-Screen (uGUI-Canvas)
- [ ] **Audio**: SFX (Schritte, Klettern, Schuss, ggf. Pfeifen), Musik
- [ ] **Beleuchtung / Art-Direction** finalisieren (erste Reflection-/Shadow-Passes sind drin)
---
## 5. Vorgeschlagene nächste Schritte (Reihenfolge zur Diskussion)
1. **Tarnung sichtbar machen:** Farbwähler-UI + Pipette → das Bemalen wird im Play-Mode
bedienbar (ohne Inspector). Macht den Kern sofort spielbar.
2. **Eine einfache Test-Map** mit unterschiedlich gefärbten Oberflächen zum Üben der Tarnung.
3. **Lokaler Gameplay-Loop zum Testen** (zweiter lokaler Controller als Seeker) +
Runden/Timer → erster echter Hide-&-Seek-Ablauf, noch ohne Netzwerk.
4. **Multiplayer-Netcode** angehen (Kern des Spiels): Lobby/Host-Join, Spieler- und
Bemalungs-Synchronisation.
Der Kern-Loop steht (Netcode, Rollen, Phasen, beide Modi, Schießen/Konversion). Die nächsten
Schritte machen ihn **rund** und **präsentabel**:
> Reihenfolge bewusst so, dass wir früh etwas **Spielbares** haben, bevor wir uns an
> Netcode (aufwendig) binden.
1. **Match-Abschluss ausbauen:** echte Sieg-/Niederlage-Auswertung + Ergebnis-Screen in der
Auflösungs-Phase (statt nur Countdown → Lobby).
2. **Echtes HUD** (uGUI) statt des `MatchHud`-OnGUI-Platzhalters: Timer, Rolle/Phase,
Treffer-/Konversions-Feedback.
3. **Map-/Level-Design** vertiefen: mehr Verstecke und farblich abwechslungsreiche
Oberflächen, damit die Tarnung wirklich zählt.
4. **Politur:** Bemalung-Undo/Reset, Audio (Schritte/Schuss), Art-Direction/Beleuchtung,
optional Taunt-System.
> Reihenfolge bewusst so, dass aus dem funktionierenden Prototyp ein **fühlbar fertiges**
> Match wird, bevor wir Breite (mehr Modi/Maps) draufsetzen.