Netgames are unstable (consistency failures)
Networked multiplayer is currently very unstable and prone to desynchronization. Conjectured reasons are below:
- Thinker code is inconsistent between CPU architectures. (Confirmed for Linux64 and OSX 64)
- Player thinker code is reliant on non-scene state or other potentially unchecked behavior.
- Some consistency degrades due to type conversion from float to fixed and vice versa in player thinker.
- Synch code is broken. It needs to be changed.
Since SRB2 merely multiplexes player inputs to all nodes and hashes some position and item information in each player as Consistancy
, any non-marginal difference in player position can cause a desynch.
These problems also affect demo playback, although less significantly. Demos recorded on one architecture may not play back correctly on others. (Not confirmed)
Maintainer notice: please reference other related issues here if they are posted.
Original description by @choalover:
The netcode is something that should be fixed. The synch code is messed up. Rewriting the netcode can make it really stable if done correctly. Make sure you fix it in a new branch called fix-netcode. It annoys alots of players who played SRB2 2.1.X.