Floor Sliding/Humanoid.HipHeight spontaneously set to 0

AutomaticScalingEnabled is true and remains true, according to that second screenshot, so I’m guessing it’s a conflict with streaming and the automatic calculation of HipHeight due to AutomaticScalingEnabled. The client streams in the character partially, and then calculates the HipHeight as 0, probably due to legs being streamed in early/late.

I’m assuming AutomaticScalingEnabled is on by default for every Humanoid object though? I have never messed with AutomaticScalingEnabled or HipHeight before encountering this bug, so it’s definitely not due to any of my code.

Had anyone else seen a similar behavior with places that are Stream Enabled? Trying to narrow down possible causes to find the simplest test case to reproduce the issue.

1 Like

I managed to put together a repro in a highly contrived example, but my hypothesis appears to be correct, so I’m assuming this also applies to any StreamingEnabled game, and not just with NPCs but when players load each others’ characters impartially as well:

repro.rbxl (32.5 KB)

This place has three unanchored, stretched out characters with PlatformStand set to true so that they stay where they are placed.


It also has StreamingEnabled with the StreamingMinRadius and StreamingTargetRadius set to 10.

Lastly, to ensure that the client has say in calculating the HipHeight, I have a script in ServerScriptService that gives network ownership of each part in these dummies to the first player that joins the server:

When you first join, the upright dummy will load its parts in, and the Model/Humanoids of the other two will load in, with HipHeight set to 21.924 (as replicated from the server)

To reproduce this bug, simply walk up to the dummies until you see one dummy missing legs, and another dummy missing a torso/head (not streamed in yet). Dummy2 will load the HumanoidRootPart/Head before its legs load in, thus initiating a calculation of HipHeight for that client. This will be 0 for Dummy2 and 21.924 for Dummy3.

Finally, when you walk closer, until the legs of Dummy2 load in, HipHeight does not update after this point. on the client, so it remains at 0.

Meanwhile on the server, HipHeight is unaffected by this, so it seems to be a client-side issue only:

Seems like it’s an issue is that the client is trying to calculate HipHeight in the first place. Shouldn’t this always be server-authoritative? Makes me wonder if exploiters can glitch you into the ground at will by messing with your HipHeight if they ever get a moment of authority; seems like this also happens unintentionally without exploiters at all. I would suspect these user reports come from the fact that players are entering a popular location, and somehow entering the streaming purview of another player, and then briefly have their physics messed up by the other player, but maybe that’s a separate bug entirely. If there is a reason for HipHeight to be in any way client-authoritative, there needs to be some way for Humanoids to defer this calculation until that character is loaded in 100%, legs included. It seems like, instead, there is a single calculation event that occurs when the Head/HumanoidRootPart load in (since these are essential parts of a Humanoid’s character), while the legs being streamed in add nothing in consideration for the Humanoid’s calculation of HipHeight.

3 Likes

Having the same issue here within Studio. It’s definitely because of streaming enabled as the bug stops occurring after it’s turned off.

  • The character has been applied with the default character package and size
  • Setting the hipheight back will result in the character being in a looped freefalling animation
  • Also falls in parts aside from just terrain

So i have these 3 characters, all of them work fine except the noob one. First time you change to the noob it works fine but if you change to another character and go back to the noob he gets stuck in the floor

If its some odd, occasional streaming glitch, maybe try spawning items in a two step method - first spawn near, but within the minimum radius in your streaming settings, to some arbitrary spot on your map (out of view of the players), but within that radius… then perhaps do the Humanoid:BuildRigFromAttachments() that @CodeWriter suggested, and then finally spawn the NPC to where you calculate it should be. … It’s just an idea.

The ragdoll package you’re using has a bug in it :slight_smile:

What you need to do is make sure your HumanoidRootPart has its collision enabled after spawning.

Interesting… I didn’t even think about the ragdoll system. I’m not sure if this really is the sole cause, but it looks like @EchoReaper designed the ragdoll system I use to disable HumanoidRootPart collision while the rig has been built on the character, even while the ragdoll isn’t in use.

That being said, this bug is inconsistent enough for me that I don’t know the best way to test whether the ragdoll system was the cause, or if it was a StreamingEnabled issue.

1 Like

Should have just linked my other post on it :slight_smile:

Been having the same issue. Solved it by setting the collisions between characters to InnerBox in game settings. But then there’s that issue where I don’t want players colliding into eachother. Tried a few other ways to disable collisions on characters but they all lead to that bug of the character freefalling on the ground.

It also occurs sometimes which is the worst part and never occurs in studio. So when play testing on studio I don’t get the bug, but on the actual game when spawning as character I get stuck almost 3/4 of the time.

