What's Next for Streaming - We Need Your Feedback!

Maybe a new icon or look or a new website

1 Like

Streamed displacement maps for material variants.

1 Like

When it comes to performance, making environments like forests with high detail models in huge size maps is still a tedious task to take on when it comes to making it run smooth on all clients without creating a custom rendering system. It seems that when graphics are at their highest, the client just decides to load everything in the game, even if it cant be seen (fog/density, even with opportunistic on)

I think implementing a minimum (and maybe a maximum?) ‘render distance’ in the Model class; If your character gets within a certain distance of a model, load it and keep it loaded until they get out of the set distances (or looks away) would work best for the capabilities of Streaming.

2 Likes

Camera points and cutscenes tend to bug out for me when using StreamingEnabled. It would be greatly appreciated if models load in at a set spot away from the player as well, along with streaming for terrain.

2 Likes

Not quite sure if this is related, but I would love the ability to create games with worlds so massive that extend past the “floating point”, where instead of about a million blocks out it would be further. Could that have to do with streaming as well?

1 Like

We seem to have ran into some problems with scalability and large player counts.


Using Opportunistic streaming puts a lot of pressure on the server when there’s a lot of players loading and unloading chunks of the world.

Switching to LowMemory eases this pressure off the server, but it has a few obvious problems:

  • On devices with a high memory ceiling, it’s less likely parts of the world will be unloaded. Our map wasn’t built super-well optimized because best practices were not well documented.
  • Users with limited memory are able to keep hitting that memory ceiling more often than necessary.

Ideally there should be some kind of option that balances between these two extremes. Something like Opportunistic, but with two-way respect for balancing the performance of the server and client at scale.

If it already works like this… then I guess we’ll probably have to look at more aggressive optimizations on our end? Ideally the server slowing down shouldn’t be that big of a deal for the playability of our game. There’s just a lot of compromising balances that have to be made.

10 Likes

How many players is that? (also extra characters because devforums)

2 Likes

Can we set what this acts as by default?
image

Heck having a second version that prevents the model from loading at all into those that weren’t added would allow creations of very precise custom map chunking systems, I’m looking forward to a possible change like that! :eyes:

2 Likes

I suggest STREAMING GROUPS
same way you can make collision groups make streaming groups
that have their own settings that override the things inside the group such as a custom range, who loads it, will it always be there

would be extremely handy to have

1 Like

Streaming is honestly still a mess for large physics assemblies and can lead to high ping all over the place. I’d really just like a way to stream only Terrain. Terrain is one of the few features you can’t really write your own streaming system for. My game runs perfectly fine at large playercounts with streaming turned off, but the terrain load times become insanely long due to having multiple trying to load a massive-scale terrain object all at once during a map change. I think in general streaming’s “we know better than you” approach is annoying, I’d rather manually toggle what IS streamed than have it decide on its own. Basically just give me a ReplicationService without the blackbox autostreaming stuff

6 Likes

@ffrostfall, @Reditect, @TwentyTwoPilots

Can I ask you all for specific reasons why you want to be able to tell different objects to Stream In at different radii? Is there some kind of “gameplay logic” aspect to this, or are you specifically requesting these for visual reasons because you want to control when some things are visible?

For example, if you want something big far away to be Streamed In, would your use case be satisfied if we had a much higher quality “Level of Detail” Model that looks just as good as the full detail set of parts that make up the model?

The reason I am asking is because internally we’ve been trying to separate the “visual” side of Streaming from the “Streaming Radius”. The purpose of things withing the “Streaming Radius” is to be available for the purpose of scripting and gameplay logic. This means when you need something to be visually present, but it is not crucial to gameplay logic (or script logic) we would want that scenario to be properly handled by a rendering LOD system long term.

We do recognize the current Model LOD system is limited today, but there are entire teams working on improving our solution to visualization of Streamed Out parts within the company.

4 Likes

LOD isn’t even part of the equation for me.

I want to be able to stream unimportant props out of the game entirely at tighter radii to improve performance on low-end devices.
I’d also like to keep things like roads or landscape streamed in at higher radii, partially for the visuals, but mostly to prevent players from driving into the void because the streaming system didn’t prioritize the landscape as they were moving. Right now we keep all our roads streamed in permanently with a Persistent model, which is sort of overkill but because we have no way of prioritizing streaming roads, it’s the best we can do. Physics pause mode is not a solution here either, it’s disruptive, players hate it, and it hurts our session lengths when its enabled.

I want the ability to fine tune streaming more, I don’t want to be stuck with black box solutions that offer no fine-tuning or optimization whatsoever.

8 Likes

If I’ve got a house on a mountain, and that house has a bed in it, someone who’s 2K studs away will be able to see the mountain. But they certainly won’t notice the house, or the bed. However, if they’re 1K studs away, they might be able to see the house, and the mountain. But they won’t be able to see the bed. If they’re inside the house, then they can certainly see all of it.

We aren’t asking for this because of visual reasons or gameplay reasons, we want to use StreamingEnabled in a way that gives us even more performance gains. A per-object streaming radius would give us the ability to do discount “occlusion-culling”. If we know that something in, say a house, isn’t going to be seen at a certain range, then we can not have it rendered, therefore saving performance.

This is vital to improving performance on extremely large-scale maps, and I’ve seen many developers implement their own systems like this.

Also quick edit to say: Thank you so much for actually caring and the transparency. It means a lot.

4 Likes

Hey, I’d say it’s mostly about visuals. Rocks, grass, and flowers. Many games have a system where small rocks are loaded into the word differently compared to other objects.

I’m trying to reproduce a similar effect to Kao the Kangaroo or Spyro the Dragon.

If it helps, I can provide a video when time allows.

2 Likes

Something that isn’t listed here is the ability to detect if a part is about to be streamed in or out. We also cannot determine the level of detail of a model calculated by the engine, and we cannot make our own adjustments to them according to the level of detail.

2 Likes

huh isnt streaming that you are live on a…

2 Likes

you can know if a part is streamed in or out by using TagService.

1 Like

Be able to chose which objects are Streaming In or Out would be really cool.
First of all for perfomance it would be a cool feature for low-device.
And i was thinking about maybe make NPCS server side (not sure if it would be laggy but i don’t think so)

2 Likes

Yes, but that’s not as performant as an RBXScriptSignal.

1 Like

What do you mean ? CollectionService have event
CollectionService | Roblox Creator Documentation added
CollectionService | Roblox Creator Documentation removed

2 Likes