Fantasy Dynasty 300 Years — castle witnesses 3 royal houses rise and fall
A 3D EPOCH demo: 300 sim-years across 3 royal houses (Ashvale → Brennan → Caelvaron), wizard tower goes from new construction to glowing apprentice's tower to ruined keep, banners change, castle stones weather from white to mossy across 18 era stamps.
Built with:
three.js r0.160 (single file)Stone weathering shader + house banner color swaplocalStorage dynasty memory across reseeds
Prompt
Build a single-file HTML page that recreates "300 years of a fantasy dynasty across 3 royal houses" as a continuous 3D autoplay world. The castle itself is the protagonist — wizard tower goes from new construction to glowing tower to ruined keep, banners change, stones weather. Game-of-Thrones cozy 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 advancing to next 300-year era.
- First body line: <!-- ROUND16_EPOCH v1 -->
- localStorage memory under key `dynasty_memory_v1` — 9 named royals across 3 houses, era counter, royal aging state, eras_completed, last_event; on reseed advance generations.
- Generational aging: at least one named noble starts as a child, becomes king, dies an elder. Cast list shows lifecycle: unborn → child → king → elder → dead.
- Visible structural change: castle keep + curtain walls (year 14) → great hall (year 23) → wizard tower (year 47) → chapel (year 62) → wizard tower visibly RUINS at year 268 (roof falls, rubble appears, body shortens). Castle stones weather white → grey → mossy across centuries.
- Banners drop and re-raise on house transitions at year 89 and year 245, with full color swap (red → green → purple).
- 7+ sub-locations: throne dais, great hall, courtyard, wizard tower, chapel, training yard, royal gardens, kitchens, dungeons.
- Mini-map of the castle complex + active hotspot.
- 100+ named characters: 9 royals across 3 houses + 18 featured cast (court wizard Greylock + apprentice Vela inheriting his robes, knights, jesters, advisors, bards, traitors, foreign envoys, the Bastard) + 60 InstancedMesh courtiers/peasants.
- 18+ director cameras with story-biased weighting (wizard tower era 47-172, tournament cameras 35-70 & 140-160, banner-change cameras 89-92, chapel/dungeon late-game).
- 52-event chyron with cross-system narration: "Year 47 — Princess Lyric born to Brennan. Year 47 — Old wizard Greylock dies in his tower; new apprentice Vela inherits robes."
Tone: Game of Thrones cozy. No graphic violence. Battles offscreen. Beheadings handled as offscreen "the executioner attends his work". The vibe is dynastic gossip and the slow weight of time.
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- How to weather a castle visibly across 300 sim-years by lerping stone color from white to mossy and gating moss instance density on a year-progress variable
- How to use a single building (the wizard tower) as a narrative spine — bright window during Greylock's era, dimmer under Vela, dark after, ruined at year 268
- How to script 52 chyron events with cross-system narration so the same year references the throne room AND the wizard tower AND the courtyard tournament — making 300 years feel like one continuous story