Level streaming OR open level, for levels completely different and not connected to each other?

Hi, just need to find out from more experienced devs out there, what’s the best way to approach changing levels?
As in, the player character being teleported to a level which is completely different and not connected to the previous one. But where you’d still need to carry over all the variables related to the player character, and also save the state of the actors in the previous level for when you need to return to it.

The only problem with ‘open level’ is everything hangs while it exectues. If your levels are pretty simple, that’s not a problem. But once it gets above a couple of seconds, you might want to try streaming.

What’s good about streaming, is you can overlay various things. So you can have a kind of ‘warping through space’ effect during the teleport, while you’re loading the next level in the background. So, no gaps.

Whichever one you choose, you have to do all the save game / level status stuff yourself.

Thanks.
But with streaming, can you overlay 2 large worlds on top of each other, for example? Say you have 2 Skyrim size maps that you need to switch between?

Also, in the case of ‘open level’, what if the level you load next is a persistent level with smaller sub-levels, and you’ll only load the first sub-level first, for example, and you continue streaming the others after that? Would that be more efficient?

I will be using a loading screen in the case of ‘open level’, btw.

Nope. You can only load what will fit on the GPU in one go. But if ( somehow ) you have two worlds that look large, but will both fit at once, then you can.

Everything really depends how crafty you are, it’s possible to walk down a tunnel in one large world, and come out in another. In that case, you only need to be able to fit one world, and the tunnel.

Yes, maybe, it all really depends, like I say.

Efficiency is out of the window here, the question is ‘how can we pull this off?’ Someone wouldn’t choose between ‘open level’ and streaming because of efficiency, it would be because the next thing they want to do with their game can be achieved more easily with one of them.

Also, if you want large worlds, why not just use world partition? That’s what it’s designed for, and it will only load the bit you need next.

Wait. You mean, with level streaming, both worlds have to be loaded in the VRAM, even if one of them is not visible?
The tunnel idea is not suitable for what I’m trying to do. I want to teleport the player between these worlds, he cannot walk from one to the other. And both worlds are completely different from each other (different sky sphere, lighting etc.)
I asked about saving data also, because as far as I understand you don’t need to save player data (inventory, attributes etc.), if you use persistent level + sub-levels (in my case sub-levels being the 2 worlds).
So, I guess, my question would be, in this case, which is better? Open level + saving/loading player data, OR level streaming where I don’t have to bother about saving/loading player data?

Also, what about nanite? I thought you don’t need to worry about world partition if you have that.

Yup :slight_smile:

If you want sudden teleport, you can’t do it. Unless the world a very simple. If you want sudden, you’ve got ‘open level’, that’s it.

As far as saving player data goes, if you mean save game, you have to write code for all that regardless of what solution you use. If you mean ‘consistency’ ( like they’re still holding the same object ) then streaming will preserve that.

You’re not going to get away from having to write the whole inventory / save thing anyway, so it doesn’t really enter into the equation. Best to do some experimentation.

I’ll use level streaming exclusively for now. The async loading alone makes it a must.

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