Seamless transition without streaming

tl:dr im trying to make a tardis fully functioning TARDIS.

specifically i need a way to be able to “land” in an arbitrary level (i.e drag and drop without messing with world composition and streaming. i want to ACTUALLY be in the level, not an instance). i have tried messing with the “load streamed level instance” or whatever its called but i got a headache. i was also having a hard time getting the “landing markers” to behave (why is it such a pain to get data from one BP to another. e.g the world location of X → Y… >.<… anyway, thats not strictly relevant to this question).

im sorry if the above does not really make sense, im basically trying to do pseudo 4D (dimension offset) space here and that aint exactly easy to explain. best way i can describe it is that im trying to recreate the effect of a minecraft mod “better portals” that makes seamless travel between minecrafts dimensions possible. i know its not really the BEST way to describe it but its what im trying to do in a nutshell.

i should mention that i have no ability to write functional code but am taking quite well to blueprint. i know this really limits what i can do and that a lot of things that can be done in C++ are either really hacky or outright impossible in BP alone. im REALLY hoping that its more the former.

p.s. im sorry if im not really asking “the right way”. i just need pointing in the right direction.

You have two options:

  1. Open level ( definitely not what you want )

  2. Level streaming

You don’t have to stream an instance, you can stream the actual level with ‘LoadStreamLevel’

If you don’t want to have to code the streaming, you can use a market asset:

or

@clockworkOcean idk if this is how im supposed to reply so it may just be a comment.
a i mentioned briefly i DID try the load stream level thing and it did work but i got a headache trying to workout the loading logic. i also couldn’t get the lighting to behave. if you know anything about doctor who you know that the interior is a different universe effectively. as such the interior doesn’t really care if its day or night outside. the problem with that was unreal’s level streaming sort of assumes that world lighting (skylights and directional lights) are shared. this is perfect if i were creating a walkable interior for a house where light from outside comes in but not so great for a tardis. what i basically need is something that functions like loading into a level normally but with a (very short ~1m) “bridge” between them. ive seen that transition levels had potential to serve as a “staging ground” as the move is handled but afaik there can only be one transition level and its rather limited for this use case.

i could use level streaming if

  1. the “hot swapping” logic could be figured out. 3-4 scenarios (exiting tardis, entering tardis, viewing out and viewing in)

2)the lighting could be told to remain EXCLUSIVE to their level without having to change anything in the streamed level (i want to be able to take any map/level, plop a landing marker or 2 down and just add it to the list of locations)

  1. atmo and sky could also be handled exclusively.

this is why “hard loading” a level and hacking some seamless transition between them felt like the way to go.

worst case scenario i can settle for a traditional loading screen as keeping the interior and exterior lighting separate is higher priority than a smooth transition from interior to exterior and vice versa. i dont want to do that though until ive exhausted every other viable option. i will even try C++ (with a lot of hand holding) before i commit to that option though.

so, in summary can those 1-3 be done?

I use level streaming. I swap between various light scenarios ( static / dynamic ). Each level it completely self enclosed, nothing is shared between them.

You can have as many interim loading levels as you like.

Does that fit your bill. If so, ask a specific question and I will try and answer it :slight_smile:

PS: You can’t have looking in through the tardis door effect. That would have to be bodged in some way…

PPS: You can do looking out and in, but you have to do it with render targets, or something clever like the various portal products on the marketplace:

that does sound more a less like what i need. so the “load streaming level” is sort of halfway between “normal” level loading and totally streamed level loading?

I’m not sure what you mean by totally streamed, maybe streaming level instances. I’ve never used that. That’s if you want to have more than one copy of a level.

You have to realize the difference in meaning between the way we are using ‘level’ here, and what Epic mean by level. To you and me, I think ( and a lot of other people ), ‘level’ means a whole environment. An Epic level can constitute just part of what you see in front of you, it can just be a few meshes. In Epic terms one environment could consist of many levels, all on top of each other. Epic level is just the contents of a map file, or area of a large map file.

i can work out and hack some stuff with render targets and what not for the “BOTI” (bigger on the inside) effect. there is enough information on that and i have done it with earlier prototypes in a single level. as long as the destination is loaded and visible the RT method should work fine.

If you’re going to use render targets to do the tardis, you need the actual level loaded somewhere. Which means you have to load it maybe underneath the current level or behind something. Or, in the correct place, but then place render targets either side of the door so people can’t see the other level outside the tardis as they approach.

how might i go about setting up the “hot loading” and assuming it tries to share lighting scenarios make it… well… not do that? and is it a 100% TRUE move to that level? like, if i unload the tardis interior fully is the player actually IN the new level or still technically in the tardis interior level? i need to know cos i would want to do “complex” logic and gameplay stuff in the destinations as each will be mostly self contained exploration/puzzles as well as having the OPTION for larger worlds themselves using level streaming …

It won’t try and share scenarios, unless you specifically set up a level as a lighting scenario. By default, your persistent level should have NOTHING in, just a black hole. This black hole has all of the levels you want to stream loaded ( but not visible ) as sub-levels. How your player moves depends on whether you placed the player inside your levels ( not so good ), or if you spawn your player on game start. Second option means the player is automatically spawned in the persistent level, and there’s nothing you need to do to get the player from level to the next because they are in an independent level and can just walk freely from one to another. Everything still works as normal ( collision etc ) because this in fact what’s going on all the time.

