[Resolved] [2.0.72] Desync on_player_controller_changed when type = controller.character
Posted: Wed Dec 24, 2025 11:42 am
Playing a modded space-age multiplayer modpack and ran into an issue where the server will desync me anytime my character controller is transferred to a character controller specifically
Examples
Enter map -> Safe
Exiting map -> Desync
Setting Controller to remote, god, or spectator -> Safe
Setting Controller to character with /c game.player.set_controller(type = defines.controllers.character, character = game.player.selected}) -> Desync
Saving a local copy of the map and self hosting a server is unable to trigger the desync for deeper investigations. /toggle-heavy-mode does return a failed check however, I am unable to find resources on how to properly parse either the desync report or the heavy-mode dumps. I have attached the desync report and there is a link at the bottom for the failed heavy-mode dump files.
running /c game.force_crc() when connected to the desyncing server will not return any failed CRC checks
One possible cause I am suspecting is that the latency is too great for the game to handle. There are several failed heartbeat messages in the log file before the desync occurs. The latency is fairly high at ~180ms (Central US -> UK) however it has not been an issue before even when it was spiking pass 600+ms of latency so I am very hesitant to say that it is the issue.
heartbeat sequence number (4351407) outside latency window [4351433, 4352633)
Unzipping all the mod files and grepping through them for "on_player_controller" events shows there are 3-5 possible suspect mods
VehicleSnap (Never been an issue before)
ToolbarsMod (Highly suspected, Does advanced inventory code to merge all the different locations together (Logistics, Trash, Personal, etc) for displaying the total count of available items
Maraxsis (Not suspected atm. Used for swimming and diving controls)
Rabbasca (Potentially suspected for bunnyhop feature)
Subsurfaces (Slight Suspect for conditional space-exploration interface)
I dont have any diff tools that will accept either the line length, or the total size of the heavy mode output files to identify the root cause of the desync
Any information or guidance on how to either replicate locally, parse the desync reports, or provide further explanation for what might be happening is deeply appreciated.
https://drive.google.com/drive/folders/ ... ZO-bE1TQwo
Examples
Enter map -> Safe
Exiting map -> Desync
Setting Controller to remote, god, or spectator -> Safe
Setting Controller to character with /c game.player.set_controller(type = defines.controllers.character, character = game.player.selected}) -> Desync
Saving a local copy of the map and self hosting a server is unable to trigger the desync for deeper investigations. /toggle-heavy-mode does return a failed check however, I am unable to find resources on how to properly parse either the desync report or the heavy-mode dumps. I have attached the desync report and there is a link at the bottom for the failed heavy-mode dump files.
running /c game.force_crc() when connected to the desyncing server will not return any failed CRC checks
One possible cause I am suspecting is that the latency is too great for the game to handle. There are several failed heartbeat messages in the log file before the desync occurs. The latency is fairly high at ~180ms (Central US -> UK) however it has not been an issue before even when it was spiking pass 600+ms of latency so I am very hesitant to say that it is the issue.
heartbeat sequence number (4351407) outside latency window [4351433, 4352633)
Unzipping all the mod files and grepping through them for "on_player_controller" events shows there are 3-5 possible suspect mods
VehicleSnap (Never been an issue before)
ToolbarsMod (Highly suspected, Does advanced inventory code to merge all the different locations together (Logistics, Trash, Personal, etc) for displaying the total count of available items
Maraxsis (Not suspected atm. Used for swimming and diving controls)
Rabbasca (Potentially suspected for bunnyhop feature)
Subsurfaces (Slight Suspect for conditional space-exploration interface)
I dont have any diff tools that will accept either the line length, or the total size of the heavy mode output files to identify the root cause of the desync
Any information or guidance on how to either replicate locally, parse the desync reports, or provide further explanation for what might be happening is deeply appreciated.
https://drive.google.com/drive/folders/ ... ZO-bE1TQwo