I also believe that another player's packets being sent to the server getting lost can also have the same effect. The most natural desync would be UDP packets being lost after being sent from the server. Add in the AI, vehicles, (possibly ambient life, not sure if server sided) and the upload speed keeps increasing, bottlenecking the server.ĭesync occurs when the user is not receiving updates from the server. Again, I'm only guessing on these, but 15 mbps sounds right to me. That's 15 mbps just from players on a server moving. Multiply that by 64 to represent everyone moving at once. That's 240 kbps, all from one player interacting with others. Thats being uploaded to say another 64 players. These are values constantly being updated while the player moves (player head possibly an exception). Player head yaw and pitch = 2 variables, float (2 = 8 bytes) Player yaw and pitch = 2 variables, double (2 doubles = 16 bytes) Player position = 3 variables, xyz, likely double values (3 doubles = 24 bytes) The client is like any other user connected to the server, but calculations from the client may slow calculations of the server). I feel like this has something to do with people thinking that their FPS is attached to the server's FPS, when in reality the server does not render anything and therefore doesn't have FPS (with the exception of player hosted servers- they have 2 things running, a server and a client, the server doesn't have FPS, the client does.
What I just described is for regular players- and I'm fairly sure it happens for the A.I. Not only does this put unnecessary stress on the server and your computer, but it also makes the game more open to hackers. If he's crouching, running, sprinting, shooting, reloading, saluting, sitting, in a vehicle, (dis)embarking, or using his inventory, your computer knows about it. If one of them turns their head to the left, your computer knows about it. If you're on the bottom of Stratis and every other person is at the very top of Stratis (Kill farm I believe), your computer is aware of that. The server sends EVERYTHING to EVERY client.
This is in theory just from playing the game. It's very easy to bring a server to its knees if you are poor at scripting. Most advanced missions use complicated scripts to operate.
You've also got to take into account the somewhat mixed bag of programming skill that you get with custom missions. Most times you see desync, it'll be the server is not up to the task of hosting the current mission. DayZ managed to get around this by offloading a lot of the server AI processing clientside - though this isn't really a good solution for 'intelligent' enemies. When this starts happening, you get desync. This is when the server is too overloaded with processing that it's not actually getting around to sending the data to the players fast enough. You may notice on desyncing servers players sliding about, AI teleporting after running on one direction, and miniguns firing bursts of hundreds of bullets simultaneously. The server has to do so much more work and make sure all that work is consistent for all players. Because of how hugely complicated the game is compared to other games.