Multiplayer icon indicating copy to clipboard operation
Multiplayer copied to clipboard

RimWorld.Planet.WorldComponent_LocationGenerator Desync

Open Tick-git opened this issue 4 months ago • 2 comments

Label: 1.6, Desync

I’m not entirely sure about this one. We haven’t received any reports from others, but I’ve encountered it frequently myself. It might be tied to a specific save file I’ve been using a lot to test the grav ship light issue. It could potentially be ignored, but I thought it would be best to file an issue anyway. I also haven’t checked whether it still happens after the first desync.

Desync-400.zip

Gravship lamp before landing(1).zip

Steps to Reproduce:

  • Load the save file.
  • Let the game run for a while.
  • A desync occurs sometime between the start of the save and dusk.
Trace count: 57803
Trace of first desynced map random state:
21052 Tick:94992 Hash:538139122 '78002 0 Balast's faction 22 129315145603511 '
at Multiplayer.Client.Desyncs.DeferredStackTracing.Postfix () [0x00046] in <08a14d9a274c43cbafdecbd8fa838a5b>:0
at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Verse.Rand.get_Int_Patch1 () [0x00025] in <7d173b5c15724e3091f1e8ddff8e2abc>:0
at Verse.Rand.Range (int,int) [0x00017] in <cb53cd4422904947932d33f561ad8d15>:0
at Verse.GenCollection.RandomElement<RimWorld.Planet.PlanetTile> (System.Collections.Generic.IEnumerable`1<RimWorld.Planet.PlanetTile>) [0x0007d] in <cb53cd4422904947932d33f561ad8d15>:0
at Verse.GenCollection.TryRandomElement<RimWorld.Planet.PlanetTile> (System.Collections.Generic.IEnumerable`1<RimWorld.Planet.PlanetTile>,RimWorld.Planet.PlanetTile&) [0x0004f] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.TileFinder.TryFindRandomPlayerTile (RimWorld.Planet.PlanetTile&,bool,System.Predicate`1<RimWorld.Planet.PlanetTile>,bool,RimWorld.Planet.PlanetLayer) [0x00266] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.WorldComponent_LocationGenerator.TryFindSiteTile (RimWorld.Planet.PlanetLayer,RimWorld.Planet.PlanetTile&) [0x0004e] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.WorldComponent_LocationGenerator.GenerateLocationForLayer (RimWorld.Planet.PlanetLayer) [0x001de] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.WorldComponent_LocationGenerator.GenerateUntilTarget (RimWorld.Planet.PlanetLayer) [0x0002d] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.WorldComponent_LocationGenerator.WorldComponentTick () [0x0008f] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.WorldComponentUtility.WorldComponentTick (RimWorld.Planet.World) [0x00034] in <cb53cd4422904947932d33f561ad8d15>:0
at RimWorld.Planet.World.WorldTick () [0x00049] in <cb53cd4422904947932d33f561ad8d15>:0
at Verse.TickManager.DoSingleTick () [0x00242] in <cb53cd4422904947932d33f561ad8d15>:0
at Multiplayer.Client.AsyncTime.AsyncWorldTimeComp.Tick () [0x00081] in <08a14d9a274c43cbafdecbd8fa838a5b>:0
at Multiplayer.Client.TickPatch.TickTickable (Multiplayer.Client.ITickable) [0x0004f] in <08a14d9a274c43cbafdecbd8fa838a5b>:0
at Multiplayer.Client.TickPatch.DoTick (bool&) [0x000b6] in <08a14d9a274c43cbafdecbd8fa838a5b>:0
at Multiplayer.Client.TickPatch.DoUpdate (bool&) [0x00069] in <08a14d9a274c43cbafdecbd8fa838a5b>:0
at Multiplayer.Client.TickPatch.Prefix () [0x001af] in <08a14d9a274c43cbafdecbd8fa838a5b>:0
at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Verse.TickManager.TickManagerUpdate_Patch1 (Verse.TickManager) [0x00169] in <7d173b5c15724e3091f1e8ddff8e2abc>:0
at Verse.Game.UpdatePlay () [0x00081] in <cb53cd4422904947932d33f561ad8d15>:0
at Verse.Root_Play.Update () [0x00069] in <cb53cd4422904947932d33f561ad8d15>:0
at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) [0x0006e] in <51fded79cd284d4d911c5949aff4cb21>:0

Tick-git avatar Aug 23 '25 14:08 Tick-git

Or could it be because the save starts on the world map while a gravship traversal is happening?

Tick-git avatar Aug 23 '25 14:08 Tick-git

Maybe related: When quest/event that generates asteroids/quests/orbitals (example: hacking ancient uplink or via orbital scanner) picks location, it is not the same between client and host. It obviously re-syncs at some point when you re-sync but it does not on itself trigger a desync report.

maxsupermanhd avatar Aug 24 '25 19:08 maxsupermanhd