Updates to Streaming Enabled

Super excited to see where this goes! Making a customized setup for this that still ‘works’ with streaming has been pretty challenging, but seeing it all “just work out of the box” would be magical, to say the least.

4 Likes

this was probably answered and i’m just a bit blind but, is there a fix to rod constraints disappearing?

1 Like

Improvements are always welcome!

1 Like

I really appreciate the transparency in these posts recently. There has been a tremendous improvement in this regard over the past few months from Roblox.

Many of the new features you are exploring are evidently very highly requested features and I really appreciate how much effort is being put into streaming enabled. It has been such a limited feature for years but recently these updates have made it infinitely more useful

1 Like

being able to work with multiple Terrain instances would be amazing - expanding the usability of the almost-unheard-of TerrainRegion class would be a great boon. It’s always been tough working on multiple islands when they’re all considered one object!

4 Likes

I do have the ask, what does “massive worlds” really mean? I personally have quite the massive world for one of my places and using streaming would just cause it to crash the server on start so uhhhhhh yeah. Not helping the fact that my “massive” world is more of a massive grass plate with extrusions in different directions. Personally ive never had a good experience using the built in streaming as it often loooves to do its own thing along with the fact that im not sure how to feel about having the server waste resources on handling the swapping in and out of very specific assets for all its players. So with all these things in mind, i just have a relatively simple request:
Can we just get some sort of api designed to let developers store and request game assets to and from disk? Basically something roblox already does but mainly just to automatically cache a few games to disk for quicker (and WAY quicker) loading in said game after the first initial join. Like to be honest thats kinda all i really need, just some sort of system that would let me store and get various assets (like textures of different resolutions, meshes of different quality levels, models of different quality levels and etc…) and just make my own specific streaming system based primarily on the client. Or would this be too unreasonable to add because of the fact that some people will try and push 10 gigs worth of junk onto peoples disks? I mean i guess but dosen’t the current asset cache system already have some sort of limitation for these scenarios? Pretty sure it does not store games in cache forever and will eventually delete them after not playing said game for quite a while but i could probably be wrong about this. Still, is this something we could just have? This sort of system would help developers ACTUALLY (and hopefully) make real massive and detailed worlds without crippling or just straight up killing the server in 2 seconds. (Would appreciate if this sort of adding and requesting assets to and from disk could be done to also add assets in other places designed to keep players in them one way or another and have said assets requested from disk in the places that they actually reside in)

2 Likes

I’m very happy to see that the Roblox team is starting to improve their communication with users and developers on the platform- this is a great thing which should be encouraged.

With that being said, very excited to see what the team is thinking about. Per-Instance Streaming Controls and Regional Streaming sound especially exciting!

1 Like

Streaming automatically from disk would be great after it’s downloaded from network, could also persist between sessions and speed up load times even more

2 Likes

Yeah, that i was asking for in my last point! Would be a game changing feature to have!

1 Like

This would be a huge resource for developers. Even if streaming can eventually make all custom optimization solutions obsolete, we still need those solutions during the months/years it takes for improvements to roll out and become stable.

It’s also something that will probably always have use cases no matter how good streaming natively is. There are just too many conditions and circumstances in which a client will need access to something in the server’s datamodel that no other client should have access to.

I have several use cases in my games where things need to be replicated to a single client, that aren’t supported by streaming (or even planned to be in this post):

  • Inventory/shop ViewportFrame models
  • Large UI menus rarely accessed
  • Model placement visuals
  • Fog of war
  • Skins/cosmetics

If we could set instances to not automatically replicate unless a player was added via a method similar to Model:AddPersistentPlayer(), that would cover all these cases and many more.

2 Likes

Question: If I want a large model to be persistent, but the models /within/ the model not be, how do I do that?..

I have a base model with a primary part and a few other parts, of which I want to all be together, but within that model there are details I want to stream out. When testing, it seems like even when I set models specifically to non-atomic within an atomic model, everything inherits what the base model was set to - so, atomic. Assuming this applies to Persistent as well.

