Robot War Engine

Robot War Engine is an open-source real-time strategy game engine that supports Total Annihilation data and mods. Read more on our About page or view the project on Github.

Development Status

RWE is currently incomplete, read the blog posts to find out about the latest progress.

With TA data files, the Skirmish menu path works and you can load into the game, walk your commander around and fire your laser at other commanders until you both explode. You can also do this to other players on the internet, using the included launcher application to host or join a multiplayer game room. Work is currently focused on implementing the in-game UI.

Latest Posts

Progress Update 2022-05-23

Hi all. It’s been a very long time since the last progress update! Since the last update in 2019 work on the project was “officially” suspended. Work has still been happening in the background however, albeit at a much more relaxed pace. In this update I’ll highlight some of major new features that have been added to the engine.

Flamethrower Support

RWE now supports the flamethrower weapon type. The only unit that uses this in the original TA is the Pyro. Here you can see how the Pyro looks in RWE:

Nanolathe Effect

RWE now supports a crude form of nanolate effect. The effect right now is just a green line that gets drawn between the builder and its build target, but hopefully one day I will be able to add a nice particle effect here.

Build Order and Waypoint Markers

Build orders and waypoints are now shown when you hold down Shift. The effect is not as fancy as in TA but hopefully this can be revised in the future. Thanks to Skirmisher for adding the waypoint marker feature!

Floating Units

Floating units such as ships and hovercraft are now supported! They used to just swim along the bottom of the ocean like submarines but they now glide along the top of the water as they are supposed to.

3D Features and Corpses

For a very long time RWE only supported features that used sprites (GAF animations) as their display. However now features that are displayed as 3D models are supported. This also allows RWE to support spawning a corpse when a unit dies.

You still can’t reclaim or destroy the corpses yet so they will probably clog up the battlefield very quickly! But these improvements should come in a future update.

Smoke and Wake Particles

RWE now supports emit-sfx calls from scripts for smoke and wake particles. You’ve already seen the wakes in the animation showing off the support for ships, so here are some damaged smoking units.

Flash Effect

In TA weapons and explosions create a bright flash effect when they activate. RWE now supports emitting this.

The flash is currently a circle where as in TA it is more of a flat oval shape. I will consider updating this later on once I’ve determined how flat the oval should be.

Simulation Tick Rate

Video games typically simulate the world in discrete timesteps, called “ticks”. Every tick, the world exists in a particular state, and that state is advanced by a specific amount of time to arrive at the next state.

RWE originally ran at 60 ticks per second. That means that each tick advances the in-game time by 1/60th of a second, and we run a tick 60 times each second to play the simulation at normal speed.

TA however runs at 30 ticks per second. This has caused some issues in RWE as we need to compensate for this in places, usually by dividing or multiplying things by two to accomodate the diffence in tick rate.

RWE now runs at 30 ticks per second, so workarounds are no longer required. This has helped to simplify some code.

One thing that we lost when switching to a lower tick rate was smoothness of motion. To compensate for this, RWE now implements motion interpolation, which means that RWE can draw frames “in between” ticks showing a smooth transition from one tick to the next. This actually is a net improvement, because now RWE can render smoothly on any refresh rate monitor, including high end gaming monitors which can reach 144hz and higher.

Unfortunately I cannot effectively show this to you in GIF form. You will have to try out the engine for yourself to see the result.

Misc. Features

There are some other nice smaller improvements too:

  1. The GUI can now be hidden via the debug menu.
  2. Units now inherit orders from their factory. This means you can set a waypoint for units to go to when built.
  3. The Escape key can now be used to deselect units (thanks Oskar Pedersen!)
  4. Energy and metal storages now actually contribute to your energy and metal capacity (thanks Oskar Pedersen!)
  5. The Skirmish “Select Map” dialog loads significantly faster when there are a large number of maps (thanks Kevin Hake!)


Things have been very quiet these past few years but I hope that these new additions demonstrate that the project is making progress, even if it’s taking a long time. While I can’t promise regular updates, know that things are still ticking away behind the scenes, as long as there is GitHub activity at least.

Progress Update 2019-11-13

Hi all. It’s time for a surprise midweek update to make up for missing the last two weeks.

Since last time, I ran another network test of RWE with gamma and WereWolf on The Cold Place, with promising results. It also revealed quite a few bugs! Some of these have already been fixed, but others are still on my todo list.

I’ve been using a GitHub project to maintain a rough task list and track progress, feel free to have a look if you want more visibility into what I’m doing:

Some new features since last time:

  • It’s now possible to configure resolution and fullscreen from the RWE launcher.
  • RWE now captures the mouse cursor, so it’s practical to nudge the edges of the screen to move the camera.
  • The left-click interface mode is supported, and is now the default interface mode. You can change it back to right-click mode from the RWE settings dialog in the launcher.

I’ve also integrated some new debugging features and fixed some bugs.

The focus for now continues to be on fixing bugs and adding high priority features to make the current multiplayer experience more pleasant. Eventually we should get to the point where it’s actually fun to play a limited subset of TA within the engine.

For today’s gif, here are those left-click interface cursor animations in action.

Lastly, a big thanks to MattyWS for signing up as a new sponsor since the last update!


Progress Update 2019-10-27

Hi all

This week, RWE learned how to render weapons that use models and sprites – render types 1, 3, 4 and 6 in the weapon TDF files. Now you can finally see some more interesting projectiles than lasers, such as missiles and cannon shells.

RWE also learned about ballistic trajectories. Weapons that are ballistic now fire in an arc and are affected by gravity rather than shooting in a straight line.

Some ballistic weapons exhibit some amount of overshooting compared to their TA counterparts. During my testing I discovered that TA does something to correct for overshooting, and I have implemented something similar in RWE, but I have not quite reproduced the original behaviour. For now this should be okay, but I would like to eventually revisit this.

I also ran the first multiplayer network test of RWE today, and successfully played a short game against gamma on Comet Catcher. Since it’s now possible to play a complete game including mobile ground units, I’m officially upgrading the project status to its next working title: Total GroundWar

For this week I have two gifs, showing off cannon shells, which are sprites, and missiles, which are models.

Next I will be working on feedback and polish from the network test to make the game more playable for my early network testers.

Last but not least, thank you so much to my sponsors on Github for your continued support! All these kind people are new sponsors since my last update:

  • EnJoY120
  • brdann (Boris Danilov)
  • jimster480
  • msafta (Marius Safta)
  • gab (gabba)
  • AlainLi

And an extra special thanks to cosmouser (FN202), who committed to sponsoring me at a whopping $25/month!! :o

2019-10-27-progress 2019-10-27-progress-2

See All Posts