How skeplys83/superchameleon works
Super Chameleon is a browser-based multiplayer hide-and-seek game backed by one Node/Colyseus server. Players create or join a lobby, the host starts a round on a selected map, and the server runs countdown, hiding, hunt, and reveal phases before returning players to the lobby. The browser presents the 3D world and role-specific controls; the server owns room state and matchmaking. The README documents additional gameplay capabilities, but source excerpts are limited, so uncertain subsystem wiring is omitted.
Main entry points: client.ts Room client · Game.tsx Game app · room.ts Game room · usePointerControls.ts Player controls
Components 20
Browser game
- Game app
src/client/app/Game.tsx - 3D scene
src/client/app/Scene.tsx - Game HUD
src/client/hud - Room client
src/client/net/client.ts - Player controls
src/client/players/usePointerControls.ts - Player actors
src/client/players - Combat
src/client/combat - Player paint
src/client/paint - Maps and world
src/client/world - Round audio
src/client/app/session/useRoundAudio.ts - Sound engine
src/client/sound/engine.ts
Game server
- Server entry
src/server/index.ts - Session listings
src/server/index.ts - Room registration
src/server/rooms.ts - Game room
src/server/room.ts - Room state
src/server/schema.ts
Shared contracts
- Game protocol
src/shared/protocol.ts - Map registry
src/shared/maps.ts
Platform integration
- CrazyGames SDK
src/client/app/crazygames.ts
Other components
- Player
Connections 19
- Player → Game app: plays
- Game app → 3D scene: mounts
- Game app → Game HUD: presents
- Game app → Room client: joins rooms
- 3D scene → Player actors: renders
- 3D scene → Maps and world: loads maps
- Player controls → Combat: resolves shots
- Player controls → Room client: sends actions
- Player controls → Player paint: samples and paints
- Round audio → Sound engine: plays round audio
- Room client → Game room: sends room messages
- Game room → Room state: updates state
- Server entry → Room registration: registers rooms
- Session listings → Game room: queries matchmaking
- Server entry → Session listings: serves listings
- Game room → Game protocol: uses constants
- Room client → Game protocol: uses messages
- Maps and world → Map registry: uses map registry
- CrazyGames SDK → Room client: invites players