Add shipped features (session browser, radar pings + self-ping taunt, X-ray reveal, conversion statues, match start trigger, fur shells, PBR paint channels + camo knobs + painting library, settings persistence, SkyboxEnvironmentUpdater, volumetric climb probes), correct stale claims (MatchHud is uGUI, matchmaking exists), reprioritize next steps. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
12 KiB
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: 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.
3. Checkliste — Was wir schon haben ✅
Charakter & Bewegung
- Third-Person CharacterController mit WASD-Bewegung (kamerarelativ)
- Sprung + Schwerkraft
- Sprint (Shift halten, eigener Speed-Multiplikator)
- Beschleunigung/Entschleunigung (sanfter Anlauf/Ausrollen statt Snap)
- Slope-Sliding (Abrutschen von zu steilen Flächen/Kanten)
- Wall-Climb: Wände/Decken hochklettern (wand-relative Steuerung: 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)
- Mantle / Top-Out: über die Oberkante ziehen statt droppen, an steilen Schrägen mit Aufwärts-Hop drüber (kein Kanten-Flackern)
- Animator-Anbindung:
Running-Bool wird bei Bodenbewegung gesetzt
Posen & Charakter
- Posen-System (zusammenrollen, hinlegen) zum Anpassen der Silhouette
- Finales Charakter-Modell + Rig
- Animationen (Klettern, Springen, Posen) — Laufen bereits über den
Running-Animator-Bool angebunden - Fall-Animation: eigene Pose-Animation beim Fallen (Abwärts-Velocity über Schwellenwert, nicht am Boden; pro Pose authorbar mit Idle-Fallback)
- Fell (
FurShellRenderer): Shell-basiertes Fur auf dem Body, färbt mit der Bemalung mit
Bemalen (Kern der Camouflage-Idee)
- MeshPainter: nahtfreies Bemalen direkt auf dem 3D-Mesh des Charakters
- GPU- und CPU-Pfad, umschaltbar; Edge-Padding/Dilation gegen Naht-Linien
- Pinsel: Farbe, Größe, Texturauflösung, Grundfarbe (Inspector)
- Shader:
MeshPaintBrush.shader,MeshPaintDilate.shader - Farbwähler-UI (Farbrad/Color-Picker) statt fester Inspector-Farbe
- Pipette / Eyedropper: Umgebungsfarbe per Klick aufnehmen
- Weitere Brushes (Größe per Hotkey/Slider, evtl. Muster/Texturen)
- Undo der Bemalung (Checkpoint-basiert, auch über das Netzwerk) — ein separates Komplett-Reset ist bewusst nicht nötig (Undo deckt das ab)
- PBR-Kanäle malbar: Metallic/Smoothness und Höhe (Occlusion-Kanal mit Relief-Normal- und Parallax-Shading) — pro Kanal zuschaltbar im Paint-HUD
- Camo-Regler: Brightness (generelle Exposure) + Saturation (0 = neutral, −1 = grau) — persistent und netz-repliziert
- Painting-Library: Bemalungen benannt speichern/laden/löschen (versionierte Slots inkl. aller Regler; Laden wird an Mitspieler re-broadcastet)
Kamera
- Cinemachine 3.1.7 Third-Person Orbit-Kamera (Maus)
- Zoom (Mausrad, interpoliert), Kollisionsvermeidung (Deoccluder)
- Geglättete Orbit-Rotation (Tiefpass auf das Maus-Delta)
- Cursor-Lock/-Logik je nach Modus
Spiel-Struktur / Tooling
- GameModeManager (erweiterbare State-Machine, Tab schaltet um)
- Player-Control-Modus (Laufen + Kamera per Maus)
- Paint-Modus (kein Movement, Linksklick malt, Rechtsklick hält Kamera-Dreh)
- First-Person-Modus (Hunter: FP-Kamera + Schießen per Linksklick-Raycast)
- Free-Cam / Spectator-Modus (gefundene/zuschauende Spieler beobachten frei)
- FrameRateLimiter (FPS-Begrenzung, VSync-Handling)
- Settings-Persistenz (
GameSettings): Master-Volume- & Maus-Sensitivitäts-Slider - SkyboxEnvironmentUpdater: Sky-Reflexion + Ambient ohne gebackenes LightingData (Custom-Cubemap-Render, Intensity-Regler, separates Reflexions-Sky-Material möglich)
- Concealment-Tooling:
ConcealmentMeter(volumetrische „wie tief steckt der Hider in Geometrie"-Messung) + Collider-Baker (ConcealmentColliderBaker, VHACD, Skinned) - Git initialisiert (Unity-
.gitignore+.gitattributes), englische Commits
Multiplayer (reines Online-PvP)
- Netcode for GameObjects (NGO 2.13) als Netzwerk-Stack
- Host/Join, Lobby-Szene + Match-Szene (
The Room) - 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) - Spieler-Synchronisation (NetworkTransform, owner-authoritativ)
- Bemalung über das Netzwerk (
PlayerPaintSync: ServerRpc/ClientRpc/NetworkVariable, Late-Join-Replay der Paint-Stamps) - Rollen-Prefab-Varianten: Hunter (groß, Sprint ×2, FP+Schießen) / Hider (klein)
- Spawn-Areas über getaggte (konvexe) Collider:
SpawnArea, rollenspezifischHunterSpawnArea/HiderSpawnAreamit Fallback-Kette (Rolle →SpawnArea→ Ring); zufälliges Streuen per Rejection-Sampling innerhalb der Form
Match-Loop (Hide & Seek)
- Server-autoritative State-Machine (
MatchManager, repliziert via Named Messages): Verstecken → Suchen → Auflösung → zurück zur Lobby - Pro-Phase-Timer als Inspector-Properties in Sekunden (
hideDuration,seekDuration,resolveDuration) - 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
- Hunter-Schießen: Raycast aus FP-Kameramitte, Cooldown (
shootCooldown), Reichweite (shootRange), server-validierter Treffer - Found-State (
NetworkVariable<bool>, server-write): getroffener Hider → Mesh bei allen aus → nur noch Spectator-Freecam - Früh-Ende der Suchphase, wenn alle Hider gefunden/konvertiert sind
- 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) - 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
- Selbst-Ping / Taunt (E): Hider verrät sich freiwillig mit einem sofortigen Radar-Blip
- 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) - Conversion-Statuen (
MatchStatue): eingefrorene, bemalte Statue jedes konvertierten Hiders (Ort/Pose/Bemalung) erscheint zur Auflösung - 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)
- Match-HUD (
MatchHud, uGUIMatchHudCanvas): Phase + Countdown, Rollen-Zähler, Hunter-Crosshair, Radar-Sweep-Countdown - Kamera-Occlusion-Fade (
HeroCutout): kegelförmiger weicher Cut (radial + axial), konstante Bildschirm-Lochgröße, raycast-getriggert
4. Checkliste — Was noch fehlt ❌
Spielablauf (Hide & Seek)
- 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
- Akustisches Taunt/Pfeifen (optional, ggf. erzwungen) — der Radar-Selbst-Ping deckt die Mechanik bereits ab
Multiplayer
- 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 Mapexistieren als Basis - 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 (Sky-Reflexion/Ambient via
SkyboxEnvironmentUpdaterund erste Shadow-Passes sind drin)
5. Vorgeschlagene nächste Schritte (Reihenfolge zur Diskussion)
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:
- Match-Abschluss ausbauen: echte Sieg-/Niederlage-Auswertung + Ergebnis-Screen in der Auflösungs-Phase (Statuen + Reveal sind da, die Auswertung fehlt).
- Map-/Level-Design vertiefen: mehr Verstecke und farblich abwechslungsreiche Oberflächen, damit die Tarnung wirklich zählt.
- Politur: Audio (Schritte/Schuss, optional Pfeifen), Art-Direction/Beleuchtung.
- 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.