Conversation
Owner
|
"bastrian |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR mainly improves multiplayer stability and should make synchronization problems easier to find and recover from.
The handshake now checks the game build and active mods, including mod versions and loaded assembly hashes. If the game version, DLCs or mod playset are different from the host, the player should now get a more useful error instead of just failing to join. The compatibility catalog also handles local-only mods like Achievement Fixer.
For networking, clients now report if they actually applied atomic net operations. If something fails, the host can retry the original transaction or recover only the affected client. It is no longer necessary to replace the world state for all clients because one client got out of sync.
There are also some protections against old/stale commands after a recovery. The command limit after a world sync was increased as well, because there is normally a larger burst of commands directly after syncing.
For hosts, I added optional restrictions for sensitive tools, password protection for public direct hosting, and some traffic/latency information for connected peers in the multiplayer UI.
Also included:
What I tested
f0e0ad5) without conflicts1.6.2f170What I could not fully test yet is the complete multiplayer flow with a second client.
This still needs testing with two clients to verify joining, operation retries and the targeted recovery in an actual multiplayer session.
And yes, it did cost me an entire night, 4 Energy and 3 coffee so far.
Discolsure: AI was used to countercheck my code, and correct small issues. The respective files have the Author there set in the metadata.