could you possibly give an example setup for sake of making things work one could assume the tardis lands at the global origin (i can move that via BP later. gotta GET to the level first). i dont need something node for node, just the important nodes (like, i know the level streaming nodes but what others and what’s the generalized overview of the logic). i mean, if you actually made a mock setup i wouldn’t be ungrateful, it’s just more than i need. i guess i need something between a sign pointing in a general direction and a hand drawn map to get an idea of the road ahead. right now im like a near blind man walking through the bush. i like metaphors … :stuck_out_tongue:

I will do an example

ps. i HATE these forums… not the people, the actual site itself… “you need to be logged in…” when i AM logged in…

Don’t we all… :-/

I had to answer that in several chunks due to restrictions. You’ll need to scroll up and down a bit…

that does sound more a less like what i need. so the “load streaming level” is sort of halfway between “normal” level loading and totally streamed level loading?

i can work out and hack some stuff with render targets and what not for the “BOTI” (bigger on the inside) effect. there is enough information on that and i have done it with earlier prototypes in a single level. as long as the destination is loaded and visible the RT method should work fine.

how might i go about setting up the “hot loading” and assuming it tries to share lighting scenarios make it… well… not do that? and is it a 100% TRUE move to that level? like, if i unload the tardis interior fully is the player actually IN the new level or still technically in the tardis interior level? i need to know cos i would want to do “complex” logic and gameplay stuff in the destinations as each will be mostly self contained exploration/puzzles as well as having the OPTION for larger worlds themselves using level streaming for terrain chunks. thats way later though.

could you possibly give an example setup
for sake of making things work one could assume the tardis lands at the global origin (i can move that via BP later. gotta GET to the level first). i dont need something node for node, just the important nodes (like, i know the level streaming nodes but what others and what’s the generalized overview of the logic). i mean, if you actually made a mock setup i wouldn’t be ungrateful, it’s just more than i need. i guess i need something between a sign pointing in a general direction and a hand drawn map to get an idea of the road ahead. right now im like a near blind man walking through the bush. i like metaphors and similes ok… :stuck_out_tongue:

ps. i HATE these forums… not the people, the actual site itself… “you need to be logged in…” when i AM logged in…

So I made a default level and put a cube in it like this:

I then made an empty ( black ) level and put my level 2 cube in there:

( I highlighted it otherwise you can’t see it ). I made a similar level 3.

Then I made an empty ( black ) level and used the ‘levels’ window to include all my previous levels:

See how it looks like a normal level? Except we know this is actually 4 levels ( persistent and 1 2 3 ).

Notice also the levels window you can see all the levels there.

When you have this setup ( my 3 sub levels in the persistent ), I can stream any one of those levels in or out at any time. They can have just some stuff in, or be a fully fledged level with static or dynamic lighting.

Naturally, I can’t have to levels with lighting streamed in at the same time, that would look weird.

So ‘level’ can mean ‘end of level boss’ kind of level, or just ‘some other stuff I want to load’ kind of level.

Is it making some sense?

You could also impersonate the inside of the tardis with a cubemap.

There was a product on the market recently ( can’t find it now of course ) which did the inside of rooms through windows using cubemaps, you can change viewing angle etc…

if im understanding what you are demonstrating here isn’t that just the normal level streaming. im using that method for the interior (different rooms and hallways and such). what im after would be a way to seamlessly go from, say, the first person example map to the third person example map. doing that with those gets messy and if the interior were loaded in too it would be lit by the skylight of the example maps. i want the interior to have its own skylight, atmosphere and skybox and the exterior to have its own. that is the main problem i need to solve. to have the map load and function like its streamed but not sharing the lighting between them. again, its really hard to put into words and im sure that goes both ways. this is, afterall, basically 4D space i am trying to emulate. i may just HAVE to go with load screens…

You can keep the light completely separate as long as you don’t stream both maps at once. Hence the need to a bodge to make it look like you can see one environment from the other.

It gets a lot easier if you drop the need to be able to see across areas. A sort of airlock hatch at the tardis entrance would do the trick.

ok, so what im gathering is i cant really stream “full levels” without having to alter them to behave nicely with the interior. i might just stick with “traditional” loading screens until im more experienced with blueprint. one of my personal issues is im a perfectionist so im not happy with faking it. i would be using depth buffers and render passes for the BOTI if that were possible in UE4 but everything i read suggests thats impossible or at least not accessible via BP without source editing (which would be about as successful as giving a monkey a wrench and telling it ti fix a car). so yeh, i will just stick with a cached cube map/3d rendertarget capture of the locations.

ty for your time my friend.

To be clear: You could have two levels loaded at once, the exterior and the interior. But your interior needs to be able to cope with having external lighting. It’s not that much of a leap, you could develop the interior with a directional light and skylight outside, and then remove them once it’s made so you can use it for streaming.

You’re welcome…

Don’t worry, you’ve helped me so thank you :slight_smile: it’s always good to have people like you respond to these and give input, you never know who it’s going to save

1 Like