Level Streaming Using a Volume Configuration to Define Which Levels Should be Loaded
Interactable Door Objects to Teleport the Player to A Location Node Elsewhere
Game Win Volume, Which When Active, Shows the Credits and then Restarts the Game

Technical Level Design

I was tasked with designing the technical method to produce a vast world made up of many separate rooms on the iOS platform. All of the rooms are built as separate levels and in some cases are even split into more than one level if the area is large enough. These levels are imported as part of a master level that contains the whole game.

We use level streaming to load particular levels into the game on the fly so that only the area that the player is currently in is loaded. This means we are using as little memory and processing power as possible, which really boosts the performance of the game while still allowing it to be visually stunning. Volumes, which are assigned to particular levels, are used to mark where in the game levels need to be loaded. Most of our rooms are accessible from doors in a large corridor area. When the player touches a door a transition event is triggered, the screen is faded to black and the player is teleported to the location of the new room. The player’s new location triggers the room’s level streaming volume, which pauses the game, loads the new room and unloads the corridor level. A few seconds later when the room is loaded the game resumes and the screen fades back in with the player in the new room. Using this method ensures maximum performance while not ruining the players experience with long loading times.

The rooms are spread out to allow us to use distance culling effectively. Even if more than one level is loaded, such as when a cutscene is about take place in a different room to the one you are currently in, only the room you are currently in is being rendered, which prevents a sudden drop in performance during gameplay.