I’m currently working on an openworld RPG (like Skyrim)
The landscape level is using world composition and I have many “indoor” levels.
The game starts on a “mainmenu level”, with a classic menu (new game/load game/ect)
Like in Skyrim (or many open world RPG), when the player load his previous save game, it should load the level of this save game (landscape or indoor level).
For now, I’m using the “open level” node to load the persistant level of the “world composition level” or the “indoor level”.
Before doing this I’m adding a “loading screen” widget to the viewport, then remove it when the “maingame” player controller begins.
The problems :
The loading screen which is animated is freezing (because of blocking thread)
The loading screen is removed once the persistant level is loaded, even if I remove the “remove from parent node”, so I guess it’s because the viewport is reset.
I know that the solution for the freezing loading is to use level streaming BUT, I’m already using world composition which use it’s own level streaming.
I can’t add my “mainmenu” level to the persistant level of the world composition landscape because you can only add landscape tiles as sublevels. (and it makes no sense as the player can load an indoor level if he was there on last saved game)
I can’t add this world composition persistant level to the mainmenu persistant level then stream it because it only stream the persistant level on not the sublevels
Is there a setup allowing to do this in UE4?
I know Dragon Quest XI is made on UE4. It’s a RPG with openworld but not sure if it use world composition.
I recommend don’t use a loading screen widget. Use the embedded loading screens or find a plugin (e.g. GitHub - ue4plugins/LoadingScreen: A plugin for Unreal Engine 4 to expose simple controls for managing). The widget will be tied to the level, an external source will be seamless. While this method offers less control it is a more stable solution, I am also making a game with world composition and also load from a main menu level. Having a reliable system that handles it for you is vastly preferable, as long as you like spinners and don’t need a progress bar. UE4 devs like their spinners.
Skyrim has pretty complicated loading screens and you’d have to do some custom coding to get those effects.
Why not using loading screen widget !?
What do you call “embedded loading screens”? The 3 dots animation in the bottom right of the screen? I wouldn’t call this a “loading screen” unless there’s some configuration screen that I didn’t notice. I need to, at least, make it opaque so you don’t seen the world without landscape tiles.