Do player characters get streamed out?

Hey there! I was wondering, do characters get streamed out like parts, terrain and models do when streaming is turned on? Or should I make my own script for this?

(Wanting to have a 70-100 player servers with little to no lag at all.)

(Streaming: Instance Streaming | Documentation - Roblox Creator Hub)

1 Like

This might not answer your question but if I could bring it up I believe streaming causes lag, there was a game and players said that streaming was causing lag, I don’t know fully if this was true but it might be something you want to look into if you want no lag.

1 Like

No, streaming does not cause lag. It reduces lag if anything by removing not visible parts and thus giving the user more memory to work with.

Still need to know if this is the case or not!

It would be pretty easy to test. You could test in studio by setting the streaming radius to a fairly small number and then running a local test with multiple players and walk away from the other person and check workspace to see if the character gets streamed out or in. If you wanted to test if it worked in game you’d need another freind or a way to use an alt account, and a client side way to display all the characters in workspace.

Yes, characters get streamed out, but whether that is the intended behavior or not is beyond my knowledge given how inherently unstable Streaming is at the moment.

1 Like

I would hope thats intended as thats what I want.

Streaming is pretty buggy, and in most cases actually does cause more lag. It also doesn’t give the developers a choice on what they want to stream out, which makes it pretty terrible to use.

I recommend not using Streaming, as it has more downs than ups. Instead, maybe lower your player limit or world size, and create multiple places.

For my game streaming works really well as theres nothing I dont want to stream out.

For example, the game im using it in (A FPS) has terrain focused maps, it does not make sense from a technical point to leave maps your not playing on, taking up memory.

It also does not make sense to have the map taking up memory when you are in the menu screen. (Which is on a diff island.)

You can play here to see what I mean: Blox Royale: Battlegrounds - Roblox

1 Like

Has it caused more lag for you? And if it’s buggy, what bugs has it caused for you? I’m curious, so that I know about any bugs.

I really don’t see a lot of drawbacks.

For me I haven’t run into any bugs yet, and using streaming was a literal godsend. Cut my game’s memory and load time in half, and I think streaming (or at least some form of it) is essential for bigger games. It also hasn’t caused any more lag for me, it reduced it by a lot.

Really, the only drawbacks to using streaming is that you have to code while keeping in mind everything isn’t going to be available at once, so you have to code with things like .ChildAdded so that parts getting streamed in and out are accounted for.

1 Like

Biggest drawback is you can’t choose what to stream. It forces you to stream by radius, meaning you can’t choose specific parts to keep rendered or not.

It also renders and unrenders parts as you move around, which will actually cause MORE lag for low end devices, because of all the rendering it has to do. Using terrain could fix that, but terrain is also much more laggy than parts, so it kinda balances out there.

It also adds strange bugs, such as randomly dying, and other things.

(I’m not sure how true this is.) I believe once a game renders a part of the map it caches that to be used later so its not rendering it over and over. If it did it that way then theres not really any point.

Also since when is terrain more laggy then parts? Terrain is much more optimized then parts are.

Large amounts of terrain cause lag, and especially the load times. Load times increase heavily when introducing terrain, especially water.

Don’t use StreamingEnabled, split your game into multiple places. To reduce lag, optimize your scripts, and try to lower parts/terrain.

You can’t have a lag free game with a lot of players, 70 players is going to cause a bit of lag even if your game is well optimized. Look at the test sessions of people using the new 700 player servers, the game basically dies at 200.

See I cant split it up into multiple places, its a FPS game.

What does that have to do with anything? Is it a round based FPS game? If so, why do you need to use streaming? Can’t you simply put maps in ReplicatedStorage when they aren’t needed?

The maps are made of terrain… :confused:

First off, @KdudeDev I use streaming in my game and it only had a positive impact on performance. The game runs fine and lets it run on devices with much lower memory. I agree that streaming is missing some useful features, but even as it is, it can already be useful for large games.

As for the original question, yes, the character’s BaseParts do get streamed out when at a far enough distance.

Also, a few tips;

If you’re going to teleport the character, do it from the server-side as it makes the parts stream-in faster for the player.

Content streaming revolves around the character by default, so if you want to stream in areas far away from the character or if you dont have a character, use the replicationFocus property (Player | Documentation - Roblox Creator Hub) to change the focal point of the streaming radius.

4 Likes

What? Where are you getting all this stuff from?

The only drawback I understand is not choosing what’s getting streamed, I get that. I do wish StreamingEnabled had more control, but as @Enqrypted said, it’s pretty helpful as it is now. But all you keep emphasizing is this one drawback alone which in the general scope of things isn’t even that big of a drawback compared to how helpful streaming can be for performance. Okay, you don’t get to choose what’s getting streamed in or out. Just code around it, it’s not that hard. The good of streaming outweighs the bad most of the time, especially for bigger games.

Also, I’m pretty sure terrain is more optimized than BaseParts, but I could be wrong there.

Terrain and water DO increase load time and memory by a lot, but that’s what StreamingEnabled is for. If you want a benchmark, my game is currently a 4684x6220 full terrain island sitting at around 35k parts right now, with an ocean of terrain water going out by at least 100-200 studs around the island, about 5 studs deep. Before using streaming, it would take 30-40 seconds to load (and it was before we even reached that point) and would use up 1200 MB of memory. With streaming, now it takes literally 10-12 seconds to load and the memory was cut in half. FPS was increased by at least 20.

The only true “bug” I have encountered really is Atmosphere flickering. But I’m not sure if this is caused by streaming. I keep hearing that streaming is buggy but I haven’t run into anything really. The only major thing is that you’ll notice some scripts that previously worked before streaming will not work well after it is enabled, and you can just fix that by coding while thinking about the fact that things are going to get added and removed, so connect your code to the needed objects by using events like ChildAdded, .DescendantAdded, etc and disconnect events on objects streamed out using .ChildRemoved, .DescendantRemoving, etc. You also only need to do this for LocalScripts, because streaming is only happening on the clients, so the whole game will always be available on the server.

But “randomly dying?” What? And what other things? It just sounds like you’re making streaming sound way worse than it actually is. It’s not terrible at all.

@OutlookG What I have to say to you is only use streaming if your map is big and uses a good amount of terrain/water. Otherwise I think you should be fine with BaseParts if your count is <50k and the unions, meshes, and scripts are optimized.

2 Likes

Well I did some tests, without streaming memory goes up to about 500, with streaming it goes down to 300.

The only problem I have with it is that if you set the radius too low the terrain will start to look deformed and ugly.

Yeah, that’s expected. I use the default radius (1064 i think) and it looks fine. What radius are you on? You shouldn’t have to use something really low

Also if your maps aren’t big you really shouldn’t need to use StreamingEnabled. It’s more for bigger open-world games with big terrain maps like Jailbreak and Mad City, etc