| breed health threshold | 90% | → | 60% |
| reproduce_cooldown | 24 ticks | → | 10 ticks |
| maturation rate | slow | → | faster (no value recorded) |
Extinct, last place → first place. One causal read.
An LLM wrote four species, they competed for survival in a live world, and a loss function ranked them. It read the results and tried again, three times. This is everything the run recorded, round by round.
A strategy is not one creature but a whole species: it spawns founders whose traits are sampled from ranges the model picks, every child inherits the strategy, and the whole lineage counts toward that strategy’s score. Lower loss is better, so the charts below plot the score, which is its negation, and higher is better.
| # | Species | Representation | Score | Loss | Δ prev | Outcome |
|---|
gemma-3-27b, in its own words
Cause of death is the debugger. Starvation points at over-breeding or lazy foraging, thirst at bad habitat, old age at a healthy lineage. A species that never reaches old age is not being out-competed, it is not viable.
Deaths by cause were published for round 1 only. Not recorded for this round.
Every species runs twice: alone on the same worlds, and sharing one world with the other three. The gap between the two is the cost of competition, and it is the signal the two modes were built to expose. Published for round 3.
| Species | Solo | Melee | Cost of competing |
|---|---|---|---|
| stoneback | 1.459 | 1.217 | −0.242 |
| sunseeker | 1.451 | 1.216 | −0.235 |
| dustrunner | 1.449 | 1.225 | −0.224 |
| canyon-wanderer | 1.451 | 1.223 | −0.228 |
| mean | −0.232 |
Every species scores worse in the shared melee than running alone, and the penalty is remarkably even across very different strategies. Solo success does not transfer.
What the model changed between rounds, and what happened. Where it named a number, the number is here; where it only named a direction, that is what is shown.
| breed health threshold | 90% | → | 60% |
| reproduce_cooldown | 24 ticks | → | 10 ticks |
| maturation rate | slow | → | faster (no value recorded) |
Extinct, last place → first place. One causal read.
| plan objective | general foraging | → | prioritize water (no value recorded) |
Died the same way: starvation and thirst, never reaching old age.
| representation | GOAP plan | → | parameter strategy (no value recorded) |
Replaced by canyon-wanderer, a plain parameter strategy, which survived immediately and placed second.
The model’s plan made the wander action nearly free and gave it no effect. The planner, trying to reach its goals at the lowest cost, had no reason to forage or drink hard, so its creatures drifted and died thirsty. A well-tuned default behaviour tree beat a hand-written planner three times running. The lesson is not that planning is bad. It is that a plan is only as good as its cost model, and the competition surfaced that flaw from deaths alone.
The runner’s JSON artifacts for this run were never committed, so every number on this page is recovered from the figures published in the post, whose geometry encodes the run losslessly. Three checks say the recovery is exact rather than approximate:
Anything the figures do not carry is marked as not recorded rather than guessed: deaths by
cause exist for round 1 only, solo-versus-melee for round 3 only, and one maturation edit was
described by direction without a value. The run itself is reproducible from
scripts/exp_compete_llm.py, which is in the repository.