Page 1 of 1

[Resolved] [2.0.72] Desync on_player_controller_changed when type = controller.character

Posted: Wed Dec 24, 2025 11:42 am
by dje4321
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

Re: [2.0.72] Desync on_player_controller_changed when type = controller.character

Posted: Wed Dec 24, 2025 2:50 pm
by Rseding91
We typically use beyond compare for desync file comparison.

Re: [2.0.72] Desync on_player_controller_changed when type = controller.character

Posted: Wed Dec 24, 2025 4:29 pm
by Rseding91
I looked into this and there are 2 mods at fault:

1. Linox is storing data outside of the storage variable and so every time it's loaded it's re-running it's "init" logic. This is the cause of toggle-heavy-mode instantly failing when you try to test locally.

2. Maraxsis is storing data outside of the storage variable and so every time save/load happens it's reset to the default state (the modifiers for the light radius and swim speed.) This is the cause of the runtime desync when switching to/from remote view. The mod uses the modifiers to determine if it should or shouldn't show the light and the modifiers are changed as a result of not being properly stored in the storage variable and so not being saved/loaded.

Re: [2.0.72] Desync on_player_controller_changed when type = controller.character

Posted: Wed Dec 24, 2025 5:07 pm
by dje4321
Thank you for the support and help

I will continue to debug this further and provide bug reports to the mod authors in question.