How pasionfruit/quackisland works
Quack Island is a browser-based 3D social island with shared lobbies and party-selected games. The main user flow is to enter the world, create or join a lobby, explore together, then follow the host into a round. The README also describes a volcano board-race foundation and Garden Goofs, whose playable rules are explicitly unfinished; the minigame catalogue is largely planned, with Zombie Tag identified as the first built game. Edges reflect documented behavior and sampled imports; several subsystem paths identify enclosing modules because their implementation was not sampled.
Main entry points: App.tsx Application shell · 10-party/index.ts Party state and games · World.tsx World scene · 09-net/index.ts Lobby networking
Components 21
Island world
- World scene
src/app/World.tsx - World clock and canvas
src/modules/00-core/index.ts - Terrain and island
src/modules/01-terrain/index.ts - Player movement
src/modules/02-player/index.ts - Water, sky, shore
src/modules/04-water/index.ts - Footprints
src/modules/03-footprints/index.ts
Lobby and party
- Lobby popup
src/app/LobbyPopup.tsx - Party controls
src/app/PartyPanel.tsx - Party state and games
src/modules/10-party/index.ts - Lobby scoreboard
src/app/Scoreboard.tsx
Games and rounds
- Minigame catalogue and rounds
src/modules/15-minigames/index.ts - Zombie Tag
src/modules/16-zombie-tag/index.ts - Garden Goofs
src/modules/14-garden/index.ts - Volcano board
src/modules/10-party/internal/island.ts
Shared runtime
- Lobby networking
src/modules/09-net/index.ts - WebSocket relay
server/relay.mjs
Audio and interface
- Application shell
src/App.tsx - Music player
src/modules/05-music/index.ts - Spatial sound cues
src/modules/08-audio/index.ts - World settings
src/app/Settings.tsx
Other components
- Player
Connections 27
- Player → Application shell: opens
- Application shell → World scene: renders
- Application shell → World clock and canvas: mounts canvas
- World scene → World clock and canvas: uses world runtime
- World scene → Terrain and island: renders terrain
- World scene → Player movement: renders player
- World scene → Water, sky, shore: renders environment
- World scene → Footprints: renders trails
- Application shell → Lobby popup: renders
- Application shell → Party controls: renders
- Application shell → Party state and games: reads party state
- Lobby popup → Party state and games: creates or joins
- Party controls → Party state and games: selects party game
- Party state and games → Lobby networking: shares party state
- Lobby networking → WebSocket relay: connects by WebSocket
- Lobby networking → Player movement: reads player colour
- Application shell → Minigame catalogue and rounds: renders and syncs
- Application shell → Garden Goofs: renders screen
- Party state and games → Minigame catalogue and rounds: starts selected round
- Party state and games → Garden Goofs: starts selected game
- Minigame catalogue and rounds → Zombie Tag: hosts playable game
- Party state and games → Volcano board: provides party island
- Application shell → Music player: renders player
- Application shell → World settings: renders settings
- Application shell → Lobby scoreboard: renders
- Application shell → Spatial sound cues: uses sound cues
- Lobby networking → Footprints: shares nearby tracks