DevLog: Catching bugs and other fun activities with our replay system

We’re a busy bunch here at Small Jelly, and the design team is always super hard at work on creating the coolest cards/ships/scenarios/you-name-it that are humanly possible. As a member of the development team, keeping up with their ideas and crazy new features can prove quite challenging and we sometimes cause unexpected behaviour. Bugs are inevitable but they are not an excuse!

That’s when we came up with the idea to implement a replay system in Rocket Rumble to help us reproduce any bugs. Sounds pretty straight-forward, right? Well, sort of.

The system we are using enables us to easily record moves and feed them back into the game with the proper configuration. We have restructured the server side so that it doesn’t just take client input to play the game, as you normally would, but is also able to feed back into itself a list of recorded moves, execute them and send the outcomes back to the client for simulation. In other words you can tell the server to replay a game that was previously saved and it will create a simulation for you to watch and analyse.

How is this magic possible, you may ask? Simple: we record every single move you make during a match! Once you’re happy with everything and decide it’s time to save this as a replay you can tell the server to bundle up all the recorded moves in that match for replaying purposes.

Using the system is very simple. All you need to do is:

  • Be one of the developers (me)
  • Play a normal match
  • Save the match as a replay at any point
  • Enter replay mode and choose which recorded game you want to see
  • Lay back with a cup of your favourite hot (or cold) beverage and watch the game play itself

Here’s a video showing the game playing a replay, with no player input!

Mesmerising, isn’t it? Well it’s not just cool, it also serves the purpose (as stated above) of making it easier to report bugs. We are currently in the process of implementing a system which enables you to make it even easier to save a replay while you’re playing a match and also ping the development team to let them know a bug has been found. All the developers have to do at that point is just replay the match that caused the bug and start fixing it!