Big Changes to StreamingEnabled

The need for optional atomic model streaming, as well as ability to prefetch parts of the world / instances and some way to explicitly control the streamed status for instances is known.

We are starting from a very small API surface (as you can see, the changes this post mentions are mostly about behavior / internal improvements / high level control); once all of this “just works” we will be ready to provide extra APIs for enhanced control, but the focus so far is on improving the default behavior assuming no extra scripting.

44 Likes

I am really happy to see that StreamingEnabled is getting some new features!

Unfortunately, I don’t see myself using it yet as there isn’t a way to reliably Stream In/Out specific models/parts. This is a feature that is kind of necessary for many developers to turn to StreamingEnabled.


Another thing - the paused UI.

Look - I mean it looks pretty good and has a great design and all, but I feel it’s a bit jarring and takes the player out of the game. It doesn’t feel like the game is paused, it feels like I just got disconnected. It’s backed up by the icon - the symbol known for Wifi with an exclamation point. This makes me feel like maybe it’s my internet or something.

These are two very good points - this UI is the default so many games will use it, and also a symbol that represents loading a little more would feel better.

These are all things that have been clearly voiced by the community, but I do hope to see some more improvements on things like StreamingEnabled. I can’t wait for what the future holds!

7 Likes

Is it possible to use Workspace.StreamingPauseMode to make a pause button for your game?

3 Likes

I like the pause feature! It would be great if we got more fine-grain control over the physics engine and replication.

3 Likes

Can streaming be based on the camera and not the player character position? Using streaming in conjunction with spectate buttons almost always results in script errors and/or the majority of the map not being visible. Streaming based around the player’s character also makes cutscenes and games with custom characters basically never render anything. It essentially makes this feature useless for anything that moves the camera away from the character.

Along with forcing replication of certain parts, this is my biggest gripe with streaming. Hopefully it can be addressed.

13 Likes

I haven’t read the full topic, but I can tell this is going to be a very GREAT Update! I also hope to see the features requested in this topic to be added, as well.

Instead of streaming out parts if they are taking up to much memory I hope streaming enabled will be made to stream parts out based on render distance as well, and make it so developers can configure when, how, and what parts are streamed out or into the client as well.

3 Likes

Imagine playing a FPS and this happening. Reminds me of when my batteries used to die playing call of duty.

3 Likes

I think that having a bool value (CanBeStreamed) for each part would make all the issues with streaming go away, especially with this update. Additionally, I think that having this value for models as well would be great too! For me, being able to keep spawn locations and specific parts/models from not being streamed would be a lifesaver and would allow me to actually use streaming.

5 Likes

Same problem pretty much, I have clouds which are high up, and they keep getting streamed out, also when flying aircraft there are chances that once the aircraft is streamed back in, its welds change bc of how fast it flies.

3 Likes

Like many of the other developers here, i am also concerned with the lack of instance specific control. Is this something that could be implemented in the future? If not, then i’m sure everyone here would like to know why. Good job with the improvements though!

3 Likes

StreamingEnabled + Model LOD = big worlds and big projects

3 Likes

I also find StreamingEnabled useless as this moment in time. I’d find it better to make players wait and get everything loaded in for a smoother gameplay and user experience. I’ve noticed StreamingEnabled games whilst playing and it’s a very frustrating experience having to wait for areas to load in around me and very often resulted in myself not playing.

Only 8% of the UK has access to FTTP based internet meaning it’s generally a bad time with streaming here for a variety of reasons and not just what I just mentioned. If you’re interested in more information about this feel free to reach out privately.

4 Likes

A absolutely welcome any updates to how streaming works right now. Unfortunately I am concerned about a few things.

-The pause screen
I heard you can disable it but I think developers should have more control when it comes to the UI

-Scripts will not work properly if items are not loaded in that they need
This is kind of worrying especially since streaming will be turned on by default in the near future. Perhaps developers should have the ability to force stream certain parts?

Contrary to my concerns I am excited to see where this will go as streaming has HUGE potential.

Edit: Just a thought. We can disable the screen and just throw a GUI up when the Paused event fires.

1 Like

You can set the replication focus to be the camera and this will result in streaming occurring around that location.

3 Likes

The StreamingPauseMode is not scriptable, and the current pause state is read-only.

2 Likes

Thank you, this is a good step forward!
I love to see any update towards Streaming enabled as it directly impacts my game.
I will have to see how Gameplay Paused works, but I think it should be useful for many cases. As I recently noticed, sometimes players could fall of the map as they were walking in an unloaded terrain.

This is a fantastic improvement, however it’d be appreciated if we could get more control of streaming from the scripting side.

Additionally, will the gameplay pause feature ever be exposed to developers? It’d be neat if we could make our own pause systems (e.g. for singleplayer games)

4 Likes

The new update to define where to stream by setting a players Replication Focus variable has solved one of my largest issues with StreamingEnabled, and has made several of my projects work with StreamingEnabled.

Example situations of when my games would not work, but began working:

  1. Anytime a character is not used (ie rolling ball, car driving)
  2. Whenever a player needs to be respawned/loaded to a new area, yet the area is not loaded.

Next, I need the ability to define what parts to keep permanently loaded onto the client. This affects the following games:

  1. When playing a racing game, the ground may vanish or other vehicles may vanish.
  2. When playing a shooting game, the shooters in the distance may disappear, or important cover spots may reveal hidden shooters.

Thanks for the update, and please update to accommodate to my and many others needs to make streaming more viable.

8 Likes

Hey, I’ve been super critical of streaming in the past, especially when I was working at Roblox on the Reference Team. In fact, we were totally blocked on streaming for our Battle Royale game then that we had to just turn it off, which resulted in a really long round-beginning time because everyone had to load in before the flying bus could start moving…

But ever since this change, I’m actually really liking it! This is exactly what we needed for it to be a useful feature. I’ve noticed in my game, Bootleg Buccaneers, that distant terrain is actually visible, but at a very low LOD. This is fantastic! It was a huge blocker before, since my game involves sailing across big patches of water to distant lands. If you can’t see that land, you’re gonna have a really hard time navigating. I’ve turned it back on and I’m using it to great success. My game actually runs on toasters now.

I do have one further request: I would really like to set some parts as “always loaded.” I know that this feature will probably be heavily abused by a lot of developers, but it’s pretty important in my case, because I use some parts as location markers. For example, when you’re doing a quest in BB, you will have an on-screen location marker. However, when it can’t find the part in question, well…

I could work around this by having the server send these locations to the client, but adds a little more complexity to my code when it could be an engine feature that has many other uses.

16 Likes

I’ve been getting quite some reports from Xbox players that, whenever I enabled the client physics pause, only roughly the minimum range would be streamed in. When they walk around a little bit (out of the initially streamed region) the physics pause would trigger and last for a very long time (minutes) or some claim seemingly forever.
Whenever I disabled the physics pausing everything worked perfectly fine again for those users, everything streamed in up to the target range quickly.
Doesn’t seem to affect PC players at all, and not all Xbox users seem affected either. All affected Xbox users have an up-to-date client too.

Got to say that StreamingEnabled seems to behave completely reliably nowadays, though, which is great!

4 Likes