Build a Mini-Game Level with Verse
Build a Mini-Game Level with Verse
Imagine you are building a tiny puzzle game. You need a board for your character to walk on. In Fortnite, we call this a "Level." Let’s make one!
What You'll Learn
- How to design a small game board.
- How to fit everything on the screen.
- How to give your character a direction arrow.
How It Works
<!-- section-art:how-it-works -->

Top-Down Grid
Think of your game like a board game, like Chess or Checkers. You need a flat surface. In Fortnite, we use Tiles.
Keep It Small
Your camera looks down from above. This is called a Top-Down Camera. It is like looking at a toy house from the ceiling.
If your level is too big, your character looks like a tiny dot. You cannot see them! So, we keep the level small. A good size is about 4 tiles wide and 6 tiles long. This fits perfectly on your screen.
Use a Map
In Verse, we can use a Data Structure to hold our level. Think of this like a digital map or a list of instructions. It tells the game which tiles are walls and which are paths.
Give Direction
When the camera looks down, it is hard to see which way your character is facing. Is it looking left? Right?
To fix this, we add a small arrow. The arrow sits on top of your character. It moves with them. Now, you always know where they are going!
Let's Build It
<!-- section-art:let-s-build-it -->

Level Grid
Here is how we tell the game about our level. We will use a List. A list is just a collection of items.
# This is our list of tiles for the level
# Each item is either a "Wall" or a "Path"
Level_Data := [
"Wall", "Wall", "Wall", "Wall", "Wall", "Wall",
"Wall", "Path", "Path", "Path", "Path", "Wall",
"Wall", "Path", "Wall", "Wall", "Path", "Wall",
"Wall", "Path", "Path", "Path", "Path", "Wall",
"Wall", "Wall", "Wall", "Wall", "Wall", "Wall"
]
# This function checks if a spot is a wall
Is_Wall := (Tile_Type: string) => bool:
# We check if the tile name is "Wall"
return Tile_Type == "Wall"
What This Code Does
Level_Data: This is our map. It has 30 spots. The edges are "Walls." The inside has "Paths."Is_Wall: This is a helper tool. It asks a simple question: "Is this tile a wall?" It says "Yes" or "No."
You would use this list in your Verse code to check if your character can move there. If Is_Wall says "Yes," the character stops. If it says "No," the character walks!
Try It Yourself
Now you try! Open your UEFN editor.
- Create a new list called
My_Level. - Make it 4 tiles wide and 5 tiles long.
- Make the edges "Walls."
- Make the middle "Paths."
Hint: Count your tiles carefully. A 4x5 grid needs 20 tiles total. Don't forget the corners!
Recap
- Keep your levels small for top-down views.
- Use a list to store your map data.
- Add an arrow to show which way the character faces.
References
- https://dev.epicgames.com/documentation/en-us/uefn/verse-starter-template-in-unreal-editor-for-fortnite
- https://dev.epicgames.com/documentation/fortnite/verse-starter-03-designing-levels-for-in-unreal-editor-for-fortnite
- https://dev.epicgames.com/documentation/fortnite/verse-starter-template-in-unreal-editor-for-fortnite
- https://dev.epicgames.com/documentation/en-us/uefn/verse-starter-template-3-designing-levels-in-unreal-editor-for-fortnite
- https://dev.epicgames.com/documentation/en-us/fortnite/verse-starter-07-final-result-in-unreal-editor-for-fortnite
Verse source files
- 01-fragment.verse · fragment
Turn this into a guided course
Add verse-starter-03-designing-levels-for-in-unreal-editor-for-fortnite 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
- Verse Starter Template ↗
- verse-starter-03-designing-levels-for-in-unreal-editor-for-fortnite ↗
- verse-starter-template-in-unreal-editor-for-fortnite ↗
- verse-starter-template-3-designing-levels-in-unreal-editor-for-fortnite ↗
- verse-starter-07-final-result-in-unreal-editor-for-fortnite ↗
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.