Overview
SimulatedLife is a from-scratch reimagining of SimLife (Maxis, 1992): organisms carry real genomes, live on a grid world with climate, weather and biomes, and evolve through mutation, inheritance and speciation. Like the original it's a software toy with no win condition -; you wind it up and watch what emerges. And like the original, it leans hard on TANSTAAFL: every genetic advantage carries an energy cost, so nothing is free.
The hook that makes this version its own thing is a multi-scale event system -; a mutation at the molecular level can cascade upward through cells, organisms, populations and ecosystems, while a global disaster cascades back down. It went through three sibling builds in one summer, each taking a different run at the same idea.
Background
The seed was nostalgia for two early-'90s Maxis sims -; SimLife and
SimEarth -; and a question of whether their genetics-and-climate model
could be rebuilt with modern tooling and made to actually scale. The vault is literally
named "Life v1," and the design specs cite "The Official SimLife Strategy Guide" as
source material. The first stab (simlife_p) was a small C#/.NET parser for
cracking open the original game's data files; the idea grew from there.
From there the project branched. simlife2 became the flagship: a modular
TypeScript engine with the full genetics/world/physics/events split. simlife_v3
took a different tack -; a Python backend feeding a Godot 4 frontend for 3D terrain
-; but never got as far as putting life on the world.
How It Works
The flagship build (simlife2) is a TypeScript/Node engine cleanly split
into four subsystems: genetics/ (genes, genomes, species, mutation),
world/ (terrain generation, climate, biomes, weather),
physics/ (organism physics, an energy/trophic system enforcing TANSTAAFL),
and events/ -; the cross-scale event bus that makes the whole thing
tick.
Animals carry 46 genes, plants 15. Animal behaviour runs off an 8-priority "Master Plan" decision tree -; flee, mate, drink, eat, forage, share, rest, roam -; evaluated in order each tick. When a lineage drifts far enough genetically from its species prototype, AutoSpeciation spins off a brand-new species; dead branches get pruned.
The standout is the scale system. Events are stamped with one of nine scales and propagate between them, attenuating or amplifying as they go and recording a causality chain along the way:
// nine scales an event can live at and cascade between enum Scale { Molecular, Cellular, Tissue, Organism, Population, Ecosystem, Regional, Continental, Global } // a meteor strike at Global cascades DOWN through the // biological scales, attenuating per level; a molecular // mutation cascades UP into cellular dysfunction, and so on
Each disaster type carries its own physics: wildfire burns plants but leaves nutrient-rich ash, floods convert cells to water and drown animals, a meteor lowers terrain into a crater and seeds toxins. The world itself is built in layers -; mountains, then water and rivers, then climate with west-to-east wind and rain-shadow deserts, then erosion, then biomes.
Current Status
Archived as a summer R&D effort. The engine subsystems run -; the default entry point fires off a console demo of the event cascade, and there's a browser canvas UI with play/pause and terrain controls -; but it never crossed into a finished, polished simulation. Pinned at v0.1.0.
- simlife2: genetics, world, climate, physics and the scale-event system all implemented and runnable.
- simlife_v3 reached world generation + climate + weather only; creatures were left as a "future expansion" and never built.
- The headline "1000+ organisms at 60fps" figure is a documented design target in the spec, not a benchmarked result -; treat it as ambition, not a measurement.