From Genetics to Tactics: How a Breeding System Became a Squad Game

#Rust #Android #GameDev #ECS

The Android evolution of SlimeGarden. An idea that’s been following and evolving for close to 2 years.

It started as a breeding simulation. You’d hatch slimes, they’d have genetic traits, and you’d breed them to optimize for different characteristics. That was the core loop.

Then it evolved into a dispatch simulator. Assemble squads of genetically unique “operators,” deploy them to a resonant planetary surface, and manage the survival of your crew through spec-driven development and cymatic harmony.

The honest part: The transition wasn’t smooth. I had all this genetics code that worked great for breeding, but when I tried to add squad tactics and planetary resonance, the systems fought each other. The genetics wanted to optimize for survival, the tactics wanted to optimize for mission success, and neither knew how to balance against the other.

The breakthrough was the ADR discipline again. I locked down the genetic engine first, then built the dispatch simulation as a separate layer that consumed genetic traits as inputs. The 52+ Architectural Decision Records kept me from coupling things that shouldn’t be coupled.

What didn’t work: Trying to make the wall-clock async timers work perfectly across all platforms. Android background processes, desktop sleep states, WASM browser contexts — they all handle time differently. I had to accept that some edge cases would just be imperfect rather than blocking the whole project.

It’s in internal testing on Google Play now. 145+ unit tests passing. The Android cdylib targeting is optimized for Moto G 2025.

The lesson: Sometimes you have to let an idea evolve into what it actually wants to be, not what you originally planned.