Streaming Enabled by Default for All Templates

Hello Creators!

We are excited to announce that starting today, Streaming is enabled by default on all starter templates for new experience creation in Roblox Studio!

As many of you have heard before, Streaming will unlock amazing, large, fast-to-join, and more stable experiences for you and your players.

Thank you for all your amazing feedback and inspiration to make this happen.

Read on for details.

Why Streaming?

As many of you already know, we’ve believed for a long time that Streaming is a game changer. Here are a few of the top reasons why we’re so excited about this technology:

Streaming allows you to create massive, detailed, worlds

  • Our research shows that devs building with Streaming enabled have chosen to have twice as many instances as non-Streaming, and we expect that number to grow.

Streaming reduces join times by ~20%

  • Testing shows that even with more instances, join times improve by at least 20% with Streaming enabled. These experiences have less to load initially, so players are less likely to abort while joining, and can engage with your creations and their friends sooner.

2x fewer crashes due to out-of-memory

  • Streaming significantly improves user experiences by reducing crashes, especially on lower-end and older devices where out-of-memory events are the primary reason experiences unexpectedly stop.

Where to Learn More about Building Streaming Enabled Experiences

We have updated documentation and tutorials with Streaming guidance. If you’re new to Streaming and want to understand how to start building your next experience with this feature, start here.

The templates available in Studio have also been updated to showcase Streaming best practices, including using Atomic and Persistent models where appropriate and incorporating Level of Detail (LOD). Check out the intermission preview in the CaptureTheFlag template to see a prefetching technique and the Move It Simulator to see how to use the pathfinding service with Streaming.

For those considering converting existing experiences to Streaming, keep a look out for future posts with tips and tricks.

Controlling Streaming Behavior

You will find controls for modifying Streaming behavior under the Streaming Workspace properties, shown below. You can use this panel to tweak the way streaming works for your new experience, including modifying the minimum and target streaming radii, as well as the ability to turn Streaming off entirely.

See our streaming documentation for details on these controls.

Your Feedback Is Always Appreciated!

As discussed in our last Streaming post, we continue to work on multiple new feature areas. We also know that there are open issues where streaming behaves unexpectedly. We are actively working on these issues and will have more to share in the future.

We always appreciate your input and feedback on what isn’t working as expected, or where you think we should target next. Please share any feature requests, comments, or issues you may have down below.

Thank you!

213 Likes

This topic was automatically opened after 10 minutes.

Nice change! I really appreciate it! :ok_hand:

Hopefully, even more experiences will use streaming with this change.

51 Likes

Excellent work, this could really help some beginners who aren’t familiar with the technicality of loading everything in chunks.

38 Likes

I believe in its current state, this was not a good change. The documentation and API available are quite lackluster and this will only confuse a big portion of the current developers since a lot of people don’t know how to even use streaming enabled. My biggest gripe with streaming in its current form is the fact we can’t manually control streaming through an API like Streaming:RequestObjectStreamIn or Streaming:RequestObjectStreamOut

117 Likes

Streaming enabled is a good feature and all but honestly I prefer not having it on by default.
The way streaming works doesn’t really fit my coding and game design style and breaks stuff so I prefer writing my own streaming system if I must.

If we could have a toggle in setting where it can be always on/off by user choice I’d appreciate that a lot.

48 Likes

You’ll use Streaming and be happy.

I’m sorry but i still cannot believe in the current model for streaming is any good.

Not too sure about this… My “massive world” crashes on server start with streaming and it only has 15k parts :confused:

Still, personally i would appreciate (and would actually need) a more manual approach to streaming rather than some magic “server does it all for you, don’t worry about it” kind of approach. I would personally want to be able to stream assets in and out directly from disk with my own code as this way, not only the actual asset streaming could be more efficient, faster and more performant (Server dosen’t have to do anything, and usually even standard hard disks are easily over 15x faster than the average internet connection along with the fact that developers will be able to adapt said streaming to function properly with their own games rather than developers needing to adapt their code to some roblox magic feature that isnt even that great in the first place). Would also appreciate to be able to download said assets to disk on a prior place before actually using said assets in the required places. Still right now, i don’t think leaving it On by default is a good idea by any means and i sure do hope it will not get forcefully enabled on all roblox games in the future.

