Music Festival — 4 Stages, 12 Bands, Forever Sunset
A 3D festival with 4 stages, 12 procedural bands, 260 dancers flowing between sets, headliner reveal, drop flashes, fireworks finale, and a full day-to-night sky.
What this is
A single-file three.js demo of a 4-stage music festival from sound check to fireworks. Twelve procedural bands run a staggered schedule. A 260-strong crowd with five genre-driven behaviors flows between stages as sets start. The sky lerps from afternoon to sunset to full night and a director cuts between eight cinematic cameras as the headliner takes Main East.
Why this is mind-blowing
The schedule grid is real — bands actually start and finish on it. The crowd actually migrates. The drop flash actually fires on the headliner's drop. The fireworks finale actually closes the festival. Then the world reseeds with twelve new bands across the four stages and starts the day all over again. Watching it is like camping at a festival without the sunburn.
Prompt
Build a single-file three.js r0.160.0 demo styled as a live broadcast
from a 4-stage music festival from sound check to fireworks finale.
Constraints:
- Single HTML file < 200KB. three.js from unpkg only.
- First line of <body>: <!-- ROUND14_LIVING v1 -->.
- IIFE + strict mode. Disposables registry. Reseed every ~10 min.
- Autoplays forever.
3D world:
- 4 stages: Main East, Bass Dome West, Acoustic Grove North,
Comedy/Pop South. LED canvas screens, truss towers, beam cones,
moving lights, PA flags.
- Props: 4 food trucks, porta-potty row, VIP tent, ferris wheel
(spinning), inflatable art, 28 trees, 40 camp tents, 8 mountain
cones, 60 lit ground LEDs, lasers from Bass Dome, ambient sparkle.
Living world:
- 12 procedural bands (3 per stage) generated each cycle from a
`BAND_PARTS_A/B + BAND_SOLO` × 14-genre pool; staggered schedule.
- 260-instance InstancedMesh crowd with per-instance color, genre-
driven behaviors (mosh / rave / wave / bounce / sway), flow between
stages on band activation.
- Day → sunset → night sky/fog/light lerp, headliner reveal, drop
flash, encore, fireworks finale, weather change, invader alert,
wristband promo, and "FESTIVAL CLOSES — SEE YOU NEXT YEAR".
Cams: 8 director cams (Aerial, Main, Bass, Grove, Comedy, Crowd Flow,
Mosh Pit, Skycam) cycling every 6–11s with handheld jitter.
Broadcast UI: gradient logo, LIVE dot, cam label, sim clock, 4-stage
schedule grid (live/done states), crowd meters with bars, lower-third
now-playing, headliner countdown, anchor PIP messages, ticker, banner,
drop flash.
Reseed every ~10 min: full disposables cleanup + new scene with new
bands and new headliner.
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- Sky color is a story device. The day → sunset → night lerp is half the watchability.
- Crowd flow between stages on band activation is what sells the world as alive — not the bands themselves.
- Genre-driven crowd behavior (mosh vs rave vs wave) is way cheaper than animating individual dancers.