ServerTravel causes rendering to freeze (related to Transition Map, Seamless Travel)

I tried to use Execute Console Command node with “ServerTravel MyMap”, also set a transition map in Project Setting/Maps & Modes.
The transition map is simple, just a cube rotating in the center.
The travel (or transition) did happen, but when I’m in the transition map, screen is not rendering correctly, it’s frozen and nothing is moving.
So I kept frozen in transition map, and when the next map (MyMap) is loaded, I’ve been switched to next map and things are working again.

The question is, is it normal to freeze in the transition map?
If not, what causes may be?
The “MyMap” has several streaming sub level with it, would it be the cause?

Also I’m using this by PS4 launch, single player, no networking involved.

Thanks.

Update:

Found that rendering is not frozen, but the BeginPlay of Transition Map Level Blureprint is not called.
I did the rotating of cube in Tick of Level BP and it got updated, but there is still some short freeze during my stay in the Transition Map.
So the question remains the same, are the short freezes normal?
The destination (i.e. MyMap) should be loading async-ly, so I think it shouldn’t cause any freeze.

This sounds like everything is working as it’s designed to. Transition maps are AFAIK just empty worlds that act as temporary holding spots for clients while you move to the next map, for seamless travel (they store the Playerstates and Playercontrollers). The main thread still loads the next world so the transition world will be blocked / won’t tick while that happens - it just exists.

If you don’t need seamless travel, you may want to look at my Loading Screen tutorial I posted a few weeks ago which uses a tiny bit of C++ (you can literally copy-paste) - and allows you to display ticking objects and/or movies & widgets on the screen in between map transitions. Long story short, you can’t tick a world while you load another one, unless you hack it all in with Level Streaming (which comes with it’s own problems). It does work on PS4 too.

Also, if you’re not doing networking / multiplayer you don’t need to use ServerTravel at all. OpenLevel is what you probably want.

Thanks Jamsh!

In the meantime of reading your tutorial, I’d like to make a quick reply here.
OpenLevel also blocks and it’s worse, since nothing is rendering, the Transition Map at least draw something.
And I found another command “Travel” which looks like a “Client” travel in contrary to ServerTravel, and I read the engine codes it looks like they behave similarly but I’m not sure.
By the way I’m doing VR development, not sure if that matters.


Edit 1:
Using MoviePlayer, the image in VR screws, I can see 3 sets of 3-cubes in my head set, but the rendering is great, there is no freeze/block with this technique.

Edit 2:
Tested “Travel”, it looks like the same as OpenLevel.
“Travel” is not triggering Transition Map.

Hi Jamsh:

I’ve studied your tutorial and got some questions:

Is it possible to use Blueprint made UserWidget for LoadingScreen.WidgetLoadingScreen?
My problem is that LoadingScreen.WidgetLoadingScreen accepts SWidget while BP made is UUserWidget and they seem not to be compatible.

If not, does SWidget have the power like BP made UserWidget?
Like widget animation…etc?

Thanks.

Hi Jamsh:

Did you update the turorial? I’ve just checked it but not sure which part was updated.
To be precise, did you mean LoadingScreen.WidgetLoadingScreen can accept a Blueprint made widget?
If yes, how to?

For the messed up view in VR, I’m not sure custom widget could fix it;
I’ve tested BP made widget in VR, but it also failed to render correctly, the images on the widget just got overlapped, messed up.
My guess is that UE doesn’t handle widget rendering correctly in stereo rendering, since widget are primarily made for conventional 3D game.

And with level streaming (using BP node Load Stream Level), but it also blocks the main thread, occasionally, is this normal?