Page MenuHomeFeedback Tracker

Position Desync
New, NormalPublic

Description

This is a form to report an issue from the PC VERSION of the game - for Xbox/PS4 issues use their respective forms from the dropdown menu (delete this prior to creating the ticket)

When the client stops receiving data for any reason (packet loss, loss of DOWN connection etc), it stops sending position data to the server. Or the server ignores the position data because the client might have reported the loss of connection.

Client side has no indication they are lagging, and notices nothing.

On the server side the character is frozen in place.

I have attached a client side movement log, and video of what it looks like from an admin POV. The log is out by 2 hours due to the client being in a different time zone but this report correlates to the video.
You can see the client moving completely normally but the server is reporting the camera is away from the client position.

The reports are triggered by an RPC being sent by the client, and the server checks the distance from the client's camera position to their server position, so the client is capable of sending position data to the server while it is 'desynced'.

It also seems desynced clients are still capable of causing damage to other players and/or doing other actions, it is ONLY their character model that seems to get desynched!!!! All other data still seems to be accepted by the server!

This is a critical issue as we have recorded proof of times when players have made 'impossible shots' based on logged server side data and CF Tools logs. But, their client side position logs AND recordings prove the shots are legitimate and it's desync on the server side! I.E client reports as having hit a certain player, and the server goes from their server-side position when doing the log.
We have had players sometimes end up hundres of metres out of synch before they suddenly zoom back into their actual position they are meant to be.

Client side log - NOTE their timezone was 2 hours ahead. The video was recorded during one of these lag events:

