SOUP/Machi Dev Log: Phase 4.4 — Dirt, Water, Light, and a Whole Lot of Layers


Welcome to Phase 4.4 of SOUP: the Super Organism Upbringing Project. At this point, we’ve stacked up quite a few layers (literally), written enough pseudocode to make a computer cry, and simulated gravity so many times we might as well be terraforming Mars.
This update is all about test cases, early physics, and beginning to lay the groundwork for the true stars of the show: the seeds, the trees, and their complicated inner lives.
🧪 Test Cases and Simulation Rules
We started with a set of minimal, focused test cases to validate core material behavior.
Case 1: Isolated Tile
Simple rule: If a tile is floating in empty space with no support, it stays put... for now. No surprise gravity shenanigans.
Case 2: Soil Gravity
Soil tiles fall unless they're supported on both sides or directly below.
| |So| | <-- stable since supported by at least 2.
|So| |So|
But once support vanishes? Gravity kicks in.
We’ve implemented several fall patterns (some symmetric, some checkerboarded) and are trying to simulate this at a sub-tile level (4x4 grids) for future flexibility.
Case 3: Water Gravity
Water’s a whole different beast. It doesn’t compact, it seeps. It falls when unsupported, splits when blocked, and loves lateral motion.
We’re using alternating checkerboard updates here to reduce chaotic simulation artifacts — and it’s starting to feel alive.
💨 Air? Ignored.
Air physics? Out. There’s air everywhere. That’s the assumption. We only model things that matter.
☀️ Light, Heat, and Thermal Death
Light comes straight down like divine judgment. If it hits something, it turns into heat, which gets tracked in a separate layer. This is foundational for plant behavior later — especially seed hatching.
🌱 Seed Physics (This is the Good Stuff)
Seeds fall like grains:
| |Se| | -> | | | |
|So| |So| |So|Se|So|
They can embed into soil, and water can seep around them. It's already looking surprisingly realistic.
But here’s the twist: seeds hatch based on heat and water levels. Too hot? They wiggle deeper into soil. Too dry? They stay dormant.
When conditions are favorable, they become a mini tree nucleus:
|Wa|So|Wa| |Wa|Sh|Wa|
|So|Se|So| -> |Ba|Hw|Ba|
|Wa|So|Wa| |Wa|Ro|Wa|
Sh
: ShootHw
: HeartwoodBa
: BarkRo
: Root
Each part of the plant shares an id
, linking them as one organism.
🌿 Shoot, Root, and Leaf Logic
Shoots grow upward, carrying the tree’s ambition with them.
Leaves sprout when shoots meet light. They spread laterally, but not infinitely — they consume water to grow. It’s a greedy balancing act.
Roots grow downward, laying down a network of Heart Root, Outer Root, and Branching Points.
But roots aren’t stupid. They suppress their own branches until conditions (like low suppressor values) allow for safe sprouting.
🍬 Sugar, Pull Maps, and Nutrient Politics
We’ve added more layers than a bureaucratic org chart:
Sugar is produced by leaves.
Sugar travels toward roots and shoots, guided by “pull maps.”
These pull gradients signal need — like roots yelling “feed me!” into the void.
Eventually, we'll also need:
Mineral layers
Mineral pull
Water pull
It’s not just simulation anymore. It’s resource politics.
🏗️ Support Layers — So Branches Don’t Fall Off
We simulate support propagation through a “support mask.” As trees grow, they reinforce nearby structures. If support gets cut off, branches or leaves will fall. It’s elegant. Brutal. Realistic.
🌳 Long-Term Visual Goal
Here’s what we’re aiming for:
@ @
^
|x|
|x|--@
|xxxx>
|x|--
--------|X|----------
|X|
*
It might be a 2D world, but it’s going to feel lush, organic, and alive.
🎨 Layer Summary
Here’s the current stack:
Water
Soil
Light
Heat
Tree (Heartwood, Root, etc.)
Leaf
Support
Mineral
Sugar
Sugar Pull
Water Pull
Mineral Pull
We're approaching SimCity levels of complexity. And we're still in pre-alpha.
🤖 Why We’re Not Using AI Coders
AI coding agents are great interpolators. But this simulation? It's weird. It's edge-case heavy. It defies pattern-matching.
So we’re going manual.
No Copilot.
No reference code.
No distractions.
We’ll write tests. We’ll build from scratch. We’ll fail and patch. And we’ll know every line of this system inside-out.
🧪 Next Steps
Honestly, we’re stuck again.
We might need to go back to the original Machi prototype — no tensors, just dumb loops and gritty manual updates. But the goal remains: simulate a growing tree in a messy, evolving world.
Time to get those seeds growing.
Subscribe to my newsletter
Read articles from Sprited Dev directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
