How to stream in a level depending on user choice

Okay, so the title isn’t very well worded as I didn’t know how to sum it up into a single sentence.

I finished a VR experience for the Rift CV1 a couple months back, and within the demo, once the player reached the end they could use gaze controls to “Restart” the experience. My persistant level is my loading screen, which is just a black sphere with the text “Loading…” inside of it with a small blueprint to stream the main experience level back in. I did this as I didn’t want the user sitting in blackness while they waited, but I also wanted them to be able to still have positional tracking and feel like they were still in an environment so they wouldn’t get motion sickness.

Fast forward to now, and I’ve got a new experience that I’m adding onto the previous one. I’ve created a “Menu” of sorts that gives the user the choice to pick which experience they’d like to do. But now I’m stuck. When they pick Option A or B in the Menu level (Sub-level of loading screen?), how do I communicate with the persistant level (my loading screen) the option that they chose and go about streaming that one in?

Any help with this would be greatly appreciated. Thanks!

Okay, let’s fast forward a little bit. Let’s imagine you now have 20 different levels a user can stream in. What’s wrong with this? Everything is going to be stored in ONE level, which is going to get gigantic and very messy.

Instead, you want to break each level out into multiple levels. Then you can call “Open Level” on that level and feed it a url. The key is to make the persistent level as empty as possible so that the level loads near instantly. You can put the player start location in a hidden box way off the level, then when the persistent level is finished loading, you can stream in the main level and teleport the player to it once it has finished loading. The end effect is that the loading time is extremely short, and the player gets into the game world very quickly, and the rest of the level is either streamed in or loads in the background.