I'm planning to build a side scrolling 2D shooter where you go head to head against to other people over the network.
If it was just about syncing a few physics object I doubt I would have any trouble but my main goal is to have destructible terrain in the game, and figuring out how im going to keep that in sync with current and joining players is giving me a bit of a headacke.
My first though was to try to keep all destruction of terrain in circles, ie all explosions are exact circles, that way i can send a position and a radius to all clients, which seems easy enough... But as the game progresses there is a risk (more like certainty)
of these packets being dropped at some point. So i need to be able to check if the player has a correct version of the ground, and if they dont I need to be able to send them an updated version of the map.
However, the map is a minimum of 10000x5000 (= 50000000 pixels) and to send the entire map as a mask ( ie 1 or 0 for each position depending on if it has ground in it or not) would use quite a bit of bandwidth.
Then theres also the problem of someone joining half way through the game, and while they are receiving those 50000000 pixels the whole map could in theory have been changed before he is ready to play
How would you guys solve this.