With Streaming Enabled, as people move around the world, the engine will dynamically load or unload assets and stream more of the world in. Currently, in experiences with Streaming Enabled, the client will only remove streamed in parts when there is insufficient memory. This can improve load times and memory usage, but is not ideal for larger and more detailed worlds which make heavy use of systems such as rendering, replication, physics, etc.
Content streaming relies on both the person’s current location AND the paths they took to get there since they loaded in. Because of this, it lacks predictability with what is streamed in for a client.
To address this we are introducing a new workspace property and enumerated type (enum):
Set the desired streaming out behavior by using one of
- Default - Default behavior, currently same as LowMemory
- LowMemory - Regions removed only in low memory situations
- Opportunistic - Regions beyond target can be removed by engine, even when sufficient memory
Default is currently unchanged and has the same behavior as LowMemory, although this will be adjusted in the future. See below for the adjustment phases.
StreamOutBehavior is set to LowMemory, streaming will behave the same as it does today. Clients will only stream out parts when the client is in a low memory situation. In these situations, the client may remove content until only the minimum radius is present.
StreamOutBehavior is set to Opportunistic, then regions can be removed on the client even when there is no memory pressure. Initially, clients will stream out regions that are at a distance from the player/replication focus that is a multiple of the target radius.
Over time, the logic the engine uses to determine which regions to stream out will evolve, but the client will never remove contents that is closer than the target radius except in low memory situations.
- Starting today, you can opt-into this feature by setting
- Over time, the Default behavior will be adjusted to reflect Opportunistic and you will need to explicitly set the
StreamOutBehaviorto LowMemory to continue using it.
- In the future, we plan to remove
StreamOutBehaviorentirely and only use the Opportunistic behavior settings. It will be some time before the property is removed and we will be rolling out new features to give you more control before that happens.