A browser-based artificial-life simulation: per-particle evolving genomes + chemistry field + bonded-cluster organisms + tactile brushes. No build step, no backend, runs entirely on the visitor's GPU/CPU.
python -m http.server 8765
# open http://localhost:8765/npm testnpm run bench:cpu -- maze 1200 1500 0xC0FFEEThe CPU probe reports timing plus construction diagnostics (wallDigs,
wallDeposits, and live wallCarriers) so builder regressions are easy to
spot during performance work.
Start the local server first, then run:
npm run bench:browser -- maze 6 4
node tools/bench-browser.js maze 6 4 9230 --gpu
node tools/bench-browser.js --preset maze --seconds 8 --speed 4 --seed 0xC0FFEE --gpuThe browser probe launches Chrome/Edge through the DevTools protocol and
reports FPS, sim ticks/sec, GPU availability, WebGPU readback timings, and
adaptive GPU cooldown telemetry. Use --seed for CPU/GPU comparisons that
start from the same preset state.
The Presets panel includes an initial-population slider. Presets scale their starting population to that value, including zero-particle starts for terrain inspection or manual seeding.
js/sim.js— particle pair-force, bond network, energy economy, wall typesjs/brain.js— variable-size CTRNN controller, mutation, crossoverjs/genome.js— gene encoding, mutation distributions, crossoverjs/render.js— Canvas2D field + particle pass, wall rendering, camerajs/audio.js— vocalisation-driven synth voices + wall-action one-shotsjs/lineage.js— clade tracker, complexity metricsjs/gpu_pairforce.js— WebGPU compute shader for pair-force + brain forwardtests/— Node-runnable regression suite (deterministic seeded RNG)