21:14:46 - Moved 51.5325 metres in the past 10 seconds (5.15325 m/s) from 10452, 6.81, 2014.66 to 10482, 6.267, 2018.43
21:14:56 - Moved 33.4261 metres in the past 10 seconds (3.34261 m/s) from 10482, 6.267, 2018.43 to 10495.5, 6.212, 2029.29
21:15:07 - Moved 69.9438 metres in the past 10 seconds (6.99438 m/s) from 10495.5, 6.212, 2029.29 to 10527.6, 6.238, 2087.34
21:15:18 - Moved 64.8162 metres in the past 10 seconds (6.48162 m/s) from 10527.6, 6.238, 2087.34 to 10532.7, 6.025, 2136.26
21:15:28 - Moved 13.6592 metres in the past 10 seconds (1.36592 m/s) from 10532.7, 6.025, 2136.26 to 10535.3, 6.125, 2128.94
21:15:38 - Moved 46.1881 metres in the past 10 seconds (4.61881 m/s) from 10535.3, 6.125, 2128.94 to 10544.4, 6.025, 2167.49
21:15:48 - Moved 50.0683 metres in the past 10 seconds (5.00683 m/s) from 10544.4, 6.025, 2167.49 to 10574.3, 6.025, 2203.85
21:15:58 - Moved 49.1975 metres in the past 10 seconds (4.91975 m/s) from 10574.3, 6.025, 2203.85 to 10596.8, 6.025, 2245.77
21:16:08 - Moved 13.3799 metres in the past 10 seconds (1.33799 m/s) from 10596.8, 6.025, 2245.77 to 10597.1, 6.025, 2259.14
21:16:18 - Moved 67.1943 metres in the past 10 seconds (6.71943 m/s) from 10597.1, 6.025, 2259.14 to 10559.7, 6.025, 2310.19
21:16:28 - Moved 61.1195 metres in the past 10 seconds (6.11195 m/s) from 10559.7, 6.025, 2310.19 to 10531.1, 6.025, 2355.33
21:16:38 - Moved 67.3529 metres in the past 10 seconds (6.73529 m/s) from 10531.1, 6.025, 2355.33 to 10507, 6.749, 2408.17
21:16:49 - Moved 66.2203 metres in the past 10 seconds (6.62203 m/s) from 10507, 6.749, 2408.17 to 10481.3, 6.986, 2466.73
21:16:59 - Moved 64.9155 metres in the past 10 seconds (6.49155 m/s) from 10481.3, 6.986, 2466.73 to 10456.4, 6.091, 2524.57
21:17:09 - Moved 67.5569 metres in the past 10 seconds (6.75569 m/s) from 10456.4, 6.091, 2524.57 to 10473.2, 6.051, 2587.37
21:17:19 - Moved 51.7688 metres in the past 10 seconds (5.17688 m/s) from 10473.2, 6.051, 2587.37 to 10475.3, 5.568, 2629.9
21:17:20 - [SERVER > CLIENT LAG] event 11450
21:17:29 - Moved 61.2239 metres in the past 10 seconds (6.12239 m/s) from 10475.3, 5.568, 2629.9 to 10435.9, 5.217, 2670.34
21:17:39 - Moved 54.406 metres in the past 10 seconds (5.4406 m/s) from 10435.9, 5.217, 2670.34 to 10477.6, 5.981, 2649.91
21:17:49 - Moved 49.9586 metres in the past 10 seconds (4.99586 m/s) from 10477.6, 5.981, 2649.91 to 10431.6, 5.146, 2669.4
21:18:00 - Moved 10.7447 metres in the past 10 seconds (1.07447 m/s) from 10431.6, 5.146, 2669.4 to 10420.8, 6.59, 2669.3
21:18:10 - Moved 70.2845 metres in the past 10 seconds (7.02845 m/s) from 10420.8, 6.59, 2669.3 to 10351.3, 12.179, 2663.64
21:18:20 - Moved 68.1144 metres in the past 10 seconds (6.81144 m/s) from 10351.3, 12.179, 2663.64 to 10283.9, 19.439, 2653.63
21:18:30 - Moved 67.7523 metres in the past 10 seconds (6.77523 m/s) from 10283.9, 19.439, 2653.63 to 10221.7, 23.295, 2669.74
21:18:40 - [SERVER > CLIENT LAG] event 5275
21:18:41 - Moved 68.0731 metres in the past 10 seconds (6.80731 m/s) from 10221.7, 23.295, 2669.74 to 10156.2, 24.651, 2688.16
21:18:51 - Moved 66.096 metres in the past 10 seconds (6.6096 m/s) from 10156.2, 24.651, 2688.16 to 10099.1, 38.08, 2717.13
21:18:56 - [SERVER > CLIENT LAG] event 7145
21:19:01 - Moved 66.5462 metres in the past 10 seconds (6.65462 m/s) from 10099.1, 38.08, 2717.13 to 10033.2, 48.097, 2720.13
21:19:11 - Moved 50.834 metres in the past 10 seconds (5.0834 m/s) from 10033.2, 48.097, 2720.13 to 9983.36, 52.926, 2720.78
21:19:21 - Moved 18.8247 metres in the past 10 seconds (1.88247 m/s) from 9983.36, 52.926, 2720.78 to 9965.14, 52.316, 2724.46
21:19:42 - Moved 19.6972 metres in the past 10 seconds (1.96972 m/s) from 9965.14, 52.316, 2724.46 to 9945.95, 50.797, 2728.91
21:19:52 - Moved 67.1334 metres in the past 10 seconds (6.71334 m/s) from 9945.95, 50.797, 2728.91 to 9880.92, 58.775, 2745.42

Reports (done in the server side, based on RPC sent by the client - This proves the client is still sending data to the server fine!!

Video (Admin POV):

My Opinion / Possible Solution:
I belive what is happening is when there is position data loss from SERVER > CLIENT, the CLIENT > SERVER position data is either rejected by the server, or not sent by the client at all (since the server is clearly still receiving RPC data from my mod just fine with their camera position)
Upon restored connection the client can always be repositioned/teleported as needed!
Allow CLIENT > SERVER position synch at all times, even while the client has desync on their end (SERVER > CLIENT lag or packet loss)
I do believe the current system might be doing this due to some form of data validation to ensure the client doesnt zoom off into space or something if the server receives the wrong position data. However, it would be possible to re-validate the data at certain timestamps if required, and move the character back into position once synch is restored!
Or perhaps even send the data twice to validate it one-way. You could send a raw version of the position data and also a secondary version in a different format (I.E a hash of the position data), that could get validated on the server side against the raw version, before being applied.
You could even temporarily store damage calculations during desync, and only apply them once synch is restored and the position data is validated.

Side Note to other server admins about the player being used as an example:
I don't think this player was cheating during this incident now. However, they have logs showing a 2nd account was used on their computer. We are investigating a possible bought account or alt account now

Details

Severity
Major
Resolution
Open
Reproducibility
Random
Operating System
Windows 10 x64
Operating System Version
N/A
Category
Game Freezes

Event Timeline

xplosiff created this task.Sun, Jun 29, 6:33 AM