Parenting characters from Nil/RepStorage then back to Workspace breaks them sometimes

Issue Type: Other
Impact: Very High
Frequency: Very Rare
Date First Experienced: 2021-03-17 00:03:00 (-07:00)
Date Last Experienced:

Reproduction Steps:
This issue can’t be reproduced 100% of the time, it’s VERY HARD to replicate. Personally I haven’t experienced this issue yet, but we’ve received multiple reports about NPCs and enemies breaking / going invisible.
To attempt to reproduce this issue, you must parent any character model (humanoid + welds) to nil or ReplicatedStorage, then back to workspace after a delay.

Expected Behavior:
Parenting characters back to Workspace should not break their welds randomly or make them go invisible. This did not happen before.

Actual Behavior:
Characters become invisible, most likely because:

  • Their welds break after getting parented back to Workspace and only their HumanoidRootPart remains (makes sense for enemies, but not for NPCs because those are anchored).
  • Their welds remain, but their offset is messed up (makes sense for enemies and NPCs).
  • Or some obscure rendering bug (most likely this option, since their health bar still shows where their head should be). Might be related to inverted parts in the map using this method: Allow Normals to be Flipped on BaseParts - #2 by buildthomas
  • Spamming weld C0/C1 updates is causing other welds to stop working?





NPC code snippet (all NPCs are anchored in the server, parented to Nil):

Enemies code snippet (non-anchored characters, parented to ReplicatedStorage):

Workaround:
A possible workaround would be not parenting characters to nil at all, however, we have to in order to reduce lag.

Apparently it was caused by changing the C0 of some welds too fast. Fixed by changing to Motor6D and using the Transform property.

1 Like