# Chameleon — Game Design & Fortschritt > Lebendes Dokument. Checkliste, was wir schon haben und was noch fehlt. > Vorbild: **Meccha Chameleon** — aber **kein 1:1-Klon**. Wir picken die Mechaniken, > die uns gefallen, und lassen den Rest weg oder machen es anders. --- ## 1. Referenz: Was ist Meccha Chameleon? Online-PvP-Versteckspiel (Hide & Seek), 2–10 Spieler. Kurzüberblick der Mechaniken (Quellen: Wikipedia, Steam-Store-Seite, Stand der Recherche): - **Hider:** Bemalt seinen anfangs **reinweißen** Chamäleon-Körper, um mit der Umgebung zu verschmelzen. Werkzeuge: **Farbrad** + **Pipette (Eyedropper)** zum Aufnehmen von Umgebungsfarben. Zusätzlich **Posen** (z. B. zusammenrollen, hinlegen), um die Silhouette an Objekte anzupassen. „Versteck, Pose und vor allem die malerische Geschicklichkeit" sind der Schlüssel. - **Seeker/Hunter:** Muss **alle Hider im Zeitlimit** finden. Hider können „taunten" (pfeifen), um sich verräterisch bemerkbar zu machen; optional **erzwungenes Taunting** in Intervallen. - **Modi:** Standard-Hide-and-Seek, **Infection** (Gefangene wechseln die Seite), u. a. - **Struktur:** Runden mit Zeitlimit, Sieg der Seeker, wenn alle gefunden wurden. - Empfohlen **2–10 Spieler**, reines **Online-PvP**. Keine nennenswerten Progressions-/Kosmetik-Systeme in der Store-Beschreibung erwähnt. --- ## 2. Unsere Vision (Abgrenzung) - **Behalten / Stärke ausbauen:** das **Bemalen** als Kern-Mechanik (haben wir bereits, sogar nahtfreies Mesh-Painting auf 3D) + **Bewegung über das Gewöhnliche hinaus** (Wand-Klettern/Mantle ist bei uns schon drin und geht über Meccha Chameleon hinaus). - **Entschieden:** - **Reines Multiplayer-PvP.** Kein Singleplayer/PvE, keine Seeker-KI — Hider und Seeker 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. - **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. --- ## 3. Checkliste — Was wir schon haben ✅ ### Charakter & Bewegung - [x] Third-Person **CharacterController** mit WASD-Bewegung (kamerarelativ) - [x] **Sprung** + Schwerkraft - [x] **Sprint** (Shift halten, eigener Speed-Multiplikator) - [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) - [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 ### Posen & Charakter - [x] **Posen-System** (zusammenrollen, hinlegen) zum Anpassen der Silhouette - [x] Finales Charakter-Modell + Rig - [x] Animationen (Klettern, Springen, Posen) — **Laufen** bereits über den `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) ### Bemalen (Kern der Camouflage-Idee) - [x] **MeshPainter**: nahtfreies Bemalen direkt auf dem 3D-Mesh des Charakters - [x] **GPU- und CPU-Pfad**, umschaltbar; Edge-Padding/Dilation gegen Naht-Linien - [x] Pinsel: **Farbe**, **Größe**, Texturauflösung, Grundfarbe (Inspector) - [x] Shader: `MeshPaintBrush.shader`, `MeshPaintDilate.shader` - [x] **Farbwähler-UI** (Farbrad/Color-Picker) statt fester Inspector-Farbe - [x] **Pipette / Eyedropper**: Umgebungsfarbe per Klick aufnehmen - [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) ### Kamera - [x] **Cinemachine** 3.1.7 Third-Person **Orbit-Kamera** (Maus) - [x] Zoom (Mausrad, **interpoliert**), Kollisionsvermeidung (**Deoccluder**) - [x] **Geglättete Orbit-Rotation** (Tiefpass auf das Maus-Delta) - [x] Cursor-Lock/-Logik je nach Modus ### Spiel-Struktur / Tooling - [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 ❌ ### 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) - [ ] **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 - [ ] **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** 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) Der Kern-Loop steht (Netcode, Rollen, Phasen, beide Modi, Schießen/Konversion). 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 Oberflächen, damit die Tarnung wirklich zählt. 4. **Politur:** 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.