Hi 343,
First, tks for making a great game!
I was thinking about desynchronization and at first I thought it’s kind of a issue with no resolution. However, today I had a thought and I wanted to share it with you in hopes of making the game better.
So, if I understand it correctly, we have two (for example) players simulating locally that are (based on favor the shooter principles) getting different viewpoints on gameplay.
Like I said earlier, I agreed that there is not much you can do about that due to latency issues. However, there might be a mitigation you could implement as follows:
What if, on one hand the players relay their positions through the server to the other players in a direct connection with no arbitration from the server and on the other hand the server still arbitrates at a round trip time. This halves the latency on positioning of players and gives some input to the locally simulated future outputs to the arbitrating server.
For example,
- if at a low level of processing quite literally the controller or KBM inputs in regards to position only are relayed amongst all clients through the server at t=0ms.
- clients send/receives and processes locally given inputs by t=50ms disregarding latent packet loss from clients that fail to relay by cutoff time t=51ms.
- clients send off locally simulated packets at t=51ms.
- clients send positional inputs at t=52ms.
- server receives packets, arbitrates, rewinds time, and relays arbitration at t=88ms.
- client receives arbitration at t=100ms.
- client send/receives positional inputs and simulates locally at t=101ms.
*** all time values are purely speculative for the purpose of the exemplum***
To conclude, this is just a thought but I hope it finds the network team of 343s sandbox well if it’s applicable.