Tiny neural networks evolve inside increasingly questionable environments.
I made stupid dots evolve brains. Then I gave them increasingly stupid problems and watched natural selection commit crimes.
Every dot gets eight sensors, six actions, a fixed hidden layer, energy, mutable traits, and no backprop. They are born stupid. The only optimizer is survive, reproduce, mutate, repeat.
| Measured result | Observation |
|---|---|
| Food world | Fitness climbs and speed, vision, and metabolism move under selection |
| Death | Mean longevity rises from 1.0 toward roughly 1.7 |
| Cannibalism | Aggression saturates near 3.0 and corpses eaten tracks kills nearly one for one |
| Language | Stranger decode accuracy reaches about 66% against a 50% coin flip, with roughly 0.08 bits of mutual information |
![]() |
![]() |
![]() |
![]() |
Nothing cheated. No gradients, no supervisor, just a floor of food, a death sentence for standing still, and a mutation operator with commitment issues.
![]() |
![]() |
![]() |
![]() |
Predation produces a permanent war instead of the neat herbivore-versus-carnivore split I expected. Cooperation survives because dots remember cheating bloodlines, and the liars keep coming back anyway. Evolution does not abolish death. It rations it.
The language experiment is the honest disappointment. The dots develop a detectable shared signal, but the code stays fragile because speakers will not differentiate until listeners decode, and listeners will not decode until speakers differentiate. They invented the beginning of a language, which is still more than I expected from an 8 by 8 by 6 brain.
Julia owns simulation and experiment semantics. Python owns the narrow representation-learning backend. Seeds, protocol IDs, hashes, replay digests, and recorded evidence keep the experiments inspectable.









