Players fall through terrain when teleported with streaming enabled

In a game with streaming enabled, StreamingIntegrityMode set to PauseOutsideLoadedArea and a large terrain map, when I pivot the character of a player who has high ping (>100ms) to a far position using code like this:

if workspace.StreamingEnabled then
    player:RequestStreamAroundAsync(pos)
end

player.Character:PivotTo(CFrame.new(pos))

like 40% of the time the terrain doesn’t load fast enough, and the game isn’t paused so the character just falls through the terrain below. RequestStreamAroundAsync is successful and there are no errors in the output.

It happens both in studio with replication lag and in a real server with ping emulation. I think it could also happen with lower ping, but a lot less frequently.

Streaming settings:

May be related to this report: Users Phasing Through Terrain

Expected behavior

Game pauses until terrain collisions are loaded before the character can fall

A private message is associated with this bug report

1 Like

I’ve tested with the place file you provided (modified slightly to CFrame randomly when pressing E) + 1 second of replication lag and I can’t reproduce after dozens of tries.

Is there any other configuration needed to reproduce? Can you test again with the place file and make sure this is still reproducing for you?

I tested it and it didn’t reproduce, but when I added this server script which limits fps it started happening again sometimes. So it probably depends on the performance of server or client.

local RunService = game:GetService("RunService")
local MaxFPS = 10
while true do
	local t0 = tick()
	RunService.Heartbeat:Wait()
	repeat until (t0 + 1/MaxFPS) < tick()
end