Very interesting to watch, though I don't really have a great idea of what's going on most of the time. Performance seems to be fairly poor despite my system being pretty beefy (Ryzen 9 7950x3d). I see the performance monitor and notice that the render loop seems to fairly regularly exceed the latency for 60fps, despite this being a 'simple' task by modern standards. I'd give more helpful feedback as to why, but the minified code makes it hard to say.
Do you plan on monetizing this somehow? If not, open sourcing some, if not all, would be pretty cool, even if it weren't necessarily licensed in a way that others could 'take' it, if that's your concern. Nonetheless, a very cool project.
I'd like more hover help to explain features, so i can read them while it runs. Next to 'Cognition' there is some help. I'd like that on all parameters.
And, would like to see results from multiple long term runs. Does it settle out in particular configurations over time?
And, need little more short description of what is going on, since it seems to cycle around different stability points and not really one life form take off.
Totally agree on hover help. Only a few parameters have it now, but adding tooltips across the board is on my list so it’s easier to explore while it runs.
You can also use the narrate function to make a bit more sense of it.
On long-term behavior: I’ve run hundreds of long sims, many over a million ticks, and there isn’t one stable end state, sometimes I end up with one lineage of giants but even they got taken over or go extinct. I usually see eras in size, traits, and cognition, with different dominant lineages over time. Sometimes big organisms appear quickly, sometimes it takes hours, and some worlds crash early.
I also agree a short narrative layer would help explain what’s going on. Some of the underlying assumptions are described here if you’re curious: https://soupof.life/concepts
I actually got a lot of thoughtful feedback from Reddit after sharing this last week, and I’ve been iterating on it since. Figured it was worth sharing the updated version again.
It’s still very much an experiment. Best way to experience it is just to open it and watch a world unfold for a while.
Neat simulation, but something seems up with the traits. I have ended up with two lineages with ridiculously high "Predate" scores - one with over 10^22 "percent".
Also, it's currently running at 1 tick per second...
Good catch, you actually found a bug. The predation (and dormancy) weights were being multiplied by scarcity/emotion modifiers, but in some early-return paths the original values were never restored. That meant the weights compounded every tick and could blow up exponentially into these absurd numbers.
That also explains the slowdown: once those values get extreme, a lot of the probability and normalization math gets very expensive.
It’s fixed now by restoring the original weights before every early return. Thanks for flagging it. That was a legit bug.
click the maze and you can watch flies genetically evolve brains to beat the level. Genetic algorithms beat every version of backprop and transformer architecture that I tried. Pause it and click one of the flies for a stunning visualization of its whole brain.
This is awesome. How do you integrate morphology into the simulation? Does morphology effect movement (via area friction or mass impact on momentum) or metabolism (via area/volume ratio)?
Thanks! Morphology does affect both movement and metabolism, but by design it’s modeled as biological abstraction rather than full physics.
Traits like spikes, tentacles, lobes, adhesion, and size add drag/weight, so complex or armored bodies are slower and less agile. Bigger bodies and complex structures also have higher metabolic upkeep. It’s not true fluid dynamics or area/volume math, but it’s tuned to produce the same evolutionary tradeoffs.
So you get: big and complex = strong but slow and hungry. Small and simple = fast and cheap but fragile.
Fair question. By real time I mean the simulation is continuously running and evolving while you’re watching it, not that it’s synced to real-world biological or physical time.
I'm not sure if it's a local issue or intended, but the dots change color when crossing different niches(?), like their color is filtered through the background pane. I would imagine the color of the dots represent specific species and shouldn't change color across environments.
Lineage colors themselves should be stable. What you’re probably seeing is the transparent colored zone backgrounds, which visually tint organisms as they move through different niches. That’s intentional, to give quick visual feedback about which environment they’re in.
Lineages can change color if they diverge enough to be treated as a new distinct lineage, but that’s a separate case.
Spent a few minutes just watching worlds unfold. There's something meditative about it.
Curious about the performance issues Meegul mentioned. These simulations can be surprisingly compute-intensive once you add physics interactions between many entities. Would love to see the code if you ever open-source it.
Thanks, glad you enjoyed it. Performance-wise, big blooms and ecological events can be surprisingly expensive even with optimizations, so you’ll see occasional spikes that usually settle again.
Not sure yet on open-sourcing. Appreciate the interest!
awesome work :)
some open questions i have:
- what are titans and giants?
- "micro-brains" and "learning" is always showing 0 for me..but on the "neural" section it shows some tiny ups on the brain graph, ...saying at the same time in the bigger box under the graph that 22% have micro-brains, while showing 0 in all other places for that number
- "Timeline" seems not to work, always showing "Timeline data will appear as the simulation progresses." also after 150k ticks
- regarding seasons: whats the meaning of "(2s)" for the conditions? Im assuming its a kind of countdown?
Micro-brains / learning showing 0: that was a real bug in the UI. Different panels were using different thresholds to decide what counts as a brain. I’ve aligned everything so micro-brains now consistently mean organisms that can actually form memories and learn. The stats and graphs should now match.
Timeline not showing: timeline only records data if logging is enabled. I’ve updated the panel to make that explicit and added a button to enable recording directly.
Seasons and (2s): that was unclear. It now shows how many seasons are left for extreme conditions, for instance 2 seasons left, with tooltips explaining what each season does.
Food always at 100%: that was also wrong. It was showing a refill rate, not real scarcity. It now reflects actual global food availability and will drop when the world is under pressure.
Really appreciate you flagging this, it helped clean up a bunch of confusing edges.
@maybe-tomorrow out of curiosity, is my guess that this is made with help from codex correct? (I'm trying to keep up my sense for the different default aesthetics of the different models, but this one I'm not sure about)
Maybe off topic but this site feels very vibe coded to me. Doesn't mean it's necessarily slop, it seems interesting. But I guess it's just too much effort on the UI and other things like that which someone with a limited budget wouldn't spend time on (but an AI can) vs the core thing. Just an observation (and apologies if I'm wrong).
Yeah, I definitely vibe coded parts of it, especially some of the graphs, but a lot of time went into the actual mechanics and how the systems interact. I also got a lot of pushback from my girlfriend (PhD in virology, teaches evolution), so she kept asking hard questions and forcing me to rethink things. And my kids do a check their worlds every morning, collect organisms and use the narrate feature to see what happened overnight, and their honest feedback helped a lot :D
Mostly pretty standard React stuff: React + Vite + TypeScript, Tailwind for styling, and shadcn/ui (on top of Radix) for most UI components. Charts are done with Recharts.
The actual simulation and arena rendering is all custom using the Canvas 2D API, no rendering libraries there.
Yeah, that’s probably because the panel with organisms didn’t load. A refresh usually fixes it. If you’re still not seeing it, let me know which device/browser you’re on, that helps a lot for debugging.
Thanks! I get that and short version: it’s not a realistic genetic model, it’s a trait-inheritance system with evolutionary flavor.
Each organism just has a set of numeric traits (size, armor, spikes, tentacles, aggression, reproduction rate, etc). There are no genes, codons, chromosomes, or genetic sequences. When organisms reproduce, offspring traits are basically noisy, heritable copies of the parents, with per-trait heritability and mutation.
Structural traits (like size) are strongly inherited, behavioral traits are more plastic. Big size, armor, high reproduction, etc all come with metabolic and mobility tradeoffs and mutation rates can go up under stress.
So it’s a phenotype-level evolutionary model, not a molecular genetics simulator. The goal is to get interesting evolutionary dynamics and tradeoffs, not to simulate real DNA or genetic architectures.
You can zoom into (and capture a snapshot of) each organism by clicking it and see a lot of details on traits.
Soup of Life is an artificial life simulation with moving agents that have genomes, energy, and heritable traits like size, morphology, and behavior. Organisms are born, feed, reproduce with mutation, and die in a continuous 2D world with different ecological zones that bias evolution in different directions.
Unlike Conway’s Game of Life, which is a deterministic cellular automaton on a fixed grid, this is an evolving ecosystem. You see predator–prey dynamics, trait trade-offs, niche specialization, boom–bust cycles, and extinction events. There is no explicit notion of species. Lineages and niches emerge naturally from reproduction and environmental pressure.
For most people it works best if you go in unprepared and just watch what happens.
Thanks for flagging. That error usually isn’t caused by the site itself, but by something intercepting HTTPS on the network side I think. Maybe something with VPN, netork or antivirus?
geminigemino|1 month ago
https://soupof.life/concepts
It’s a living doc, but should answer quite some questions.
DonaldPShimoda|1 month ago
Meegul|1 month ago
Do you plan on monetizing this somehow? If not, open sourcing some, if not all, would be pretty cool, even if it weren't necessarily licensed in a way that others could 'take' it, if that's your concern. Nonetheless, a very cool project.
PunchyHamster|1 month ago
FrustratedMonky|1 month ago
I'd like more hover help to explain features, so i can read them while it runs. Next to 'Cognition' there is some help. I'd like that on all parameters.
And, would like to see results from multiple long term runs. Does it settle out in particular configurations over time?
And, need little more short description of what is going on, since it seems to cycle around different stability points and not really one life form take off.
geminigemino|1 month ago
Totally agree on hover help. Only a few parameters have it now, but adding tooltips across the board is on my list so it’s easier to explore while it runs.
You can also use the narrate function to make a bit more sense of it.
On long-term behavior: I’ve run hundreds of long sims, many over a million ticks, and there isn’t one stable end state, sometimes I end up with one lineage of giants but even they got taken over or go extinct. I usually see eras in size, traits, and cognition, with different dominant lineages over time. Sometimes big organisms appear quickly, sometimes it takes hours, and some worlds crash early.
I also agree a short narrative layer would help explain what’s going on. Some of the underlying assumptions are described here if you’re curious: https://soupof.life/concepts
brudgers|1 month ago
maybe-tomorrow|1 month ago
It’s still very much an experiment. Best way to experience it is just to open it and watch a world unfold for a while.
Liftyee|1 month ago
Also, it's currently running at 1 tick per second...
geminigemino|1 month ago
That also explains the slowdown: once those values get extreme, a lot of the probability and normalization math gets very expensive.
It’s fixed now by restoring the original weights before every early return. Thanks for flagging it. That was a legit bug.
logicallee|1 month ago
https://claude.ai/public/artifacts/8f39482c-b2c7-4bd6-8d47-4...
click the maze and you can watch flies genetically evolve brains to beat the level. Genetic algorithms beat every version of backprop and transformer architecture that I tried. Pause it and click one of the flies for a stunning visualization of its whole brain.
geminigemino|1 month ago
If you are interested you can read more on how I implemented brains here: https://soupof.life/concepts/life-organisms/cognition
saeranv|1 month ago
geminigemino|1 month ago
Traits like spikes, tentacles, lobes, adhesion, and size add drag/weight, so complex or armored bodies are slower and less agile. Bigger bodies and complex structures also have higher metabolic upkeep. It’s not true fluid dynamics or area/volume math, but it’s tuned to produce the same evolutionary tradeoffs.
So you get: big and complex = strong but slow and hungry. Small and simple = fast and cheap but fragile.
zkmon|1 month ago
geminigemino|1 month ago
fladrif|1 month ago
geminigemino|1 month ago
Lineages can change color if they diverge enough to be treated as a new distinct lineage, but that’s a separate case.
augusteo|1 month ago
Curious about the performance issues Meegul mentioned. These simulations can be surprisingly compute-intensive once you add physics interactions between many entities. Would love to see the code if you ever open-source it.
Nice work.
geminigemino|1 month ago
Not sure yet on open-sourcing. Appreciate the interest!
leber|1 month ago
- "micro-brains" and "learning" is always showing 0 for me..but on the "neural" section it shows some tiny ups on the brain graph, ...saying at the same time in the bigger box under the graph that 22% have micro-brains, while showing 0 in all other places for that number
- "Timeline" seems not to work, always showing "Timeline data will appear as the simulation progresses." also after 150k ticks
- regarding seasons: whats the meaning of "(2s)" for the conditions? Im assuming its a kind of countdown?
- indicator "Food" always seems to show 100%
maybe-tomorrow|1 month ago
Great questions, and you actually caught a few UI inconsistencies that I’ve now fixed.
Titans / Giants: these are just very large organisms. Titans are size 20 and up, and I log those in the size panel. I also updated the field guide with sizes: https://soupof.life/concepts/life-organisms/size-classes
Micro-brains / learning showing 0: that was a real bug in the UI. Different panels were using different thresholds to decide what counts as a brain. I’ve aligned everything so micro-brains now consistently mean organisms that can actually form memories and learn. The stats and graphs should now match.
Timeline not showing: timeline only records data if logging is enabled. I’ve updated the panel to make that explicit and added a button to enable recording directly.
Seasons and (2s): that was unclear. It now shows how many seasons are left for extreme conditions, for instance 2 seasons left, with tooltips explaining what each season does.
Food always at 100%: that was also wrong. It was showing a refill rate, not real scarcity. It now reflects actual global food availability and will drop when the world is under pressure.
Really appreciate you flagging this, it helped clean up a bunch of confusing edges.
maybe-tomorrow|1 month ago
You can click any organism to zoom in and see size, traits, and morphology details.
Yenrabbit|1 month ago
snorbleck|1 month ago
geminigemino|1 month ago
qoez|1 month ago
geminigemino|1 month ago
unknown|1 month ago
[deleted]
martinflack|1 month ago
geminigemino|1 month ago
The actual simulation and arena rendering is all custom using the Canvas 2D API, no rendering libraries there.
deadbabe|1 month ago
geminigemino|1 month ago
chrisbrandow|1 month ago
geminigemino|1 month ago
Each organism just has a set of numeric traits (size, armor, spikes, tentacles, aggression, reproduction rate, etc). There are no genes, codons, chromosomes, or genetic sequences. When organisms reproduce, offspring traits are basically noisy, heritable copies of the parents, with per-trait heritability and mutation.
Structural traits (like size) are strongly inherited, behavioral traits are more plastic. Big size, armor, high reproduction, etc all come with metabolic and mobility tradeoffs and mutation rates can go up under stress.
So it’s a phenotype-level evolutionary model, not a molecular genetics simulator. The goal is to get interesting evolutionary dynamics and tradeoffs, not to simulate real DNA or genetic architectures.
You can zoom into (and capture a snapshot of) each organism by clicking it and see a lot of details on traits.
junovicz|1 month ago
maybe-tomorrow|1 month ago
Soup of Life is an artificial life simulation with moving agents that have genomes, energy, and heritable traits like size, morphology, and behavior. Organisms are born, feed, reproduce with mutation, and die in a continuous 2D world with different ecological zones that bias evolution in different directions.
Unlike Conway’s Game of Life, which is a deterministic cellular automaton on a fixed grid, this is an evolving ecosystem. You see predator–prey dynamics, trait trade-offs, niche specialization, boom–bust cycles, and extinction events. There is no explicit notion of species. Lineages and niches emerge naturally from reproduction and environmental pressure.
For most people it works best if you go in unprepared and just watch what happens.
abtinf|1 month ago
londont|1 month ago
byearthithatius|1 month ago
geminigemino|1 month ago
wild_pointer|1 month ago
geminigemino|1 month ago
GMoromisato|1 month ago
geminigemino|1 month ago