Balance Lab

Batch-simulate one specimen on the real game engine — sweep movement/feeding/eyespot tiers, the diet triangle and food richness, and measure intake, survival and travel in isolation.

Balance Lab

Batch-simulate one specimen on the real game engine — sweep movement/feeding/eyespot tiers, the diet triangle and food richness, and measure intake, survival and travel in isolation.

---

.. toc::

Movement × intake, isolated

The arena couples everything — rivals, hunters, the NPC ecosystem, colony economics — which makes it hard to tell whether a build starved because its movement couldn't reach food, its feeding part couldn't take it, its eyes never saw it, or the dish was simply too poor. This lab strips all of that away: one specimen, the exact engine the game runs (EVO.tick — same movement archetypes, feeding cones, diet-class triangle and energy economy), in a dish reshaped to food only at a chosen richness.

.. admonition::How to use it :color: blue

▶ Watch one run renders the dish in slow motion so you can *see* a mechanic work (or not — a pseudopod at poor, say). ⚡ Run batch executes N headless runs fast and reports per-run intake: prey eaten, dna banked, mean/min energy, survival or the starvation tick, distance covered and speed. Every batch's aggregate lands in the session history, so sweep one dial at a time (tier, diet, richness) and compare rows.

.. exec::docs.balance_lab.balance_lab

Reading the numbers

carnivores need kills — exactly as in-game, the feeding part picks the eating lane (a jaw hunts even on a herbivore's body, a filter grazes).

means the build lives tick-to-tick.

the same feed to separate "couldn't reach food" from "couldn't eat it".

Findings tuned here port straight into the game: the engine constants live in lib/evolution/config.py (ENERGY, SPAWN, diet classes in lib/diet.py) and this lab reads them live — change a constant, restart, re-run the same sweep.

---

*Source: /balance-lab*

Note for AI agents: This is the static, prerendered view of an interactive Dash application served because we detected a non-JS user agent. Full prose docs: