I’m a big fan of 4X (eXplore, eXpand, eXploit, and eXterminate: 4 eX*) and RTS strategy games, my experience starting with Empire on the Atari ST1.
I played every Civilization (4X) game, every Command & Conquer (RTS) and Warcraft (before it became an RPG it was an RTS). Every Age of Empires (RTS).
A 4X game, as background, is usually turn based and slow-paced, where an RTS is generally more fast-paced. Some RTS games have a significant overlap in philosophy with 4X games — the goal is still the same 4Xs — just at an accelerated pace.
But I always wanted more. There were always features that I wished these games supported. A sphere-based map, for instance, is missing in most of these games. A basic, customizable logic system (“AI”) for units so the game doesn’t end up being mired in bureaucratic hand-holding and micromanagement in the later stages, as it does in most Civ games for instance.
I’ve had various abandoned mini-projects to scratch my own itch and create a multiplayer 4X RTS game that would satisfy all of my wants and learnings from years of playing these games, but it was always a side project that I didn’t want to spend too much time on. It couldn’t interfere with normal professional pursuits, and it required that I stay motivated enough for the side-project to proceed. If the meat of the project — the rewarding part — was behind a lot of preparation work, it was easy to get waylaid. And the moment you’re talking about a multiplayer game on the internet, there is a lot of preparation work.
So it ends up being a chicken/egg thing where there are a lot of things I know that are necessary for a v1 end up being things I just don’t want to work on, so I just put it off.
I recently restarted this initiative, starting with Claude Code/Opus 4.6 as my assistant.
What a revolution in side projects!
Suddenly I’m blazing through the unpleasant-but-necessary structural work that makes the meat of the project possible. In three days I’ve accomplished more than I have in years of starts-and-stops on this venture. I’m still overseeing every line of code, the entire design and every interaction between services, but the structure that builds out around these is close to effortless, comparatively.
Magical. My motivation has stayed sky-high.
At every stage I’ve had to leverage decades of knowledge and experience in guiding the LLM — this isn’t anywhere near the state where a layman can “vibe code” something like this, and I’ve had to pull it back from making a few terrible choices along the way that would have utterly doomed the project — but it’s like having a team of very competent senior devs doing the most time-consuming parts with oversight.
Fascinating stuff.
Rust
I’ve never developed a real project in Rust in my professional career2. I’ve done some brief tutorials, know the philosophy and trade-offs of the language and tooling, and respect what they’ve accomplished, but it never came into my sphere on the projects I’ve worked on.
Nonetheless, for the gateway, api and game server, Rust3 is being used4. It is the proper choice for a variety of reasons.
Security. Efficiency and performance. The ecosystem of tooling. Rust is perfect for this use.
It turns out that Claude is actually a pretty great Rust developer, so it enabled me to use the right choice despite some temporary discomfort. And while of course most modern languages are largely fungible in a way, auditing the code has given me an insanely rapid deep dive into Rust. It was a very rapid acclimation, and I’ve rapidly achieved a pretty high degree of Rust competency.
Footnotes
-
Friends would stay over during summer break and we’d spend sweltering summer nights taking turns at the keyboard completing our Empire rounds. Eventually the sun would come up, and then we’d bike ride to a beach 16km away. Great times. ↩
-
My professional life has been filled with Python, Go, C(++), Java, Swift, (Object) Pascal, C# / .NET, JavaScript, TypeScript, among others. To some degree all modern languages are variations on a theme, and it is usually fairly easy for an expert in one to become competent at another. Rust is, I think, the least like the others and the one with the highest learning curve to transition to. ↩
-
Rust has every indication of being the future of compiled code, for a wide variety of reasons. ↩
-
The game runs via a web client, using WebGPU or WebGL as available on the client, so that side is being developed using Typescript, Three.js, Vite and node. ↩