This started with a MacBook
I’m Daniel Taylor. I started playing Total Annihilation as a teenager when it came out, then got into making mods and 3D models with other players. Eventually work and kids took up that time.
Coming back to TA years later, I wanted to get it running on my MacBook Pro. That became a side project to recreate the engine. Having the original artwork, animations and interface to work with made it possible to concentrate on how the game runs.
I’m publishing the engine and research so other people can use them too. If you want to make a mod, investigate an old TA behavior or experiment with your own RTS, there should be something useful here.
Matching the original
The first goal is to reproduce retail TA’s behavior as closely as I can. Small rules matter: a game can look right and still behave differently. Having a known baseline also makes it easier to judge what an engine change actually does.
The renderer has more room to depart from the original. Modern GPU rendering adds lighting and other effects; Classic keeps the old CPU-rendered look. You can switch between them in-game. These display choices are separate from the gameplay rules.
The renderer comparisons show the differences. The gameplay reference covers the systems implemented so far.
Working out how TA behaves
I started with video captures, decoded TA Demo Recorder recordings and test data loaded into the original game. When watching it wasn’t enough to explain a behavior, clean-room reverse engineering of the executable helped fill in the gaps.
The shapes below are test geometry running in retail TA. Simple surfaces and controlled colors make it easier to see how orientation changes the shading.


The research documentation records these findings, including what’s established, what’s an inference and what I still don’t know.
AI wrote most of the code
AI tools helped analyze captures, investigate the executable and work out clean-room designs. Coding tools wrote most of the implementation. My part has been deciding what to build, checking correctness, testing performance and working through the failures.
That help made a project this size practical in my spare time. It has taken months of testing against the original game, including failed approaches and abandoned projects along the way.
Why Go?
Go is a good fit for how I work on this project: it compiles quickly, and I can try a change with go run.
Garbage collection does need care in a game. For example, allocating memory during loading and reusing it through pools reduces the amount of work the collector has to do during play. There’s still performance work to do here.
Ebitengine handles the window, graphics and audio. Nanolathe can build without a C or C++ compiler, which also keeps installation simpler. The setup guide lists the platform requirements.
What works so far
The browser demo plays three original campaign missions without installation. The native beta runs on Windows, Mac and Linux with your own game files. Single-player is broadly complete, though there are bugs, smaller missing features and compatibility issues left to investigate.
Online skirmish and Survival work in the native beta and in a browser with imported game files. You can add computer players, chat, share resources and make alliances. Every skirmish and Survival battle gets a replay. Reconnecting after a dropped connection is still missing.
I’m also working on the Modern AI, optional movement improvements and mod support. TA Escalation is one example of how far people have already pushed this game; being able to change the engine gives those experiments more room. The engine README has the current development status.
Contributing
Bug reports and contributions are welcome on GitHub. If something goes wrong, include the mission or map, what you did and what happened. Corrections to the research and documentation are useful too.
The engine’s MIT license lets you modify it or use it in your own project, including a commercial one. That license covers Nanolathe’s code. Total Annihilation’s assets have their own terms; you need your own installed game data for the full game.