Multiplayer level streaming

It’s been mentioned in another thread

"The other thread"

I was wondering how this would pan out in multiplayer, seems hard to wrap my head around it, how would the server calculate the position of players?

The idea sounds good for Spacebuild and StarwarsRP where you land in a planet and a level loads, thinking about how props interact between one level and another gives me a headache though.

Will it even be possible?

1 Like

Normally the engine is already able to have large maps, and streaming is mostly used to reduce strain on the client, so they don’t need to run everything at once.

While people’ve been throwing around “just level stream in source 2” I’ve not personally seen much to do with source 2 actually doing level streaming. The closest one I can think of is the ‘recent’ dota 2 event which had a semi-random dungeon crawler experience. IIRC it used some map stacking method and actually still stayed inside the source 2 map bounds.

If you wanted to do level streaming within the bounds of the current source 2 limitations, I think you’ll have to be passing players around servers that control a different map, with some connection handling to make it transition well.

in the context of spacebuild / starwars RP, you’ll have to hide the servers behind some kind of ‘warp drive’ or something similar. Another possibillity would be to share the map edges with other servers, but people’ll probably be able to notice when suddenly an entire map worth of players pop in.

Realistically, I think we might get actual level streaming after they expand the current map limits, we are able to load maps inside maps already.

3 Likes

Some MMO’s use servers for each chunks of the map, there is a seamless transition between servers and maps. This is one of the Level Streaming methods.

2 Likes

I think my usage of s&box will greatly depend on if they support level streaming in some manner.

1 Like

This issue reminds me of the idea for same-server instancing, where there are multiple universes that normally do not network with one another that players can teleport between.

You could link instances that are adjacent to each other so that they’ll network the things that are happening if not occluded. You could add a fourth argument to GetPos/SetPos for their instance/scene, to literally exponentially expand engine and byte size limitations.

Of course you’d have to do some engine editing and I’m not sure how optimized it would be, but in theory it would allow for practically infinite worlds. With the greater control over networking we’ll probably see something similar to this idea eventually.

If adjacent instances aren’t practical then separate-space instances would allow things like stopping at a bus stop or taking a space shuttle to do a transition and then landing in new play spaces that each take full advantage of the limits of the engine.

3 Likes

That could also be cool if youre planning on remaking a game like subnautica that would be nice as coop, but not with more than a couple people. You could have multiple groups of people playing your game mode without needing a bazillion servers

3 Likes