diff --git a/Docs/GAME_DESIGN.md b/Docs/GAME_DESIGN.md index c11c177..de7a53d 100644 --- a/Docs/GAME_DESIGN.md +++ b/Docs/GAME_DESIGN.md @@ -41,7 +41,8 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha - **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) + - Taunt: der **Radar-Selbst-Ping** (E) ist umgesetzt (Hider verrät sich freiwillig auf dem + Hunter-Radar); ob zusätzlich ein **akustisches Pfeifen** (ggf. erzwungen) kommt, ist offen > **TODO (User):** Hier eintragen, was dir bei Meccha Chameleon gefällt und was nicht — danach > schärfen wir Scope & Reihenfolge. @@ -57,7 +58,8 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha - [x] **Beschleunigung/Entschleunigung** (sanfter Anlauf/Ausrollen statt Snap) - [x] **Slope-Sliding** (Abrutschen von zu steilen Flächen/Kanten) - [x] **Wall-Climb**: Wände/Decken hochklettern (wand-relative Steuerung: - W ran/hoch, S weg+ablösen, A/D seitlich) + W ran/hoch, S weg+ablösen, A/D seitlich); **volumetrische SphereCast-Probes** — + hält auch dünne Bretter, weiche Kontakt-Normale an Kanten/Rundungen (kein Flackern) - [x] **Mantle / Top-Out**: über die Oberkante ziehen statt droppen, an steilen Schrägen mit Aufwärts-Hop drüber (kein Kanten-Flackern) - [x] **Animator-Anbindung**: `Running`-Bool wird bei Bodenbewegung gesetzt @@ -69,6 +71,8 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha `Running`-Animator-Bool angebunden - [x] **Fall-Animation**: eigene Pose-Animation beim Fallen (Abwärts-Velocity über Schwellenwert, nicht am Boden; pro Pose authorbar mit Idle-Fallback) +- [x] **Fell** (`FurShellRenderer`): Shell-basiertes Fur auf dem Body, färbt mit der + Bemalung mit ### Bemalen (Kern der Camouflage-Idee) - [x] **MeshPainter**: nahtfreies Bemalen direkt auf dem 3D-Mesh des Charakters @@ -80,6 +84,12 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha - [x] Weitere Brushes (Größe per Hotkey/Slider, evtl. Muster/Texturen) - [x] **Undo** der Bemalung (Checkpoint-basiert, auch über das Netzwerk) — ein separates Komplett-**Reset** ist bewusst nicht nötig (Undo deckt das ab) +- [x] **PBR-Kanäle malbar**: Metallic/Smoothness und **Höhe** (Occlusion-Kanal mit + Relief-Normal- und Parallax-Shading) — pro Kanal zuschaltbar im Paint-HUD +- [x] **Camo-Regler**: **Brightness** (generelle Exposure) + **Saturation** + (0 = neutral, −1 = grau) — persistent und netz-repliziert +- [x] **Painting-Library**: Bemalungen benannt **speichern/laden/löschen** (versionierte + Slots inkl. aller Regler; Laden wird an Mitspieler re-broadcastet) ### Kamera - [x] **Cinemachine** 3.1.7 Third-Person **Orbit-Kamera** (Maus) @@ -94,11 +104,19 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha - [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] **Settings-Persistenz** (`GameSettings`): Master-Volume- & Maus-Sensitivitäts-Slider +- [x] **SkyboxEnvironmentUpdater**: Sky-Reflexion + Ambient ohne gebackenes LightingData + (Custom-Cubemap-Render, Intensity-Regler, separates Reflexions-Sky-Material möglich) +- [x] **Concealment-Tooling**: `ConcealmentMeter` (volumetrische „wie tief steckt der Hider + in Geometrie"-Messung) + Collider-Baker (`ConcealmentColliderBaker`, VHACD, Skinned) - [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] **Session-Browser** (UGS Sessions, `OnlineSessionBrowserUI`): Host / Liste + aktualisieren / Join per Klick; im Spiel als **Esc-Pause-Overlay** mit + kontextsensitivem Disconnect (Exit / Back-to-Lobby / Disconnect) - [x] **Spieler-Synchronisation** (NetworkTransform, owner-authoritativ) - [x] **Bemalung über das Netzwerk** (`PlayerPaintSync`: ServerRpc/ClientRpc/NetworkVariable, Late-Join-Replay der Paint-Stamps) @@ -119,11 +137,23 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha - [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] **Match-Start per Trigger-Zone** in der Lobby (`StartMatchTrigger`): die Match-Authority + stellt sich in den Bereich; server-seitiger Overlap-Poll (funktioniert auch für + Remote-Authority ohne Rigidbody) +- [x] **Radar-Pings**: Intervall-Sweep in der Suchphase — jeder un-gefundene Hider blippt + auf dem **Hunter-Radar** (Overlay-Radar mit Fade); HUD zeigt Countdown zum nächsten Sweep +- [x] **Selbst-Ping / Taunt** (E): Hider verrät sich freiwillig mit einem sofortigen Radar-Blip +- [x] **X-Ray-Reveal** (Umriss-Glow durch Wände): in der Auflösung, als kurzer Schuss-Flash + und als **Embedded-Schutz** — steckt ein Hider tiefer als die Schwelle in Geometrie + (`ConcealmentMeter`), wird er für alle enthüllt (Anti-Cheese) +- [x] **Conversion-Statuen** (`MatchStatue`): eingefrorene, bemalte Statue jedes konvertierten + Hiders (Ort/Pose/Bemalung) erscheint zur Auflösung - [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] **Match-HUD** (`MatchHud`, uGUI `MatchHudCanvas`): Phase + Countdown, Rollen-Zähler, + Hunter-Crosshair, Radar-Sweep-Countdown - [x] **Kamera-Occlusion-Fade** (`HeroCutout`): kegelförmiger weicher Cut (radial + axial), konstante Bildschirm-Lochgröße, raycast-getriggert @@ -132,39 +162,40 @@ Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mecha ## 4. Checkliste — Was noch fehlt ❌ ### Spielablauf (Hide & Seek) -- [ ] **Auflösungs-Phase mit Inhalt**: aktuell läuft nur der Countdown; noch kein - **Ergebnis-Screen** (wer hat gewonnen, wer wurde gefunden/konvertiert) +- [ ] **Ergebnis-Screen** in der Auflösung (wer hat gewonnen, wer wurde gefunden/konvertiert) — + Conversion-Statuen + X-Ray-Reveal sind da, eine explizite Auswertung/Anzeige fehlt - [ ] **Explizite Sieg-/Niederlage-Auswertung** (Hunter gewinnt bei „alle gefunden", Hider gewinnen bei Timeout) — derzeit nur impliziter Phasenwechsel -- [ ] **Taunt/Pfeifen** (optional, ggf. erzwungen) — noch offen +- [ ] **Akustisches Taunt/Pfeifen** (optional, ggf. erzwungen) — der Radar-Selbst-Ping + deckt die Mechanik bereits ab ### Multiplayer -- [ ] **Matchmaking** über reines Host-Join hinaus (Lobby-Browser / Codes / Relay) +- [ ] **Matchmaking-Ausbau**: Join-Codes / Relay / private Sessions + (Session-Browser mit Host/Join existiert bereits) - [ ] Robustheit: Reconnect, Host-Migration, Disconnect-Edge-Cases im Match ### Welt & Präsentation - [ ] **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) +- [ ] **UI-Ausbau**: Menüs + Ergebnis-Screen — Match-HUD, Paint-HUD (inkl. Library) + und Session-Browser sind bereits uGUI - [ ] **Audio**: SFX (Schritte, Klettern, Schuss, ggf. Pfeifen), Musik -- [ ] **Beleuchtung / Art-Direction** finalisieren (erste Reflection-/Shadow-Passes sind drin) +- [ ] **Beleuchtung / Art-Direction** finalisieren (Sky-Reflexion/Ambient via + `SkyboxEnvironmentUpdater` und erste Shadow-Passes sind drin) --- ## 5. Vorgeschlagene nächste Schritte (Reihenfolge zur Diskussion) -Der Kern-Loop steht (Netcode, Rollen, Phasen, beide Modi, Schießen/Konversion). Die nächsten -Schritte machen ihn **rund** und **präsentabel**: +Der Kern-Loop steht (Netcode, Session-Browser, Rollen, Phasen, beide Modi, Schießen/Konversion, +Radar, X-Ray-Reveal, Statuen). Die nächsten Schritte machen ihn **rund** und **präsentabel**: 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 + Auflösungs-Phase (Statuen + Reveal sind da, die Auswertung fehlt). +2. **Map-/Level-Design** vertiefen: mehr Verstecke und farblich abwechslungsreiche Oberflächen, damit die Tarnung wirklich zählt. -4. **Politur:** Audio (Schritte/Schuss), Art-Direction/Beleuchtung, - optional Taunt-System. +3. **Politur:** Audio (Schritte/Schuss, optional Pfeifen), Art-Direction/Beleuchtung. +4. **Robustheit:** Reconnect / Host-Migration / Disconnect-Edge-Cases. > Reihenfolge bewusst so, dass aus dem funktionierenden Prototyp ein **fühlbar fertiges** > Match wird, bevor wir Breite (mehr Modi/Maps) draufsetzen.