Considering this means that a Map contained within a model loaded in cannot have any part of that map in the model itself set as Atomic, without putting the parts within a redundant second model, this is either me misunderstanding something or a massive oversight…

I’d assume Default should inherit what the model above it is, but if I specifically set something to non-atomic, it should be non-atomic, and ignored during it’s parent model’s atomic load-in.

2 Likes

Does anyone know why Streaming Enabled is lowering performance when the min distance is set higher?

For reference: Because everything is still within the Target range, this isn’t actually loading in anything new. It is just lagging a lot despite the min distance change not loading anything more in…


(The game crashed immediately after this.)

I have spent like a dozen hours in my game attempting to get Streaming Enabled to work and I continue to find new and cruel roadblocks. Guess the setting goes off again - Maybe one day I will be able to publish this game update months in the making at this point…

(No seriously somebody help me figure out what is going on I am losing my sanity)

EDIT: Likely caused by repetitively trying to load an area in a localscript loop. Would love a way to ‘keep’ an area loaded.

1 Like

Seeing the feature I’ve been proposing for months now actually be considered… :sweat_smile:.

This is an excerpt of a post I made on an older topic:


In all honesty, the route taken in the development of streaming enabled is botched like you wouldn’t believe. It truly blows my mind how selective replication has yet to be implemented despite the fact that it will undoubtedly pave the way for further improvements to streaming enabled. What I mean by this is that rather than just giving developers arbitrary features they think they need, give them the ability to craft their own custom streaming functionality so that they can both confirm that they need it- but also not delay or outright abandon their project waiting for a feature to be implemented.


Words of wisdom by @tnavarts:


1 Like

Hach is on my team lol. We both clearly where unaware of this feature, ill be shore to look into it, thanks.

1 Like

The trains are operated by players, not the server, hachiroku’s personal game, and my game (co owned by hachiroku) allow the players to spawn a locomotive and cars, drive a locomotive, and assemble there own train. While my game current game tends to not have an issue because trains are shorter, hach’s game has much larger locomotives, and much longer trains, because of his issues, there is concern for my next game in development (co owned by hach) to have the same issue.
Because the train is physically controlled by the player and not the server, is it still possible to use the options you mentioned?

1 Like

Yes?.. If you just read what it says they do on the API it’ll be quite apparent that this method works.

an Atomic model loads in all at once - if the front is loaded, so is the back.
A Persistent model will always be loaded in.

If it doesn’t work with that, you’ve got bigger issues on your hand.

Make sure you’re setting physics ownership as well, please.

2 Likes

That feature would be reaaly insane for alot of reason :

  • It will make experience more playable to low device to low device (already see me adding this feature on my npc)
  • Do not make Instance Replication to model only but to every instance so for example i load my player’s data on Player object and some data don’t need to be replicated to everyone (for example player Inventory,…)
3 Likes

Excluded Mode + Streaming Controls Outside of Models would make data replication so much easier.

I’ve been doing a mix of SetAttribute / Values with folders, but the main fault is data other players don’t need to know - both in terms of excessive quantity of data, and privacy of data. Being able to exclude certain folders or ObjectValues from specific players would make this much easier.

The main benefit of this over RemoteEvents is that built-in ChildAdded/ChildRemoved/ GetAttribute/GetProperty ChangedSignals can easily listen for modifications, and have a clear previous data-set making it easy to tell what data needs to be updated without re-sending the entire thing every time data changes.

I know Streaming is generally for more concrete things, but this would make it very helpful for the abstract as well.

5 Likes

Having streaming enabled using a terrain map can cause the player to fall out of the terrain because the area is not loaded fully.

1 Like

Hello, I am currently facing an issue where the server memory of my games goes up every time a player streams in an area of significant part count. This doesn’t go down afterwards, and sometimes repeats if a player streams out the area then streams it back in again. Is this an intentional feature?

Thank you

1 Like