Clarification on streaming enabled Persistent mode sentence

Hi! I was wondering if we can get some official clarification on this underlined section from the documentation about Streaming Enabled?

Specifically, do Persistent models somehow have an extra performance impact beyond what a non-streaming-enabled place + a regular model would have?

eg: let’s say I have a gameworld that’s not particularly complex but I want to use regular streaming enabled for roughly half my 1000 models on a large terrain, and the other half using Persistent?

Thank you!

5 Likes

you shouldn’t use persistent models too much as it pretty much negates the benefits of having streaming enabled in the first place as those models, instead of dynamically streaming out, stay loaded in as if streaming wasn’t enabled and take up memory and performance
when possible make your scripts tolerant of models streaming in or out as it drastically saves on performance

Yes but is there any drawbacks besides that?

Our main concern related to performance is that the improvements to join time and client out of memory crashes with streaming would be reduced as more of the workspace is made persistent.

Beyond that there aren’t performance impacts from using persistent models, unless what is in the model changes frequently. If the contents of the model changes, or if the parts in the model have changes to their physics connections, there are updates the engine must perform to ensure that that is reflected correctly on all clients. Those updates are currently more expensive than we would like and we are working on improvements.

If you have a persistent model and you aren’t making dynamic additions/removals to it then we would not expect to see much performance impact.

7 Likes

Thank you! This is great info and will help us devs make good decisions.

In light of my clarification do you think the documentation is sufficient? If not, do you have a suggestion how we might improve it?

1 Like

I think the documentation should be changed, yeah, because according to your explanation persistent models are meant for circumventing streaming, but with a big ol’ asterix next to it :slight_smile:

Right now the original explanation is kind of scarily worded - the whole reason I asked is because of concerns about even using streaming enabled in cases where we needed a bunch of Persistent models for visual landmarks and stuff.

Maybe something like:

Overuse of Persistent models is not recommended or intended. It undoes the benefits of Streaming Enabled, such as shorter join times, lower memory usage, and better rendering performance.

Persistent models are intended for the rare circumstance when you absolutely need to circumvent streaming for unavoidable reasons. The most common use case is models that are required for LocalScripts to work, such as distant quest markers, triggers, or other landmarks.

The performance cost of a Persistent model is mostly the same as a regular model without Streaming Enabled. The exception is if what is in the model changes frequently. If the contents of the model changes, or if the parts in the model have changes to their physics connections, there are some extra updates the engine must perform to ensure that that this is reflected correctly on all clients.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.