We recently started fully utilizing level streaming for our environments, and it seems like a super powerful feature for optimizing large worlds, for lightmass rendering, and general good compartmentalization and organization of levels. I’m really impressed with the in editor sub-level system and the in-game level streaming system, they are a real pleasure to use.
While the most common use for level streaming seems to be maps containing environments (and every single tutorial I’ve seen on the subject only talks about enviros), I was wondering if it’s also common practice to use level streaming for different game modes or “missions”, or if there is something more appropriate for that.
Here’s a gameplay scenario that I was hoping level streaming might be ideal for, but I’m not experienced enough to foresee potential drawbacks of this, and I’m not sure if this is a common practice for mission / game mode design:
- Building A
- Building B
- Building C
- Mission 01
Where the Landscape, Buildings ect are sub-levels which contain actual environments, but the level Mission 01 is a sub-level which contains no environmental assets, but an NPC character you can interact with and the necessary programming / assets for a basketball jump-shot minigame. Maybe the static basket mesh and the physical surroundings are part of Building A, but a collision volume to detect the basketball, and the basketball itself along with a character giving you instructions are all in the Mission 01 level - and if this level was opened on its own, it would just be a bunch of floating assets.
Then if you complete this minigame, Mission 02 gets streamed in, and the NPC tells you to go away to another location, and Mission 01 gets streamed out once you’re on your way to the Mission 02 location which contains the assets for another minigame.
It seems like it would be a great way to build a game where multiple missions take place in a persistent environment (which is exactly what our game is), but I’m hoping to make sure there’s no better way / drawbacks to using level streaming in this manner before we set this up as our project’s workflow.
If anyone has any insight or could share their experience with stuff that might be relevant, I would really appreciate it :o