From Pong AI to Play Store: How a Childhood Hobby Became a Rust Game Engine

#Trading #Rust #GameDev #Lessons Learned

There is a specific kind of magic that occurs exactly once in a coder’s life. For me, it was the moment I realized my “Pong” paddle wasn’t moving because I told it to—it was moving because it knew where the ball was going. That first taste of artificial agency is the high we’ve been chasing ever since.

Fast forward through years of professional IT consulting and architectural deep-dives, and that childhood impulse finally found its form in what eventually became OperatorGame. But the path wasn’t a straight line; it was a series of transmutations.

The rpgCore Era: The Python Foundation

Before the first line of Rust was ever committed, there was rpgCore. Built in Python 3.12 with Pygame and a heavy dose of Pydantic validation, rpgCore was my laboratory. It was an over-engineered marvel: 1,122 passing tests, a custom ECS (Entity-Component-System) architecture, and a procedural generation engine that could churn out dungeons for days.

Technically, it was solid engineering. But as a game, it had a ceiling. Moving a simulation of that complexity to mobile devices with a custom physics-integrated genetic engine meant hitting the limits of the Python runtime. I had created a perfect brain, but I needed a body that could run at the speed of logic.

The Great Transmutation: Rebuilding in Rust

I didn’t “port” the game to Rust. You don’t port a soul; you transmute it.

The decision to move to Rust 2021 was driven by three non-negotiables:

  1. Performance Multiplier: I wanted slimes to steer using real-time physics behavioral maps without the fan on my Moto G turning into a jet engine.
  2. Type Safety as a Design Tool: In a game about genetics and cymatic resonance, a “type mismatch” isn’t a bug—it’s a violation of the laws of the universe.
  3. WASM as an Anchor: The goal was for the same code to boot in the browser, on Android, and on the desktop.

This transition was managed through what I call Spec-First Sovereignty. We used SDDs (Specification-Driven Development) as the portability layer. The CONSTITUTION.md and SPEC.md were locked first, ensuring the design DNA survived the runtime swap.

Where We Stand: Sprint 9 and Beyond

Right now, OperatorGame has crossed its most significant threshold. We have completed Sprint 9 (The Bio-Manifest), locking in 145 core unit tests. The game is live in Internal Testing on the Google Play Store, running native cdylib with a high-fidelity egui dashboard.

The “secret sauce”? Wall-clock async timers. Missions resolve based on absolute time, meaning the simulation continues even when your phone is in your pocket. It’s not just a game; it’s a persistent, resonant world.

The Roadmap: Stage Ladder & Elder Passives

The completion of the technical floor is just the beginning.

On the immediate horizon:

  • Stage Ladder: Implementing the vertical progression for competitive resonance.
  • Elder Passives: Deepening the genetic advantage system for long-term survival.
  • Public Release: Moving beyond internal testing into the wild.

This project is personal, honest, and built under the weight of 52 ADRs (Architectural Decision Records). It is a testament to the belief that high-quality engineering belongs in games just as much as it does in finance or automation.

View the Code on GitHub


PyPro Senior Lead Architect, RFD IT Services

📌 Related Projects