Files
chameleon/Docs/GAME_DESIGN.md
T
adminandClaude Fable 5 a7f0ee0280 Docs: correct mode-switch docs — Esc/Tab both open the overview menu
Tab is an alternate binding for the overview menu, not a direct
mode toggle; mode switching happens via the menu buttons.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 18:36:51 +02:00

13 KiB
Raw Blame History

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
  • Radiales Posen-Menü mit Hotkeys (bei ≤ 2 Posen direktes Durchschalten) + gerenderte Pose-Icons (eigene Pose Icon-Szene mit Capture-Pipeline, Toon-Shader mit Outline)

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
  • Kugel-Brush (3D-Distanz statt Box) mit Rückseiten-Abweisung über die Flächen-Normale (brushMaxSurfaceAngle) — kein Durchmalen auf die Gegenseite dünner Geometrie, kein Übergreifen an Nähten
  • Pinsel: Farbe, Größe, Masken, Spray, Texturauflösung, Grundfarbe
  • Shader: MeshPaintBrush.shader, MeshPaintDilate.shader, Preview-Shader (Vorschau matcht die echte Landung)
  • Farbwähler-UI (HSV-Color-Picker) statt fester Inspector-Farbe
  • Pipette / Eyedropper: nimmt Albedo, Metallic/Smoothness und Emission aus der Umgebung auf — auch von den Custom-/AVP-Shadern
  • Weitere Brushes (Größe per Hotkey/Slider, Masken/Muster)
  • 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, Höhe (Occlusion-Kanal mit Relief-Normal- und Parallax-Shading) und Emission (mit Intensitäts-Regler) — pro Kanal zuschaltbar im Paint-HUD
  • Camo-/Material-Regler: Brightness, Saturation, Half Lambert, Specular Damp sowie Occlusion-/Normal-/Parallax-Intensität — netz-repliziert; Laufzeit-Werte überleben den Respawn, werden aber bewusst nicht auf Disk persistiert (Session startet auf Authoring-Defaults)
  • 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, Wechsel über das Overview-Menü)
    • 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)
  • Overview-/Escape-Menü (OverviewMenu, Esc/Tab): Icon-Buttons mit Hotkey-Hints, Taunt-Button, Match-Results-Modal, kontextsensitiver Disconnect
  • FrameRateLimiter (FPS-Begrenzung, VSync-Handling)
  • Settings-Persistenz (GameSettings): Master-Volume- & Maus-Sensitivitäts-Slider; Paint-HUD-Layout/Brush-Werte persistent (PaintHud.json)
  • SkyboxEnvironmentUpdater: Sky-Reflexion + Ambient ohne gebackenes LightingData (Custom-Cubemap-Render, Intensity-Regler, separates Reflexions-Sky-Material möglich)
  • Rendering: URP Deferred+ mit HTrace WSGI Global Illumination (in der Lobby automatisch deaktiviert, HTraceLobbyToggle); handgeschriebene URP-Ports der AVP/ArchViz-Shader (POM, Glass, Velvet, Curtains, DoubleSided, Nature, Vegetation) inkl. GBuffer-/Deferred+-Fixes und HeroCutout-Support
  • Concealment-Tooling: ConcealmentMeter (volumetrische „wie tief steckt der Hider in Geometrie"-Messung) + Collider-Baker (ConcealmentColliderBaker, VHACD, Skinned)
  • Asset-Importer (Editor): Poly-Haven-Importer (Texturen und Modelle — Katalog-Browser mit Thumbnail-Grid, PBR-Download, automatisches URP/Lit-Material inkl. Roughness→Smoothness-Repack + ARM-Fallback, FBX-Material-Remap) und ambientCG-Importer auf geteiltem WebAssets-Framework
  • Weitere Editor-Tools: Pose-Icon-Capture (PoseIconStage), PictureFrameBuilder, Normal-Map-Generator
  • 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, rollen­spezifisch HunterSpawnArea / HiderSpawnArea mit 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, uGUI MatchHudCanvas): Phase + Countdown, Rollen-Zähler, Hunter-Crosshair, Radar-Sweep-Countdown
  • Ergebnis-Screen + Sieg-Auswertung (MatchResultScreen, uGUI MatchResultCanvas): der Server friert bei Seek-Ende das Ergebnis ein (Hunter gewinnen bei „alle gefunden/konvertiert", Hider bei Timeout mit Überlebendem) und repliziert es an alle Clients (inkl. Late-Joiner); die Auflösung zeigt Sieger-Banner + Spielerliste (Status Gefunden/Konvertiert/Überlebt, Überlebenszeit, gefunden von wem)
  • Kamera-Occlusion-Fade (HeroCutout): kegelförmiger weicher Cut (radial + axial), konstante Bildschirm-Lochgröße, raycast-getriggert

4. Checkliste — Was noch fehlt ❌

Spielablauf (Hide & Seek)

  • 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 Map existieren als Basis
  • UI-Ausbau: Feinschliff — Match-HUD, Ergebnis-Screen, Paint-HUD (inkl. Library), Session-Browser und Overview-/Escape-Menü sind bereits uGUI
  • Audio: SFX (Schritte, Klettern, Schuss, ggf. Pfeifen), Musik
  • Beleuchtung / Art-Direction finalisieren (HTrace WSGI GI + Deferred+ und Sky-Reflexion/Ambient via SkyboxEnvironmentUpdater stehen; Material-/Map-Look wird gerade mit den Poly-Haven-/ambientCG-Sets ausgebaut)

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, Ergebnis-Screen). Die nächsten Schritte machen ihn rund und präsentabel:

  1. Map-/Level-Design vertiefen: mehr Verstecke und farblich abwechslungsreiche Oberflächen, damit die Tarnung wirklich zählt.
  2. Politur: Audio (Schritte/Schuss, optional Pfeifen), Art-Direction/Beleuchtung.
  3. 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.