On Incompatibility of Old Replays

Our players have asked us about the reason why every major update makes the battle replays that were recorded in previous versions of the game client incompatible with the new one. The reason lies in the replays themselves.

As you know, everything that happens in battle is calculated on the server. Every mouse movement and keypress is processed and the server sends back a response – in which direction your aircraft is moving, how it’s accelerating or decelerating, turning. Similarly it calculates results of your shooting – whether you hit a target and how much damage you deal. This data is processed for every single player in battle. As a result your game client constantly receives a stream of actual data on the state of every aircraft present in battle, every ground target, superiority points etc.

A replay is not a recording of what a player did from their side (client-side recording), it’s a full record of all the data that the server sent to him during the battle. During replay playback a “virtual” battle is held — it’s absolutely the same as a normal battle from the client’s point of view, only all the data comes not from the server but from a file. 

The game client expects the server to send the data stream in a certain format. If it receives an incorrect portion – it will ignore it (this often happens if you have slow network connection and suffer from lag). This means that if a protocol for this data stream changes – the replay content will change also, and the client will not be able to play it back. Naturally a majority of changes that happen in the game with each major update lead to a change in the protocol for data streams between the server and the client – its size, order and content. For instance when we introduced complex ground objects – the server began to send significantly more data on their state (HP, parts condition, etc). Extensive changes to the aircraft parameters also influence the content of the stream. Changes on the maps (reordering the ground targets, shifting the spawning points, changes in maps geometry) also lead to incompatibility. Internal changes in the game engine can break compatibility too, for example, the recent upgrade to a new version of the BigWorld engine.

As a result all the replays recorded in various versions of World of Warplanes contain data in different order, size and format. And every client version expects the data stream to come in a strictly defined format, no matter the source – the server or a replay file — and is incapable of reading incorrect data. In order to make the client backward-compatible (able to playback obsolete versions of replays) we would have to add all the previous versions into every subsequent build. Naturally every update would make the game larger and larger.

P.S.: If you have started playing recently and haven’t discovered this feature yet – World of Warplanes allows you to record every battle and watch the replay later to analyze tactics, spectate the actions of the allies, and share your achievements with your friends afterwards. You can enable it by going to the ‘Game’ tab in the game settings and ticking the corresponding box. The replays storage location will also be shown there — it’s in the Video folder of your Windows OS.

Comments

(1)