Updating Storm the Train
Bringing a 2012 C++ game to current iOS and Android - a new build process, updated APIs, dead code removed - as a test of how coding agents handle old code.
Storm the Train is a 2012 shooter on our own C++ and Lua engine, still live on the App Store. I'm updating it for current iOS and Android, and using the work as a test of coding agents.
The update
The game hasn't changed in years, and nothing current could build it. The update leaves the game alone and changes what's around it:
- A new build process: everything from one repo on Linux, with iOS built on a Mac over SSH
- Updated APIs: the current iOS SDK, ads with privacy prompts, and Play Billing on Android, which hasn't been updated since 2016
- Dead code removed rather than ported: the backend client and server, old ad networks, and promotions for accounts that no longer exist
The Linux build should play exactly like the live iOS game.
The backend went first. The game's client had already been switched off in code, and the server is long gone, so the live game runs on its built-in defaults; those are now written in where it used to ask.
It now builds and plays on Linux, through SDL3 and OpenGL ES on Mesa with miniaudio for sound, and builds for iOS and macOS from a generated Xcode project. The old asset builder is replaced by the asset pipeline from Cinder, my Vulkan renderer, with converters for texture atlases and for FBX models into cabal's own format.

A test for agents
The code is over a decade old, private, and built on an engine and tools no model has seen, so an agent has to read it rather than recognise it. Agents do the work, and I review it the way I describe in Archr.
Where it is
Linux plays through to gameplay, and iOS runs in the simulator to the title screen. Next is signing and TestFlight, then updated ads and consent, then Android.