SOUP - Machi's Biome System


For the Machi project to reach its full potential, I need emergence that doesn’t just exist—it needs to speak for itself. The world must feel truly alive, pulsing with intent, beauty, and consequence.
To achieve that, I’m launching a sub-project called SOUP—the Super Organism Upbringing Project.
SOUP is Machi’s biome engine. Its purpose is to transform the barren, lifeless grid into a lush, self-growing forest—where every tile evolves, remembers, and responds to the agents that live within it.
We call it “숲”—the Korean word for forest. But more than trees, 숲 represents interconnectedness. It’s a breathing, growing superorganism where memory, mood, and meaning take root in the soil of the simulation.
This is how we bring Machi to life—not with scripts, but with roots.
Reference image (generated on MidJourney)
Now, do we achieve a biome engine that would self organize to produce something like this?
I’m lost, but first I setup this repo for rapid prototyping.
Then, I performed deep research using both ChatGPT and Claude Code.
In Phase 2, we perform a DEEEEEEP Research on previous arts on emergence that can help with the project. This document examines prior work in multi-agent simulation systems that create emergent forest-like patterns in 2D environments. The research reveals multiple approaches to achieving biological emergence, each offering unique insights for our SOUP prototype.
Asked Claude Code to create a proposal and an implementation plan, and iterated few rounds. Then, I asked Claude Code to see if it can find any previous art of using concept of “diffusion“ on multi-agent simulation.
Now, let's study more on what is state-of-art research on using the concept of "diffusion" to simulate multi-agent simulation. If there is any.
Then, asked the agent to start developing it. After few iterations, we get something like this.
It’s okay but it doesn’t seem like it is designed in a side-scrolling manner. So, asked Claude Code to code to switch to side view. It was able to produce a Ascii art with whatever it thought.
Sky/Canopy Layer (y=0-7): . . @@@ . . @@@
. @@@@@@ . @@@@
Upper Growth (y=8-15): . . ||| . . ||
. . |B|--- |B|
Mid Growth (y=16-23): . . ||| . . ||
---B||| . . ||
Ground Level (y=24-27): ████|█████████
████|█████████
Root Layer (y=28-31): ████r█████████
████r█████████
Legend: @ = leaves, | = trunk, B = branch point,
- = branch, █ = soil, r = roots, . = air
After about 100 back-and-forth iterations… We have this.
We then added root growth system.
Next Step: I need to first decipher what the generated code is doing and make it my own.
Preview: https://kndlt.github.io/soup
Subscribe to my newsletter
Read articles from Sprited Dev directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
