Thumbnail for Developing a Game About Soil

Developing a Game About Soil

Carter Schmidt ♦ 2025-11-15

My Google Photos is chock-full of footage of moss, mushrooms, flowers, and bugs. Small organisms with unbelievable complexity and diversity. Just look at the way the moss on this log in the rainforest of Vancouver Island creates a mosaic of organisms competing for space.

moss, lichen, and shrubs growing on a log suspended over water

Or the fractal complexity of these balls of lichen blanketing this San Juan island shore.

And what the hell are these?

And these!?

I want to make it! I want to make moss and bugs and mushrooms! I can't walk through a forest without admiring all the ways that nature creates and exploits niches in an endless cycle.

Attempt #1 - A game about Witches

In an effort to remain practical about this pursuit of starting a career in indie game development, I figured I needed to work on an idea that had gameplay, action, and plot. Something that would appeal to a wider audience than just staring at ants.

Paying homage to my enrapturement with growing things, I envisioned a game about a procedurally generated subterranean mushroom forest. Listening to a synthy song a friend of mine made gave me the idea that I wanted a game about soaring through a glowing mushroom lined cavern backed by music like that. So with that idea in the back pocket, I decided to learn the ropes of Godot and start prototyping. I really want to program a world that feels alive.

I started by seeing what kind of procedural mesh generation and shader techniques I could use in Godot. I made a youtube short out of my first experiment: procedural rocks. Then, moving on to bigger things I came up with this environment concept complete with procedurally generated basalt columns, lava, and mushrooms to test how it might go at scale. At this point I was doubting whether this idea was feasible.

procedurally generated mushrooms, basalt, and lava in Godot engine

Next, I wanted to be able to navigate the world. Drawing from my favorite feature of Warframe, the space ninja parkour movement system, I wanted fluid movement. The player should be bouncing off mushrooms growing in the walls of caverns, flying through 3 dimensional, complex, procedurally generated tunnels.

As a first step, I tried using Godot's character controller with walking and running animations using methods described by David Rosen in his GDC talk Animation Bootcamp: An Indie Approach to Procedural Animation. I had middling success, I never quite got the tilt into acceleration to feel natural.

Undeterred, I further fleshed out the concept of why you were navigating these tunnels, and came up with a story about a young witch gathering subterranean toadstools to brew potion with. I imagined a reward system to incentivize parkouring quickly to make more money as an apothecary. But I soon started to acknowledge the scope of this game was too much.

Developing a fluid character controller that can navigate arbitrarily complex procedurally generated environments is a big undertaking as a first introduction to writing physics or player controlling code. Godot's built-in move_and_slide() based character controller function wasn't going to cut it.

Plus, developing a 3D game where the goal is to feel immersed in the environment was going to be very heavy in the art department. 3D modelling is a time consuming and challenging art, whether done in Blender or by constructing and twiddling vertices with code. So I bid this idea farewell as I decided it was too much to chew for my first project.

Attempt #2 - A Game about Ants

Really, I just want a game where I can stare at ants. Well, ants, moss, mushrooms, and bugs. A 2D terrarium style gardening game, composed of many moving parts so that I can watch as emergent properties arise. I can take or leave the high-speed action-packed gameplay.

I had a pheromone based slime mold simulation laying around that I developed over a year ago and described in my last post. So, I added on to it, exploring giving ants a food source, which gave an excuse to make them die of starvation and replicate when full. My initial code based on turning in the direction with the most food in front gave interesting results, but nothing surprising. Next I gave each ant a neural network brain to determine their behavior. You can play with the result of that experiment here, though it only runs in the Chrome for reasons I don't intend to debug.

It was a little disapointing. Gone were the complex twisting paths of the old sim. My hypothesis is that without a much more complex environment to apply selective pressures, there's not a lot of reason to evolve cooperative behaviors more complicated that "spread and out." I was dreaming of a cooperative ecosystem with complex relationships of symbiosis and antagonism. Hacking ontop of this sim was not scratching the itch. Besides, as far as top down ant simulations go, Pezzza's work on Youtube is covering that subject fabulously already.

Attempt #3 - A Game about Soil

So that brings me to my present project. I decided to start from scratch, using Rust and wgpu to make a high performance, cross platform simulation leveraging compute shaders on the GPU. The game is about managing the microflora and fauna of your own little patch of dirt. In it, you will cultivate organisms which evolve minds of their own, populating your garden by means of natural selection. I believe that by starting with an environment that exhibits emergent complexity by itself, the additon of simulated life will be all the more captivating.

The player's goal will be to try to create harmonious interactions between different creatures that complement each other, forming symbiotic relationships. I want to introduce creatures which, through the sum of their behaviors, open new niches for yet more varieties of creatures to occupy. I want the matter of the world to be constantly churning, an ever changing distribution of dirt, water, and minerals as creatures are living, dying, decomposing, and digesting in a closed system. I want to be able to sit back and watch the as my little patch of soil comes alive as an ecosystem.

There was a game I played as a kid, Plant Tycoon, where you managed a greenhouse, growing plants, cross pollinating them, selling them, and trying to breed the "Magic Plants of Isola" for fame and fortune. I want my game to feel a bit like a cross between Plant Tycoon and a fish tank, where you gaze in to see what the plants and creatures are up to, making adjustments as necessary to ensure their thriving. Another inspiration of mine is The Bibites, which I've been following on YouTube for some years now.

So with that, I am throwing my hat into the ring of falling sand and artificial life developers, trying to make a game out of a physics sandbox full of simulated creatures. The first challenge is setting up an environment that's conducive to interesting virtual life. I've started by implementing dirt and water in a falling sand simulation with a very work in progress system of structural integrity so there can be cavities in the soil, allowing the dirt to capture water and to eventually enable creatures to make tunnels.

Playable Demo

Since I'm developing this project in Rust, I can compile to WASM and run my game in the browser. I'm unsure whether I will continue to support Web deployment, as there are challenges: extra code required to handle things like window resizing, being limited to a single thread, and Chrome being the only browser with a complete WebGPU implementation. Though I have had one spec compliant WGSL shader crash in Chrome far, I must compliment the chromium team for being very responsive and fixing it within a week.

But for now, it works! (On desktop in Firefox and Chrome).

Use the brushes with Right click. Left click and scroll are zoom and pan controls. You can change the brush size, shape, and material. Dirt has a green overlay to represent it's structural integrity