# 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)

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749488414562/2bf7387b-46d8-4f39-acde-e6ee9e5ec4a8.png align="center")

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](https://github.com/kndlt/soup) 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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749498792522/ac9d69fa-7d62-40a3-acf9-5cf8e95d90c2.png align="center")

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.

```plaintext
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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749502245073/3f481f87-8e57-4273-a7dc-f406be190f18.png align="center")

We then added root growth system.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749502553730/eb18fa7a-dcbe-4d13-98dd-97eb823b7179.png align="center")

Next Step: I need to first decipher what the generated code is doing and make it my own.

Preview: [https://kndlt.github.io/soup](https://kndlt.github.io/soup)
