Robot War Engine

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!)

Conclusion

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.