Evo Lumen Life started as a shader experiment and became a living artificial-life sandbox where organisms swim, feed, reproduce, struggle, and evolve in a shared ecosystem.
Project repo: https://github.com/jclosure/evo-lumen-life
What it is
Evo Lumen Life is a browser-based simulation of emergent behavior. Instead of static entities, the world is populated by evolving forms (worms, flagellates, protozoa, and virus-like agents) whose movement and survival are shaped by local interaction rules, resource pressure, and reproduction strategies.

Why?
I wanted something more alive than classic cellular automata: not just a pattern engine, but a watchable ecology. The design intent was to create a system that felt continuous and organic—something you could tune and observe like a tiny synthetic biosphere.
- Continuous lifecycle instead of abrupt generation resets
- Predator/prey pressure and resource competition
- Egg-based worm reproduction and juvenile growth
- Interactive controls for time, evolution speed, drift, and species-level behavior
Goals
- Make emergence visible: behavior should unfold over time, not be hidden in static metrics.
- Keep it playful: enough complexity to surprise, enough controls to steer.
- Stay portable: run on Mac, Linux, and Windows in a browser.
- Favor flow: births, deaths, and adaptation drive the simulation

What we learned
The strongest improvements came from treating the system as a controlled dynamical model and validating behavior under parameter sweeps.
- State integration quality dominates perceived realism. We update organism state in small timesteps (position, velocity, energy, age), which reduces aliasing and prevents visual/mechanical discontinuities from coarse step changes.
- Bounded nonlinear terms are mandatory. Core drivers (aggression, drift, growth, resource intake) are clamped to stable ranges. Without bounds, positive feedback causes blow-up modes (population spikes, lock-step clumping, or immediate collapse).
- Energy economics creates meaningful behavior. A simple budget model (intake – metabolic cost – reproduction cost) produced emergent strategy differences more reliably than hand-scripted behavior trees.
- Asymmetry produces richer phase space. Predator-prey and forager-resource interactions are intentionally asymmetric; this increases attractor diversity versus symmetric pairwise rules.
- Fitness is multi-objective. Useful scoring required balancing persistence, exploration, locomotion efficiency, and survivability. Single-objective optimization collapsed diversity too quickly.
- Continuity constraints matter to observers. Interpolated hatch/growth curves and decay on death states improved interpretability and made causal chains easier to track.
- Live controls function as instrumentation. Real-time sliders effectively became online experiments: we could locate bifurcation-like regime shifts quickly and tune toward stable-but-interesting dynamics.
Bottom line: better outcomes came from numerical stability, bounded feedback, and measurable objective tradeoffs—not from adding more visual entities alone.
Where this could go next
- Speciation tracking with lineage trees and trait inheritance maps
- Courtship and mate selection behaviors before egg-laying
- Objective-driven environments (seasonality, gradients, hazards)
- Replay/annotation mode for interesting events
- Networked multiplayer ecosystem tournaments
- Hybrid mode: AI ecology + human strategic interventions
Leave a Reply