Levolution in Arma 3
For the previous years I’ve been an active member of the Arma 3 game community, having made several mods as well as actively running missions for several groups. Naturally, being a military oriented game, there are times when you want spectacular effects of destruction: collapsing buildings; sinking ships; towers falling over and so on, so forth. For the longest time to do so in a multiplayer setting was difficult; solutions were either janky and/or unreliable.
The most promising method was the game’s keyframe animation system, which allowed you to animate an object to move and rotate in world space. But there was a catch — it was only designed to work in singleplayer.
Thus the objective was simple, to make it work.
The keyframe animation system itself had one main limitation: once activated, the animation would fail to propagate correctly across clients from the server instance. Worse, since the object was physically moved through the game world, the position of the animated object would sporadically update on the client’s end ; effectively causing the object to randomly teleport for players (presumably a consequence of how Arma handles position syncing in a multiplayer setting between clients and the server). Any solution would therefore either have to accurately sync the objects position between the server and clients; or correctly propagate the animation to clients.
The solution I used ended up being the latter — using a few of the game’s functions, animation data was saved as text data and then replayed back on each client’s at runtime locally in order to prevent server desync. The end result was surprisingly crystal smooth, even after testing with a server of some 20+ people.
Figuring out the solution was half the project as it turns out, the other half was getting the solution out there. Both a showcase mission and a tutorial were set up and published. The showcase mission itself was designed to be simple and transparent; while the video was intended to be detailed without too much bloat, with a focus on potentially less experienced users. Both remain up today, and it continues to be one of the bigger projects I’ve done for Arma 3.