adminandClaude Opus 4.8 ae84bb99dd Add late-joiner paint snapshot sync over chunked transfer
Send the accumulated paint maps as a one-time compressed baseline to
clients that join after painting has happened, instead of streaming raw
pixels.

- MeshPainter.Net.cs: TryCaptureSnapshot reads the canonical maps via
  ReadCanonical and Deflate-compresses them; ApplyPaintSnapshot inflates
  and re-seeds the backend through the same island/dilation path as
  SwitchBackend; IsPaintReady gate.
- PlayerPaintSync.cs: tag late-join transfer and live stamps with
  sequence numbers. Joiner requests the snapshot on spawn; server chunks
  and throttles it (1200 B/chunk, 8 chunks/frame) to stay under the
  6144-byte payload cap and the reliable window. Joiner buffers live
  stamps during transfer and replays only those with seq > capturedSeq,
  so no stroke is lost or applied twice across the join window. Disable
  persistence on network-driven remotes to avoid shared-save-key clobber.

Also resets the dynamic TMP font atlas glyph table (editor artifact,
unrelated to networking).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 15:44:02 +02:00
2026-06-27 13:56:59 +02:00

Chameleon

A Unity mesh-painting game inspired by Meccha Chameleon — not a 1:1 clone. You paint your character directly on its 3D mesh to blend into the environment, and move with an extended traversal kit (run, jump, slope-slide, wall-climb).

Status: early prototype. Core painting and movement work; the hide-and-seek game loop (roles, rounds, scoring, multiplayer) is not built yet.

Features so far

  • Seamless mesh painting straight onto the character's 3D mesh (GPU + CPU path, edge-dilation against seams).
  • Third-person character controller — camera-relative WASD, jump, gravity, slope-sliding off too-steep surfaces, hold-to-sprint and acceleration/deceleration for smooth ramp-up and roll-out.
  • Wall-climb + mantle — climb walls/ceilings (W approach/up, S detach, A/D sideways) and pull up over top edges (or hop over slope tops) instead of dropping.
  • Cinemachine orbit camera — mouse look, interpolated scroll zoom, smoothed orbit rotation, collision deocclusion.
  • Animator hookup — drives a Running bool while moving on the ground.
  • Game mode manager — extensible state machine, switch with Tab:
    • Player Control — move + mouse look.
    • Paint — no movement, left-click paints, hold right-click to orbit.

Controls

Input Action
WASD Move (camera-relative)
Shift (hold) Sprint
Space Jump
Mouse Look / orbit camera
Mouse wheel Zoom
Left click Paint (Paint mode)
Tab Switch mode (Player Control ⇄ Paint)

Getting started

  1. Open the project with Unity 6000.3.11f1 (Unity 6).
  2. Open Assets/Scenes/SampleScene.unity.
  3. Press Play, move with WASD, press Tab to switch to Paint mode and paint.

Cinemachine (com.unity.cinemachine) and the Input System are resolved automatically via the package manifest.

Project layout

  • Assets/Scripts/ — gameplay scripts (PlayerCharacterController, MeshPainter, ThirdPersonOrbitInput, GameModeManager, modes, FrameRateLimiter).
  • Assets/Scenes/ — SampleScene (the playground).
  • Docs/GAME_DESIGN.md — design notes and the full feature checklist (German).

Roadmap

See Docs/GAME_DESIGN.md for what's done and what's next (color-picker UI, eyedropper, poses, seeker role, rounds, multiplayer).

S
Description
Unity mesh-painting game (Meccha Chameleon-inspired)
Readme
1.1 GiB
0 Stars 1 Watchers 0 Forks
Languages
C# 85.6%
ShaderLab 8%
GLSL 4%
HLSL 2.3%