Build Infinite Skyscrapers: Mastering Level Loaders
Build Infinite Skyscrapers: Mastering Level Loaders
Stop building your entire island on one massive, laggy grid. If you’ve ever tried to build a 10-story skyscraper or a sprawling castle and watched your frame rate drop to "slideshow," you need to meet the Level Loader. It’s the secret weapon for modular building, letting you snap pre-made rooms, floors, and props into place like LEGO bricks, but with the power of code.
In this tutorial, we’re going to build a Modular Dungeon Generator. You’ll learn how to create separate "rooms" (Level Instances), save them, and then use the Level Loader to stack them into a multi-story tower. No complex coding required—just smart organization.
What You'll Learn
- The Difference: What a Level Instance is versus a Level Loader (and why you need both).
- Modular Design: How to break a big build into small, reusable chunks.
- Stacking & Rotation: How to place levels off-grid, rotate them, and stack them vertically.
- Performance Hacks: Why this method keeps your island running smoothly.
How It Works
Think of your Fortnite Creative island like a video game save file. Normally, everything you place exists in one giant, continuous world. If you place 10,000 walls, the game has to track all 10,000 walls in memory at once. That’s heavy.
Level Instances are like saving a specific scene. You build a room (walls, floor, loot), highlight it, and say, "Save this as a module." It’s now a single object in your library.
Level Loaders are the players who load that save file into the game world.
Here’s the magic:
- Modularity: You don’t rebuild the same hallway every time. You build it once, save it, and load it 50 times in different spots.
- Stacking: You can place a Level Loader on top of another. This is how you make multi-story buildings without fighting grid alignment for every single wall.
- Off-Grid Freedom: You can rotate and place these loaded levels anywhere, even if they don’t perfectly align with the main grid. This lets you create organic, messy, or complex structures that would be a nightmare to build piece-by-piece.
The Scene Graph Connection
In Unreal Engine 6 (which powers UEFN), everything is part of a Scene Graph—a hierarchy of objects. A Level Instance is a "Prefab" (a template). The Level Loader is the "Actor" (the actual thing in the world). By using Loaders, you’re telling the engine: "Here is a reference to a scene, please render it here." This is more efficient than having thousands of individual wall meshes scattered across the main map.
Let's Build It
We are going to build a Three-Story Dungeon Tower. We’ll create three separate modules: The Entrance, The Hallway, and The Treasure Room. Then, we’ll stack them.
Step 1: Create Your Modules (Level Instances)
Module A: The Entrance
- Go to the Devices tab and find the Level Instance device. Place it on your grid.
- Enter the device’s settings. You’ll see a "Build" button. Click it.
- You are now in a new, empty "Level" (a separate canvas).
- Build a small 5x5 room. Add a door, a torch, and a chest. Make it look cool.
- When you’re done, click Save in the Level Instance device settings. Name it
Entrance_Room. - Exit the Level Instance editor. You are back on your main map.
Module B: The Hallway
- Place another Level Instance device nearby.
- Enter it, build a long corridor with traps (damage volumes) and loot.
- Save it as
Hallway_Corridor. - Exit.
Module C: The Treasure Room
- Place a third Level Instance device.
- Build a large chamber with a boss pedestal and gold piles.
- Save it as
Treasure_Chamber. - Exit.
Step 2: Load and Stack with Level Loaders
Now, let’s assemble our tower.
- Find the Level Loader device in your Devices tab.
- Place it on the ground where your Entrance should be.
- In the Level Loader’s settings, look for the Level dropdown. Select
Entrance_Room. - Instantly, your entrance room appears on the grid!
Wait, we want it to be the FIRST floor.
- Place another Level Loader directly on top of the first one (you can do this! Just nudge it up or use the snap tools).
- Select
Hallway_Corridorfrom the Level dropdown. - Place a third Level Loader on top of the second.
- Select
Treasure_Chamber.
Boom. You have a three-story dungeon tower.
Step 3: Tweak and Rotate
- Rotate: Select any Level Loader. Press
Rto rotate the entire loaded level. You can make the hallway twist or the entrance face a different direction. - Move: You can drag these loaded levels around. If you want the dungeon to be in the corner of the map, just drag the bottom Loader, and the whole stack moves with it.
- Off-Grid: Try placing a Level Loader slightly off the main grid lines. You’ll see it snaps into place anyway, allowing for organic placement.
Why This Is Better Than Building Manually
Imagine you want to change the floor texture in the Hallway.
- Old Way: You have to find every single floor tile in every hallway on your entire island and change it.
- New Way: You open the
Hallway_CorridorLevel Instance, change the texture, save, and every instance of that hallway updates instantly.
Let's Build It (Code Version)
While you can do this purely with devices, Verse allows you to control these loaders programmatically. For example, you might want to unlock a floor only after the player defeats a boss.
Here is how you would write a simple Verse script to load a hidden floor when a player enters a trigger.
# Import the necessary Verse frameworks
using /Fortnite.com/Devices
using /Engine/Systems
# Define our Main Device. This is the "Brain" of our trap.
# It will watch for players and then load the next floor.
type LoadNextFloorDevice = script {
# The Trigger that detects the player
Trigger: trigger_device = device:trigger_device()
# The Level Loader that holds our hidden floor
HiddenFloorLoader: level_loader_device = device:level_loader_device()
# The name of the level we want to load (must match your saved Level Instance)
LevelToLoad: string = "Secret_Basement"
# This runs when the game starts
OnBegin<override>()<suspends>: void = (
# Connect the Trigger to our function
Trigger.OnBegin += OnPlayerEntered
)
# This function runs when the trigger is activated
OnPlayerEntered<override>(trigger: trigger_device, player: player): void = (
# Check if the player who triggered it is the local player (optional)
# or if we just want to load the level for everyone.
# Load the level from our library
# We use the 'Load' method on the Level Loader device
HiddenFloorLoader.Load(LevelToLoad)
# Optional: Rotate it or move it programmatically
# HiddenFloorLoader.SetRotation(90.0)
)
}
Walkthrough of the Code:
type LoadNextFloorDevice = script: We’re defining a new type of device. Think of this as creating a new "blueprint" for a device.Trigger: trigger_device: This is a variable (a container for data) that holds our Trigger device. It’s like a loot box that holds a key.HiddenFloorLoader: level_loader_device: Another variable, holding our Level Loader.LevelToLoad: string: A constant string (text) holding the name of our saved Level Instance. This must match exactly what you named it in Step 1.OnBegin: This is an event (something that happens at a specific time). When the game starts, we "subscribe" ourOnPlayerEnteredfunction to the Trigger’sOnBeginevent.HiddenFloorLoader.Load(LevelToLoad): This is the function call. It tells the Level Loader to actually bring the level into the world.
Try It Yourself
Challenge: Build a "Shifting Maze."
- Create two Level Instances:
Room_AandRoom_B. - Place a Timer device and two Level Loaders.
- Use Verse (or Devices) to swap which level is loaded every 10 seconds.
- Hint: You can use the
Loadfunction in Verse to change the active level. Or, in Devices, use a Timer to disable one Level Loader and enable the other.
- Hint: You can use the
- Make it so the player has to run through the maze as the walls change!
Need a hint?
If using Devices, set the Timer to loop. Connect the Timer to a Boolean Switch (or use two Timers with offset delays) to toggle the Enabled state of the Level Loaders. If using Verse, you can use a loop with wait(10.0) to alternate between Loader_A.Load("Room_A") and Loader_A.Load("Room_B").
Recap
- Level Instances are your saved blueprints (like save files).
- Level Loaders are the devices that bring those blueprints into the world.
- You can stack Level Loaders to build vertically.
- You can rotate and move them off-grid for organic designs.
- This method keeps your island performant and makes editing easier.
Stop building walls one by one. Start building experiences one module at a time.
References
- https://dev.epicgames.com/documentation/en-us/fortnite/using-level-loader-devices-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-level-loader-devices-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-devices-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite/using-devices-in-fortnite
- https://dev.epicgames.com/documentation/en-us/fortnite/squid-game-multiplayer-skill-checks-in-unreal-editor-for-fortnite
Verse source files
- 01-fragment.verse · fragment
Turn this into a guided course
Add using-level-loader-devices-in-fortnite-creative to your free study plan — we'll suggest related pages and stitch the lot into one compile-checked, self-guided lesson with worked examples and quizzes.
References
Original tutorial generated by Verse Island from the Verse/UEFN knowledge base, with references to the Epic Games sources above. Code is validated against the knowledge base.