Streaming Enabled Issues

Hello everyone! I am a bit tired of Streaming Enabled and here is why:

First Issue

I want to start with one of the biggest issues in my game and that is Spawning! When a player joins the game, they are bit far and under the map, so players do not see them as they edit their Character. Once they click play, they are teleported to the spawn point, of course, calling the function Player:RequestStreamAroundAsync before teleporting them. Roblox warns us that the function Player:RequestStreamAroundAsync doesn’t guarantee whether the area loaded in or no, and so, is totally useless.

Before doing this, I had the default spawning using the SpawnLocation object, and the issue still occurred with players falling directly into the void.

To account for this issue, I added so when the player goes under -500 in height, they are teleported upward to the surface. The surface cannot be detected since the region streams out sometimes and you end up teleporting the player up in the air, and still you have no guarantee of the surface being there.


Second Issue:

Despite some models being set to Atomic, the items inside of them are not streamed in some rare cases. I am able to check this using the Performance tab that Roblox released for Analytics, and I can see stuff that should have never errored erroring. The errors are the “Name is not a valid member of Instance” on Atomic models that are never changed in any way. (Roblox Says WaitForChild is not required for Atomic models)


Third Issue:

This one is probably related to the Second Issue, which could be lack of memory in the client and Roblox decides to not stream in some parts. Players will experience trees with no Trunk/Leaves and many objects missing parts.


Expected Behavior:

These are the settings of Streaming Enabled in my game:
image

I expect the player to pause in a loading screen waiting for the area around it to stream in if it hasn’t, the current pause for Streaming Enabled doesn’t seem to solve this issue. Everything should load in the requested area, I don’t want Roblox to intervene and decide not to load stuff in since the engine has no idea of what is important or not.

My game has a penalty for players who die, which is losing part of their inventory and they have been suffering from this issue.

2 Likes

We intended that RequestStreamAroundAsync should be used in combination with the StreamingIntegrityModes, so that even though there isn’t a guarantee that the requested area will exist when the player arrives there, they should pause if the area has not been streamed. Are you using either of the pause modes, PauseOutsideLoadedArea or MinimumRadiusPause?

Using a SpawnLocation doesn’t guarantee that the spawn will always be present, it can still be streamed out. Our recommendation is to use the pause modes if possible. You could also put your SpawnLocation, and maybe some nearby geometry, into a persistent model to ensure they are present, assuming you have a small number of spawn locations you would want to protect in that manner.

For your second and third issues, are you able to share a repro place? You are correct that when a model is set to atomic if the model exists all the descendants should be present.

Thank you for the response.

I attached an image showing the settings I have for StreamingEnabled in my game, if it didn’t load here they are:

StreamingEnabled = true
StreamingIntegrityMode = PauseOutsideLoadedArea
StreamingMinRadius = 64
StreamingTargetRadius = 580
StreamOutBehavior = Opportunistic

I understand that SpawnLocations streams out, but the issue relies on them spawning in the right location but fall down to the void.


I am unable to send a repro place, as I myself do not encounter the issue but rather low-end devices.

This is an old image, which is still an occurrence:

Are you saying the spawn locations themselves are falling? Or the player spawns on the spawn location, then falls?

The player is the one falling down, sorry for the misunderstanding. In reality it happens any time you teleport the player around despite calling RequestStreamAroundAsync before setting the CFrame of the Character’s PrimaryPart.

I mention the SpawnLocation, because players spawn and directly fall down into the void without Streaming Pause happening…


This doesn’t happen frequently, I myself when teleporting through the game it pauses, but it seems that for some players is not doing so properly.

Sample Code For Teleportation In Game:

local function Teleport(Player, TargetCFrame)
   local PrimaryPart = Player.Character.PrimaryPart
   if workspace.StreamingEnabled then Player:RequestStreamAroundAsync(TargetCFrame.Position) end
   PrimaryPart.CFrame = TargetCFrame
end

Are you dynamically loading pieces of your game world by copying/moving from ReplicatedStorage into workspace, or anything similar to that? Are you adding things into the workspace just before spawning by any chance?

If you are referring to me doing those stuff from a LocalScript then no, but from the server I clone an armor (found in ServerStorage and is not anchored) into the player’s character and welds with the limbs.

But you aren’t cloning the floor or anything similar, that should be preventing the player from falling, right? Are you using terrain or geometry for the surface under the player?

Without a repro I’m not sure what exactly is going on in your situation. One last resort workaround would be to put some geometry in a persistent model at the spawn locations to ensure it is always present.

I am sorry if I can’t provide more information, the only thing I receive from the players are complaints about the issue every now and then; and they are only able to provide a picture which isn’t enough.


I do not clone any floor or anything like it. I use Terrain in my game and players spawn on top of the Terrain. Though a persistent model under the spawn location could work, what guarantees me that once they move out of that part, they will not fall down the void from Terrain not loading in.

This is the fear I always get with Streaming Enabled, the experience I have had with it, makes me think all the time that some stuff that should be loaded in aren’t.

The players who experience the falling down basically see stuff Streaming In as they fall down the void.


I removed the SpawnLocation last week, and decided to teleport players myself using the Teleport function I mentioned above to the SpawnLocation to see if the issue was going to fix and it didn’t either.

Thanks for the information you have been able to provide.

Are you doing dynamic terrain generation? Or is the terrain always fixed and unchanging?

What you describe happening, which is pause not occurring when it should and players seeing stuff stream in after they fall through the space, should not be happening. I’m trying to learn more about your scenario to see if we can develop any theories on what could be happening.

My terrain is static and doesn’t change.


Here is a picture that someone sent after I added some code to teleport the player back up if the fall down the void. (Client Side This Teleport Up)

Then they get teleported up after going below -500 in the Yaxis:

In my opinion is Streaming Pause not triggering since everything was Streaming In as the player fell down the void.

Thank you for your time.

1 Like