Forest 4 Seasons — one year in a woodland ecosystem with named animals across generations
A 3D EPOCH demo: full year through 4 seasons, named deer/foxes/owls/beavers grow up and pass on, beaver dam built across the year, sapling grows over multiple year reseeds — Pixar-natural-history-cozy and persistent across Twitch viewing sessions.
Built with:
three.js r0.160 (single file)Sky/fog/grass/leaf 4-season palette lerplocalStorage generational memory across reseeds
Prompt
Build a single-file HTML page that recreates "one year in a temperate forest ecosystem" as a continuous 3D autoplay world. Spring → Summer → Fall → Winter — named animals are born, grow, mate, raise young, age, and pass on. The forest itself remembers them across reseeds. Cozy nature documentary on Twitch.
Hard constraints:
- One HTML file, < 200KB.
- three.js r0.160.0 from unpkg, IIFE, strict mode, full disposable cleanup, reseed every ~10 min that ADVANCES the year (year 2 of 5 etc) instead of resetting.
- First body line: <!-- ROUND16_EPOCH v1 -->
- localStorage memory under key `forest_year_memory_v1` — 8 named animals with species + age + family + state. On reseed, babies become juveniles, juveniles become adults, elders die offscreen, new fawns appear with names referencing parents.
- Generational aging — fawn → yearling → adult → elder visible mesh size + antler growth in real time.
- Visible structural change — beaver dam built across 4 seasons (sticks pile up gradually). Tree falls in autumn storm. Tree grows from sapling over multi-year reseeds.
- 6+ sub-locations: meadow clearing, deep forest interior, riverbank with beaver lodge, owl tree, fox den, woodpecker snag, forest pond, hilltop overlook.
- Mini-map HUD with season tint + active hotspot.
- 100+ named animals total: 14 featured cast (Doe Hazel + fawn Sprig, Buck Cinder, vixen Rua + kits Ember & Scamp, Owl Octavia, Beaver pair Splash & Otter, Raccoon Bandit, Woodpecker Tap, Robin Sky, Squirrel Acorn) + 78 InstancedMesh background animals + 44-name pool for chyron rotation.
- 18+ director cameras with season-hint filtering.
- Chyron with cross-system narration: "Spring 14 — Hazel's fawn Sprig takes first steps. Across the meadow, Cinder spars with rival buck Wren."
- Particles: snow in winter, leaf-drift in autumn, pollen in spring, fireflies in summer evening.
- Generation counter HUD "YEAR 3 of 5 — GENERATION 2".
Tone: nature documentary cozy. Predation handled implicitly. No on-screen violence. Bambi vibes. The vibe is awe at the passage of time, not blood.
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- How to compress a full year of an ecosystem into 10 minutes by lerping sky/fog/grass/leaf palettes through 4 season presets per frame
- How to use localStorage to give a Twitch demo persistent memory across reseeds — fawns become elders the same way they would in a real wildlife cam over a year
- How to build a single demo where structural changes (beaver dam piling up, sapling growing, tree falling) accumulate visibly across multi-day Twitch viewing