45 Likes

As with what some Developers earlier said, there is a chance this might break games both present and in the future.

If this would still stay as an optional feature, then it would be much easier for new Developers to find and opt-out their game from Streaming Enabled.

30 Likes

I think the same, last time Roblox enabled something on all games it broke most games and they had to remove it (Adaptive Timestepping) But at least this is only in the templates.

22 Likes

Exactly. Amen brother. But the word Request will be interpreted by Roblox as “ok, we’ll maybe™ replicate it in/out, no promises!”

I’ve mentioned my problems I have with streaming in numerous other posts.

24 Likes

Good to see. Recent improvements have made it easier to work with streaming so I don’t think people will have that too much trouble figuring it out.

I still regret though that we have no way to pass a new created part from the server directly to a client (e.g. through a remote function). You need to pass back instructions for the client to find the instance itself, and this gets sloppy because you need to use the instance name to use WaitForChild, but instance names are not unique. We need API for waiting for these parts - my current solutions for this are to pass back the part’s name as a GUID and its parent, or to tag the part and add an ID attribute and let a client-side system register when it streams in/out and handle ID lookup.

Feels like Roblox should be able to handle datamodel level instance GUIDs and their lookup for me. Roblox might even already be tracking some of this internally.

23 Likes

Does this include the baseplate? I don’t want streaming on all of my games, because it doesn’t work with scripts.

16 Likes

it would be nice to have an extra feature where you can stream out specific models, my use case would be for optimization purposes where I would want certain detailed instances not streamed in by a player, similar to how PersistentPerPlayer works but for streaming out models

13 Likes

This is a welcome change. Streaming enabled should be the default, most game genres out there don’t need the whole map loaded.

You can still disable SE.

15 Likes

I like this change, before i did not know what streaming was but now I do! Idk if my experience had streaming enabled, but if it doesn’t I will be sure to enable it! Overall I think this is a good update so uses on older and lower-end devices can play in an experience smoothly!

13 Likes

Doesn’t make it not annoying to disable every time. I’d like a setting to toggle this instead of being forced into it.

17 Likes

There is a setting. It’s under the workspace and it takes 2 seconds to change. Why do you need a setting for the setting? That’d mean doubling the amount of templates + a very beginner unfriendly experience…

18 Likes

One of the first steps of creating massive worlds would be allowing devs to upload heavier places. Right now the publish would just fail if that place file is too heavy or has too many voxel.

21 Likes

Anyone sold on streaming from these 3 bullet points clearly has been mislead into believing that streaming doesn’t come with downsides.

Downsides

As some devs know, streaming is not all peaches and cream. Roblox, ever since streaming left beta, has been intentionally turning a blind eye to these downsides and has made zero progress towards ameliorating them.

Streaming is presented as a “one size fits all” solution

  • This is a flawed assumption on Roblox’s part owing to the fact that their very platform is built around “Powering Imagination”. Streaming can be thought of as a glove; inherently, it doesn’t fit everyone like a glove. You’ll never hear the devs of uncreative cookie cutter games complaining about streaming not quite suiting them/their game.

The developer has next to zero control over streaming

  • When it comes to control, you as the developer, at runtime, have… none. In edit mode, it offers about as much control as a light dimmer, maybe even less. At runtime, you are simply at the mercy of streaming, a backseat passenger, never the driver— a hard pill to swallow for anyone creative.

A codebase needs to be redesigned to work after toggling streaming on/off

  • This somewhat parallels with the “zero control” point, nevertheless if you have a game in development for some amount of time and you (or another dev) wants to adopt streaming, the scripter(s) is going to have to halt development to convert the codebase (mainly the client side) into being “tolerant” of streaming enable. So that leaves the scripter(s) with 2 obvious choices + a bonus choice:
    A: get a fat migraine
    B: quit
    C: Choice A and later Choice B

22 Likes

Update:
I have a Capture The Flag game and when enabled streaming it made everything invisible.

11 Likes