SimulatedLife Evolution Simulator
← Project Index SimulatedLife Evolution Simulator

SimulatedLife Evolution Simulator

A modern rebuild of Maxis's SimLife -; a multi-scale genetics and evolution sim where events ripple from a single mutation all the way up to global climate, and species split off on their own.

Archived Started: Summer 2025 Updated: Summer 2025

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.