← Selected work

GENESIS

An artificial ecosystem you can observe, save, and replay.

Code availableExplore the ecosystem ↓
  • JavaScript
  • WebGL2
  • Web Workers
How it is built
Web Workers
Advances the ecosystem separately from drawing it.
WebGL2 / Canvas 2D
Draws the organisms, with a Canvas fallback.
Seed / snapshot
Saves the simulation state so the same run can continue.
On this page

A world you can resume

GENESIS follows organisms whose bodies and neural networks can change through reproduction. Food enters the world, organisms spend energy moving, and surviving lineages produce descendants. The display is one view of that process. The saved state is the record needed to continue it: organisms, resources, configuration and the internal values that determine the next step.

A checkpoint lets the same starting point be examined more than once. It supports two different questions: whether an unchanged world continues identically, and what changes when a particular pressure is adjusted. This page starts with the first question. The full observatory also provides matched population experiments with a control and an intervention.

Run the same saved state twice

Start two copies from the same saved world. Advance both and check whether their complete saved states agree.

Run the same world twice

Advance both copies by 24 steps. Will the saved states match?

Loads about 2.12 MB on the first run. Switching away from this page stops the experiment.

Ready. No saved world has been loaded.

World A

0 / 24

0 / 24 ticks

World B

0 / 24

0 / 24 ticks

This checks one saved world and a short continuation in your current browser.

Comparison details & result file

Restore seed 42 at tick 1,200, then advance each copy by 24 ticks. The comparison covers the complete saved states, including configuration, random state, neural values and resource-slot order. It does not establish equality across browser engines.

World A · Complete state · SHA-256

—

World B · Complete state · SHA-256

—
How it works & what was checked

Press Run to load the supplied seed-42 checkpoint at tick 1,200. Two separate workers restore it in sequence. Each advances by exactly 24 simulation ticks, then returns its complete saved world state. The two SHA-256 values below are calculated from those returned states. Population counts provide a readable summary; the hashes compare substantially more than population.

The expected result is a match. An interrupted run produces no completed comparison, and Run starts again from the same saved input. A completed result can be downloaded as JSON with both start and endpoint hashes. Workers stop when the page is hidden, so the experiment advances only while you choose to keep it open.

What the comparison includes

The version-4 state includes both random-number streams, including an unused Gaussian sample; the registry that assigns innovation numbers to neural connections; each organism’s current neural values; and the order of free resource slots. Arrays retain their order during hashing. Object keys are sorted so that the order in which JSON keys were written does not decide whether two equivalent records match.

The comparison covers the serialized world-state contract. Chart history and display metadata sit outside that contract. A match establishes agreement for this build, checkpoint, browser runtime and continuation. It does not establish identical trajectories across browser engines, or predict all later outcomes. The source and downloadable result make that boundary explicit.

Keep every recorded branch

Follow the branches from the first species. This saved world includes records of both living and extinct species.

71 species records at tick 9000; 42 present and 29 extinct.
All records from the supplied seed-42 world at tick 9,000. Scroll to inspect each species. Open full diagram ↗ · JSON ↓
How it works & what was checked

At tick 9,000, the supplied seed-42 checkpoint contains 71 species records: the founding species and 70 later branches. Forty-two species are present and 29 are extinct. The deepest path from the root contains three parent edges. The diagram is generated from those records, including species that never grew beyond one member.

Horizontal position represents simulation tick. A connection begins at the child species’ recorded birth tick. A living species extends to tick 9,000; an extinct species ends at its recorded last-seen tick. Circles and crosses distinguish the endpoints without relying on color alone. The data download contains the IDs and tick values behind every line.

Reading the branches

A species record stores the reproducing organism’s species when a new species is assigned. It is a record of species branching, rather than a complete list of every individual’s parents. Reproduction can include a second mate. The representative genome also belongs to the species record; it does not track every later member as the population changes.

Neural connections carry innovation IDs so matching genes can be aligned during recombination. Shared IDs describe a structural relationship inside this simulation. They can be inspected numerically, but do not by themselves establish how similar two organisms behave or how similar a musical rendering would sound. The branching diagram makes the recorded relationship visible without requiring either claim.

Replay verification notes

The three supplied checkpoints at ticks 1,200, 2,400 and 9,000 were independently restored and continued by 100 ticks in separate Node v22.11.0 workers. Each pair reached identical complete-state hashes. This check resumed the supplied files; it did not rerun the entire 9,000-tick trajectory from the initial seed. The in-page experiment performs its own shorter comparison in your current browser.

The species counts were separately recalculated from the tick-9,000 checkpoint, and all 5,587 creature memberships agreed with the stored species counts. The compressed input matches its declared SHA-256. The static diagram needs no simulation worker; running the experiment is an explicit choice. This keeps the article readable while preserving a direct route from each stated result to its data and method.

Inspect the simulation source ↗

Evidence & method

Verification notes

The supplied seed-42 checkpoint at tick 9,000 contains 71 species records: 42 living and 29 extinct. All 5,587 creature memberships agree with the species counts. Parent links record species branching, not a complete individual genealogy.

Each of three supplied checkpoints produced matching states after 100 further ticks in separate Node 22.11.0 workers. The browser runs its own 24-tick comparison. These checks resume saved worlds and apply to their respective runs.

Run downloads a 2.12 MB compressed checkpoint. Its SHA-256 matches the supplied manifest.

Download the verification record ↓

Explore the whole ecosystem

Opens here. Your browser runs the world.

The film · 4:30