Robot War Engine

Progress Update 2019-10-06

Hi all. It’s been a very long time since the last update, so here’s a new one for you all.

Despite the lack of update posts, I’ve still been working on things on and off, so a lot has happened since last time. Here’s a summary of the major improvements:

Let’s go through these in more detail:

Metal Extractors

RWE understands the metal value of terrain and how metal patches contribute to that. Metal extractors yield the correct amount of metal wherever they are built.

2019-10-06-progress-1-mex

Bandbox selection:

Not much to say about this. Here’s the gif.

2019-10-06-progress-2-bandbox

Desync Detection

When you play a network game of RWE, the state of the world on each person’s computer needs to always match the rest of the players. To check this, RWE implements a very primitive, incomplete checksum of game state. Network players swap these checksums during gameplay, and if two players’ checksums don’t match at any point then the game is considered desynced, and stops.

This is mainly a bug-hunting tool and ideally you shouldn’t see this, as a desync means you can no longer continue the game. Unfortunately you probably will see it as desync bugs are notorious to track down, but having the means to detect when they occur is the first step.

Launcher Linux Support

The launcher is already built on top of electron which is cross-platform, however it previously had some Windows-specific behaviour for e.g. launching RWE. I’ve now considered Linux here so it’s possible to use the launcher on Linux. This will be more interesting once RWE gets Linux packages.

Launcher IPv6 Support

IPv6 is the “new” internet protocol that primarily fixes the global IP address shortage. If all players in a network game support it, the launcher will start the game over IPv6.

IPv6 is good because it’s easier to connect to other players – you don’t have to worry about NAT or port forwarding – so this should mean that network games “just work” a reasonable percentage of the time.

I actually implemented this because I found that I couldn’t start a network game between two machines on my own LAN using the launcher, as my current ISP’s router doesn’t support NAT loopback, which I used to rely on.

Launcher Mod Support

One thing that has always been a problem for TA is the lack of infrastructure surrounding mods. Players find it difficult to install and manage mods, make sure they have the right version, etc. It’s particularly important for RWE because players need to have the same data, or risk causing desyncs in the simulation.

It’s also tough for modders, because there’s no easy way of e.g. overriding the contents of rev31.gp3, so modders have to come up with their own mechanism (e.g. exe hack) for achieving this.

The launcher now has a “mod” as a first-class concept. A mod is essentially a folder full of data files, plus a file called “rwe_mod.json” that contains a little bit of metadata which describes the mod.

The launcher lets you pick mods for single player, and in multiplayer the host of the room gets to pick the mods for that particular game.

Launch TA Mod Auto-Setup

When the launcher starts it will check to see if you have a “TA” mod already. If you don’t, it will offer to create one for you. The created mod currently contains TA + CC + 3.1 patch.

It creates the mod by finding existing TA files on your system and copying them into place. It will initially try to search common install TA install locations (disc, Steam and GOG installs) for the files it needs. If it can’t find TA automatically, it will ask you to tell it which folder to look at.

2019-10-06-progress-3-mod-setup

Note that the mods feature is still very new and everything is subject to change as I discover problems that need to be solved. Documentation about how it works, how to write RWE-compatible mods, and how to install RWE-compatible mods, will appear once more of the details have been worked out.

What’s Next

Work to detect and remove network desync bugs from the engine is still ongoing, and I expect this to be a major focus for some time so that we can get to the point where a full network game is playable without technical issues.

I also expect to continue polishing basic mod support in the launcher. This work will probably stop at TA + “straightfoward” mods (i.e. no big mods that use exotic exe hacks, like esc/mayhem/zero) so that I can return to working on engine features.