I did make my scoreboard system functional after the last update, which was a nice opportunity to make some AI vehicles battle each other and see how their different difficulty levels stacked up. Left column is Randomly selected AI player name + its difficulty setting. Points is “kills” and Lost is “deaths”. Looking OK; Medium needs a bit of a difficulty nerf.

But mostly I’ve been working on players being able to join games that are already in progress.

I feel like it’s a pretty important feature to have at release because if someone’s looking at a list of game servers, it’ll vastly increase the amount that can be joined (otherwise you’d only be able to join games that were still at the Lobby stage). Some other games let players join but make them wait for the next “round”, which would be much easier to implement, but that forces the game to have short rounds or long waits and I don’t want that for Scraps.

Getting everything to synchronise with a new player joining in the middle of a game is a big job – possibly the biggest single task left on my list before the full alpha release. If you’re in the game from the start, the network can get away with sending you only what changes: A player pressed fire, some wreckage spawned, a part got destroyed, someone changed their vehicle…

But when someone joins in the middle of the game, I need to sync everything. It’s not an insane amount of stuff (at least it’s not hundreds of physics objects or something) but it’s still server settings, everyone’s player data and their current inputs, and everything about their vehicles and what they’re doing right now.

Scraps is a bit more complicated to sync than your typical FPS. Players might be in the middle of a transition while using an evac pad (in which case I actually wait until they’re done before syncing that player to the new player – it’s simpler that way). They all have different vehicles with various parts that can all take individual damage. Complex situations can present themselves. For instance what if a current player has a vehicle, and the new player’s building it so they can sync to the game, but that vehicle loses parts or gets destroyed while the new player is building it?*

Conceptually it’s straightforward enough: Just send the new player all the stuff! But going from broad concept to actual execution is like determining that we need to draw a landscape, and then having to do it via mathematical equation.

*You probably queue that stuff up.