From 6e76510005a43f15c839c0edd3aaf6e78f11f6d8 Mon Sep 17 00:00:00 2001 From: MelekTaus Moribundus Date: Tue, 30 Jun 2026 18:20:20 +0200 Subject: [PATCH] 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 --- Docs/GAME_DESIGN.md | 94 ++++++++++++++++++++++++++++++++------------- 1 file changed, 67 insertions(+), 27 deletions(-) diff --git a/Docs/GAME_DESIGN.md b/Docs/GAME_DESIGN.md index 383fd60..be84a27 100644 --- a/Docs/GAME_DESIGN.md +++ b/Docs/GAME_DESIGN.md @@ -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`, 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.