I took a look at the *.wss files created when continuing the savegame. It desyncs for me and the bug seems to be the global pseudo-random number generator in combination with the AI. Am I right that the savegame contains one human player and one AI?
Short theory lesson: The random number generator (RNG) uses its current internal state and generates a new number based on this state, while at the same time changing the state. When the initial state is the same (e.g., directly after the game is loaded), the same sequence of numbers is generated. on both host and client computer.
In the save game, the AI is using the global RNG to generate a random number for its ship. However, this is only done on the host computer (that is fine), so the client does not call the RNG at that time. This leads to different random numbers being generated in the following for other "random" actions (here we have a problem), e.g., the movement of deers (e.g., it could happen that the deer walks left on the host but right on the client). Surprisingly, this works quite long until finally something changes in the game and the computers desync. In your case it could be the fight between two soldiers that turns out differently on both computers, leading to the desync (e.g., 2 damage received on the host but 5 damage on the client).
I haven't tested it yet with a new game but if I am right the presence of an AI player will lead to desyncs sooner or later. Continuing your savegame with two humans players works fine without an immediate desync.
An untested, probable fix would be to use an own RNG for the AIs since they are only calculated on the host and the random numbers for the AI does not need to be synchronized with the client(s).
I haven't followed the changes that have been done to the AI since build 19: Can it be that the global RNG is a new addition to the AI code and a local RNG had been used in previous versions?
I took a look at the *.wss files created when continuing the savegame. It desyncs for me and the bug seems to be the global pseudo-random number generator in combination with the AI. Am I right that the savegame contains one human player and one AI?
Short theory lesson: The random number generator (RNG) uses its current internal state and generates a new number based on this state, while at the same time changing the state. When the initial state is the same (e.g., directly after the game is loaded), the same sequence of numbers is generated. on both host and client computer.
In the save game, the AI is using the global RNG to generate a random number for its ship. However, this is only done on the host computer (that is fine), so the client does not call the RNG at that time. This leads to different random numbers being generated in the following for other "random" actions (here we have a problem), e.g., the movement of deers (e.g., it could happen that the deer walks left on the host but right on the client). Surprisingly, this works quite long until finally something changes in the game and the computers desync. In your case it could be the fight between two soldiers that turns out differently on both computers, leading to the desync (e.g., 2 damage received on the host but 5 damage on the client).
I haven't tested it yet with a new game but if I am right the presence of an AI player will lead to desyncs sooner or later. Continuing your savegame with two humans players works fine without an immediate desync.
An untested, probable fix would be to use an own RNG for the AIs since they are only calculated on the host and the random numbers for the AI does not need to be synchronized with the client(s).
I haven't followed the changes that have been done to the AI since build 19: Can it be that the global RNG is a new addition to the AI code and a local RNG had been used in previous versions?