drkohler said:
Isn't this all too complex? I don't see any reason at all to synchronize anything. They way I'd do it is a) Occasionally send a byte ("Weather condition") over the net that says "It's stormy", "It's dead sea", etc. Let each console handle the weather accordingly. b) In combat, send a byte/word for each bullet shot ("Damage condition") from the attacker that says "This will miss", "This will hit around there with % damage". Let the victim act on this byte/word accordingly. Particularly with b), lag isn't that big a problem at all. It also doesn't matter what each of the two ships in combat is actually doing on each console at the very moment of firing, the guy who fires calls the shots (in every sense of the word). |
The boats respond to the waves, go up and down, which needs to be the exact same on all the clients.
This is easy to do with a seed to generate waves with. The same as one seed can create the exact same procedurally generated complex minecraft world. All the rest is to tell each client where the ships are to add some extra waves on top, no need for complex interactions, procedurally generated wave patterns with likely pre calculated interference patterns is enough.
The cloud can direct the weather and conditions simply by telling each client to transition to a different seed at a specific time. You want to keep interactions being client and server as little and efficient as possible. Doing complex wave physics server side and sending a complete height map with speed vectors for all the nodes is not efficient.