
As we say in the business, another day another dev log… anyways let’s jump right into it!
“Level transitions” refers to the unloading and loading of assets for a specific level. “Level Transition System” is what we are calling the system that replaces most of the previous systems and logic used to determine what gets loaded dynamically for a level. The “Level Transition System” lives in a component that is globally accessible called a Level Transition Component (LTC).
The LTC manages Data Layers that are part of Unreal Engine 5’s World Partition system. LTC allows level designers to set up configurations for each map that define the following Data Layers.
Each configuration contains:

Watch on YouTube(Data layer transitions)
Above is a clip from a test level of the data layers transitioning between unloaded, loading and activated.

(BASE)
When a level is loaded, the LTC shows the loading screen and then it determines which configurations are valid for the level and the number of players. The LTC then uses a seeded stream to determine which configurations to load as needed. Once the configuration is chosen, the LTC replicates the needed information to any attached clients (for multiplayer) and waits for the clients to report that they have loaded the Data Layers needed for the chosen configuration. It’s necessary to know when all clients have loaded the configured data layers so that all clients can have their loading screen hidden at the same time.

(Living Trees)
LTC has other helper functions such as a function to load the next configuration and a function to reload the current configuration and Reload Current Configuration that are exposed to Blueprints.

(Dead Trees)
Below is a video showing the Nanite Lumen Test level in a very unfinished form. For this clip the NLT level was set up with 3 themes (Cloudy, Thunderstorm, and Dust Storm), and 3 level layers (blank, dead trees, and living trees). Using those layers the following configurations were made: Cloudy/Blank, Thunderstorm/Living Trees, and Dust Storm/Dead Trees. The clip shows Dawksin in a configuration that has a wall blocking him until he uses a trigger to cause LTC to load the next configuration. By the end of the short clip, Dawksin has gone through all 3 test configurations.
The clip is kind of a quick test of the LTC using real assets and it might not look very impressive, but it has helped iron out a lot of bugs.
While we have the technology to load and unload data layers during gameplay, because loading and unloading assets takes time, all level transitions for Mortal Rite will happen during a loading screen when the players are traveling to a location. Once the level has loaded and the game is playable, there should be no level transitions until the players travel to a new level.
Dynamic changes to levels are handled outside of the LTC, but can be persisted via Progress Items, which are used to save progress within levels and throughout Mortal Rite.
Anyways see you in the next one!
~Round Toast Studios