Not sure about the streaming as I don’t have that enabled.


Edit: Found a workaround after all this time. Not the best, but it still works how I want it to.

Script workaround

Since this occurs while freefalling I check for freefalling then set their HipHeight to what it’s supposed to be. But sometimes that doesn’t fix it so I add an extra .5 then set it back. Might be better to place it in a .CharacterAdded event but I don’t have major issues on memory and I’m not too sure if it would work.

local function isFreefalling(char)
	local State = char.Humanoid:GetState()
	if State == Enum.HumanoidStateType.Dead or State == Enum.HumanoidStateType.Jumping then return end
	if State == Enum.HumanoidStateType.Freefall then return true end
	if char.Humanoid.FloorMaterial == Enum.Material.Air then return true end
end


while true do
	for _, v in ipairs(game.Players:GetPlayers()) do
		pcall(function()
			local Res = v.Character.HumanoidRootPart.Size.Y * 1.2

			if v.Character.Humanoid.HipHeight ~= Res then
				v.Character.Humanoid.HipHeight = Res
			end

			if isFreefalling(v.Character) then
				v.Character.Humanoid.HipHeight = Res + .5
				print('Was stuck, perhaps fixed.')
			end
		end)
	end
	wait(.1)
end
2 Likes

I’m also having this issue in my game if I set StarterPlayer.LoadCharacterAppearance to false. It only seems to happen in Studio the first time you spawn in; resetting seems to fix it.

In relation to this, I have Players.CharacterAutoLoads set to false, and am spawning and applying a HumanoidDescription to the players manually. Haven’t tested in a live game, as I will not publish my game with bugs like that.

2 Likes

this issue is still ongoing after months, I myself and experiencing this too

This is still happening Weaponcraft [DEV] - Roblox
With streaming enabled, it seems to set the HipHeight of certain player’s characters to 0 on their client and they clip through the ground and slide.

1 Like

The bug is still happening, only with Streaming Enabled our characters bug when spawning into them. The hipheight gets bugged, we tried even force hipheight and that doesn’t fix it.

We tried StreamingPauseMode on Default, ClientPhysicsPause and Disabled.

Example:

Here’s the game link but we disabled streaming enabled temporarily in the game. Sadly with streaming enabled disabled the game is often laggy for mobile players.

We also noticed that you get weird leg glitches with streaming enabled when morphing:


If there’s any more information required, let me know. :slight_smile:

I tried copying & pasting a character into startercharacter yesterday, and it was permanently stuck sliding around the floor despite the hipheight being set.

It’s like Humanoids are storing some internal properties that devs can’t access

2 Likes

Has this been fixed? Or is there a solution someone is able to script until its fixed?

1 Like

I have seen this bug on Trade Hangout too. It was a one time thing and I thought it was just the one server or an exploiter came. So it’s probably not just Dawn of Aurora.

1 Like

I’ve been continually experiencing this across three different games that I have managed over the last year; the two things that will trigger it are (both are required):

  • Game has content streaming enabled; and
  • The game applies HumanoidDescription which changes a user BodyPart (i.e. removes body accessories)

Here’s my (far out, just conjecture) guess as to why this happens: HipHeight is calculated on the client, and certain things aren’t loaded in at the time of calculation due to content streaming. The problem is, respawning the user doesn’t seem to resolve this - it requires the user to rejoin to have a chance of not experiencing floor sliding.

2 Likes

I’m pretty sure that this is not just the game not being able to calculate the hip-height. I think this is due to the game not being able to detect your avatar for a few seconds, then suddenly being able to detect it. similar issues have occurred to me when free falling over and over again in studio, in piggy, and in obbies. in piggy particularly I’ve noticed it happen frequently on maps like outpost (happening so often that I’ve noticed that in piggy if this happens, your always going to slide to the right guarantee for some reason at high speeds. this fixes when you hit an object hard enough). while in obby games I’ve noticed it happen after I’ve jumped and am about to land on the block (this one is more rare but still happens ever so often) I’m making the guess that when a player is moving fast enough (this is increased by the fall), and hits the ground at just the right spot, then this bug will occur. i don’t know how to check if content streaming is enabled on any of these games (or my own, due to not knowing how to enable it), however that could be an issue in the future if that is the root cause. this doesn’t require the said person to leave and rejoin, it happens if you rejoin as well. (it is possible that the said bugs i am experiencing are a different bug, with similar side effects, as it usually happens after i land on something, but doesn’t happen when i spawn in)

1 Like

My game doesn’t have streaming enabled toggled but it has the same issue.