Edit: This is likely a StreamingEnabled/client-side replication related bug; see the second post
In my game, I get user reports of players jumping/landing on the floor in certain areas, and then sliding through the floor uncontrollably and at very fast speeds. This generally gets players stuck, and often kills them in the process.
This is a very difficult bug for me to reproduce, since it happens so rarely, but it also happens enough that it’s become a problem for many users in my game, as well as NPC humanoids. This has been going on for months in this game, ever since it was released:
User reports:
In Dawn of Aurora, the most common scenario in which this bug happens seems to be when players jump and land on floors with a thickness ~1 or less. Spontaneously, they begin sliding through the floor uncontrollably.
After searching the DevForum for “floor sliding glitch” and the like, all I could find were cases in which Humanoid.HipHeight are set to 0. When this happens, it produces the same sliding behavior that users are reporting. So I suspect that in certain, spontaneous moments, Humanoid.HipHeight is being set to 0. I have literally no code that affects Humanoid.HipHeight, so I would assume this is not caused by anything on my end.
I have also reproduced this with some NPCs in my game, and was able to confirm that indeed, HipHeight can be spontaneously set to 0. Sometimes NPCs spawn in, being stuck in the floor, and when selecting that NPC’s Humanoid, its HipHeight is 0, even though the NPC is cloned from a template with a HipHeight of ~2 or so:
I still don’t know the exact root cause of this bug, nor can I ever reproduce it consistently, but I hope this thread can serve as a starting point for finding this cause, especially if (hopefully) I’m not the only one experiencing it. I also wondering if this has anything to do with StreamingEnabled or server-side lag.
My guess at what the cause could be
- Since my game has StreamingEnabled on, Humanoid/HumanoidRootPart objects can potentially load in before a character’s legs, and said objects could be have network ownership assigned to a player who does not have the legs loaded in. This would result in a HipHeight being auto-calculated as 0 on the client.
- When the NPC is :Cloned() in, its legs are registered before the Humanoid, and HipHeight is set to 0 and never re-calculated when the legs are copied under the character model being cloned. This does not explain the cases when other users start spontaneously sliding through the floor though.
- Something to do with the custom armor sets/accouterments in the game, which can be welded to the character’s legs.