Parts are in sleep state if too far away!

I am trying to make a jenga tower game, and for smoother physics simulate it on client. The parts in the screen shot below are network owned by the client. I have also toggled the “Awake Parts” (which is seen by the outline on my character) to show that the parts that are close to the character have already fallen, but the ones that are too high up just dont fall. I have tried many ways to awake them but the only way to fix this right now seems to be just making them server owned, which is not ideal.


To replicate this just spawn a part very high up and make sure its client owned. It will just stay in sleep state and not fall until you get close it or manually move it closer.

1 Like

Hi, thanks for posting!

Can you please send a repro? Just want to make sure I replicate the exact behavior you’re seeing.

Here is just the jenga tower from the screenshot. It seems like clients have a maximum range in which physics work. If you try to spawn the tower from the server it falls fine. The Client is the problem.

jengaPlace.rbxl (64.8 KB)

1 Like

It’s the intended behavior of streaming enabled.
For some reason, they made client sided object physics not work when it’s outside the target radius. The solution is either increase the maximum radius or disable the streaming enabled.

1 Like

Yuh thanks for help. Seems like the only solution for now. Il still leave it open for now if devs come back but otherwise i think thats the solution.

I think it should be like that, because that makes the game run faster

As @maxim01689 pointed out, this is the intended behavior of Instance Streaming.

As discussed in stream out section of the streaming docs, the top parts of the tower are being streamed out because you are reparenting them from ReplicatedStorage into the client’s workspace. If you clone the tower instead, they won’t be streamed out:

local tower = game.ReplicatedStorage.ActualTower:Clone()
tower.Parent = workspace

task.wait(3)

for i, v: Part in ipairs(workspace.ActualTower:GetDescendants()) do
	if v:IsA("BasePart") then
		v.Anchored = false
	end
end

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.