Summary
Same 3-player multiplayer session, 3 consecutive desync reports collected. All related to Anomaly DLC UnnaturalCorpse -- the entity appears as different Thing types/states on different clients, causing RNG consumption paths to diverge.
Environment
- RimWorld: 1.6.4871 rev591
- Multiplayer: 0.11.5+4a3be27-dirty
- DLC: Anomaly
- OS: Windows 11 64bit
- CPU: AMD Ryzen 7 5800H
- GPU: NVIDIA GeForce RTX 3060 Laptop GPU
- RAM: 16GB
- Player Count: 3
- Map Count: 1
Root Cause
Desync-126 (Tick ~2898866): Thing identity mismatch
Same Thing ID 10644612 is a different entity type on each client:
- Local:
Human687 (faction 16) -- Pawn_FilthTracker.Notify_EnteredNewCell -> Rand.get_Value
- Host:
UnnaturalCorpse_Human842202 (faction 14) -- UnnaturalCorpse.TickInterval -> Rand.MTBEventOccurs -> Rand.get_Value
Local thinks it is a regular human, host thinks it is an UnnaturalCorpse. Different tick logic, different RNG consumption -> immediate random state fork.
Desync-128 (Tick ~2941609): Pawn death/corpse state mismatch
Same pawn Human698 (ID 10822901) -- corpse state differs:
- Local:
WorkGiver_HaulCorpses.JobOnThing -- thinks it is a corpse
- Host:
WorkGiver_HaulGeneral.JobOnThing -- thinks it is NOT a corpse
HaulCorpses path consumes different RNG than HaulGeneral path, causing divergence.
Desync-130 (Tick ~2948932): Trace hashes match but RNG diverges
- Trace count: local=142, host=142 (completely identical)
- All 142 trace hashes match exactly between local and host
- "Trace of first desynced map random state: -1" -- desync happened in untraced code
- Last context trace:
GameComponent_Anomaly.UpdateCorpseTrackers -> UnnaturalCorpseTracker.UpdateMentalBreak
Desync occurred in code paths that Multiplayer mod does NOT patch for RNG tracing.
Combined timeline
All 3 reports are from the same game session (same Player.log):
- Tick 2309911 -- first desync (Wrong random state on map 6)
- Tick 2560771 -- Wrong random state on map 7
- Tick 2601164 -- Trace hashes do not match
- Tick 2647171 -- Random state from commands does not match
- Tick 2652931 -- Wrong random state on map 7
- ... subsequent desyncs until disconnect
Conclusion
Multiplayer mod's RNG tracing and entity sync does not fully cover the Anomaly DLC UnnaturalCorpse system. Desync-130 in particular shows that the tracing infrastructure is unaware of certain Anomaly code paths that consume RNG.
Desync zip files available upon request.
Summary
Same 3-player multiplayer session, 3 consecutive desync reports collected. All related to Anomaly DLC
UnnaturalCorpse-- the entity appears as different Thing types/states on different clients, causing RNG consumption paths to diverge.Environment
Root Cause
Desync-126 (Tick ~2898866): Thing identity mismatch
Same Thing ID
10644612is a different entity type on each client:Human687(faction 16) --Pawn_FilthTracker.Notify_EnteredNewCell->Rand.get_ValueUnnaturalCorpse_Human842202(faction 14) --UnnaturalCorpse.TickInterval->Rand.MTBEventOccurs->Rand.get_ValueLocal thinks it is a regular human, host thinks it is an UnnaturalCorpse. Different tick logic, different RNG consumption -> immediate random state fork.
Desync-128 (Tick ~2941609): Pawn death/corpse state mismatch
Same pawn
Human698(ID10822901) -- corpse state differs:WorkGiver_HaulCorpses.JobOnThing-- thinks it is a corpseWorkGiver_HaulGeneral.JobOnThing-- thinks it is NOT a corpseHaulCorpses path consumes different RNG than HaulGeneral path, causing divergence.
Desync-130 (Tick ~2948932): Trace hashes match but RNG diverges
GameComponent_Anomaly.UpdateCorpseTrackers->UnnaturalCorpseTracker.UpdateMentalBreakDesync occurred in code paths that Multiplayer mod does NOT patch for RNG tracing.
Combined timeline
All 3 reports are from the same game session (same Player.log):
Conclusion
Multiplayer mod's RNG tracing and entity sync does not fully cover the Anomaly DLC
UnnaturalCorpsesystem. Desync-130 in particular shows that the tracing infrastructure is unaware of certain Anomaly code paths that consume RNG.Desync zip files available upon request.