SKIP TO CONTENT
GW

W-04CASE FILE

Everworld

A generative 3D RPG with no main quest and no quest library — kingdoms, families, and feuds are simulated daily, and every quest is derived from something that actually happened.

ROLEDesign & Engineering
YEAR2026
CATEGORYSimulation · game
STATUSLIVE
STACKTypeScript · Three.js · Vite · Procedural generation
W-04 / LIVE SIMULATIONWORLD.SIM
01

Overview

Everworld generates a fantasy world from a seed — kingdoms with their own name phonology and gods, settlements with laid-out buildings, hundreds of named people with families and grudges, and a century of history — then simulates it daily whether or not you are playing. There is no chosen one and no main quest. It runs in a browser tab with no backend and no model calls: everything is simulation.

02

Problem

Open worlds normally mean servers and gigabytes of hand-authored content, and their side quests come from a library of templates with the names swapped. The experiment here: how much genuine world can a seed, a generator, and a simulation loop produce — and can quests be derived from simulation events rather than written in advance?

03

Seed to consequence

Seed to consequenceFIG.
  1. 01

    Seed

    one number

  2. 02

    Worldgen

    kingdoms · settlements · people

  3. 03

    History

    a century, back-simulated

  4. 04

    Daily sim

    runs with or without you

  5. 05

    Events

    raids · deaths · successions

  6. 06

    Quests

    derived, never templated

Quests are a projection of the event log, so they reference real people and real places. If the giver dies before you return, the quest dies with them.

04

What one seed produces

  • 3–7 kingdoms with distinct cultures — name phonology, palettes, god names, architecture — plus dynasties, heirs, and sibling rivalries
  • 16+ settlements with laid-out buildings: keeps, temples, named inns, smithies, alchemists, manors, market stalls
  • 300–500 named NPCs with families, homes, workplaces, wealth, personalities, ambitions, secrets, and an opinion graph over each other
  • Religions that spawn heresies, guilds that suffer coups, bandit bands with named chiefs and real camps
  • A century of written history — foundings, successions, wars, plagues — seeded into present-day relations
05

Systems that feed each other

The interesting behaviour is not in any single system; it is in the loops between them.

  • Ecology: wolves eat deer, starving wolves raid farms, culling the wolves lets deer strip the crops
  • Economy: bandit raids raise a trade route's danger, trade suspends, settlement prosperity falls — clear the camp and the power vacuum can breed a new band
  • Politics: rulers die, successions are contested, dynasties collapse into anarchy, unrest breeds rebellion
  • Consequence: killing a named NPC is permanent — families mourn, businesses pass to heirs, factions elect replacements, and the bereaved may come for you on the road
  • Truth: quest givers can lie, so a claim and a truth are stored separately and the turn-in asks what you want to do about the difference
06

Technical notes

  1. D-01

    Array identity is load-bearing — never sort a world array in place

    Entity references are indices into the world arrays. A single in-place sort silently reassigns every relationship in the world: children acquire different parents, feuds re-target, quests point at strangers. This invariant is written into the repository documentation because it is invisible in the code that would violate it.

  2. D-02

    Deterministic generation from a seed, with no backend

    The world is a pure function of its seed, so content variety comes from generators rather than asset volume. The deploy is static files and saves live in localStorage — hosting cost is zero by construction.

  3. D-03

    Headless browser scripts as the verification suite

    A world simulation has no natural unit boundary, so verification is behavioural: one script boots the game, generates a world, checks the panels and dialogue, and runs 30 simulated days; another exercises terrain streaming, wildlife spawning, a kill and its ecological consequence, and loot.

    INSTEAD OFUnit tests over the simulation internals, which would pin implementation details of systems that are meant to be rewritten as the design changes.

07

Results

Lines of TypeScript
~8,000
Across generation, simulation, rendering, and UI
Backend services
0
No server, no database, no model calls
Headless verification scripts
2
World generation and combat-to-consequence paths
Deployment
Live
Public repository and playable build
08

Lesson

Determinism is the cheapest content pipeline there is. And an invariant that cannot be seen at the site of its violation — never sort this array — belongs in writing, not in memory.

BACK TO INDEX
NEXT SPECIMENSocialCards