streaming - proof of concept

i am trying to figure out how to implement streaming into my project. i was wondering is it possible to have different scenes in project that will have different sets of objects and they could be streamed when i need them? ofcourse that could be done, but i have some questions.

1.the size of the build? is going to be veeeeery big, or the size will not be that big because they will be streamed anyways.

2.i will have many objects in the core scene, like camera, lights, 3d interface that will be used in other scenes, does every object need to have DontDestroyOnLoad?

3.so, if the new scene is loaded (streamed) and then i want another one to be streamed but then i dont want the previous one that was streamed to be destroyed, so that means that every object in the project need to have DontDestroyOnLoad() in the Awake()?

any help appreciated! thanks!

  1. is difficult to answer without having any numbers - but, yes it is possible to distribute the build size into separate downloads, and have a very small main unity3d file, and stream everything as needed. Getting this right requires a lot of planning of where to store which data, when it needs to be loaded, etc, and is not trivial at all.

  2. yes, DontDestroyOnLoad should be used for things you want to keep around when loading new levels.

  3. note that there is also Application.LoadLevelAdditive(), which will load a new scene without unloading the currently loaded scene. This is well suited for streaming terrains, where you want to load new parts of the terrain as the player moves around.