Prototyping Unreal Engine 5: Level Blockouts
Learn how to do level prototyping for Unreal Engine 5, using blockouts and Blueprints to define basic gameplay. By Ricardo Santos.
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Contents
Prototyping Unreal Engine 5: Level Blockouts
30 mins
- Getting Started
- Level Prototyping
- The Purpose of Level Prototyping
- Using Level Blockout Tools in UE5
- Creating Geometry
- Combining Geometry Elements: Boolean Operations
- Some Notes on Level Design
- Defining Metrics
- Teaching Gameplay
- Adding Movement to the Level
- Adding Level Blockout Elements
- Adding Blockout Volumes to Blueprints
- Adding Behavior to Blockout Elements
- Diversifying Behavior on Level Elements
- Where to Go From Here?
Combining Geometry Elements: Boolean Operations
Modeling Mode is useful not only for creating geometry but also for performing operations and transformations as well. Select the two geometry elements that make up the house. In the Transform tab of the palette, select the Align operation.
In the tool properties, check the boxes Align X and Align Y, and verify Align Z remains unchecked.
This maintains the Z coordinate for the roof and aligns the remaining ones, putting the geometry in the correct position.
Another interesting option in the Align control is the Align To dropdown box, used to determine the reference coordinate set. It can be the first selected element, the last selected element or the middle point between the two objects.
Click Accept to confirm the changes.
As aligned as the geometry is, it’s still two objects that can move independently from each other. To remedy that, you’ll use Boolean operations, one of the most powerful items in your toolbox. In the PolyModel tab of the palette, select MshBool.
The properties offer a few different Boolean operations to choose from:
- Difference A-B: By selecting this operation, you’ll subtract the second selected object from the first. It only works if the second selected object intersects the first one, creating a hole in the first selected object.
- Difference B-A: The same as above, but reverses the order of the objects in which the operation is performed.
- Intersection: The resulting object is the geometry both objects have in common — the volume in which the objects intersect one another.
- Union: The union of both objects.
For creating the house, select Union and click Accept. The house is a single object, and now the engine will treat it as such.
Notice the Materials of the objects in the figure above and in your project. See how the size of the checkered pattern isn’t uniform throughout the object? This is because the scale factor you applied to the house roof wasn’t applied to the house’s base.
Remember: At this point, your main concern is to define the volumes of your level, so the texture isn’t important, but this result just looks bad. Don’t worry — you’ll change this in the next section. But first, a few more words about level design.
Some Notes on Level Design
At this stage of game development, your only interest is in defining the level volumes and how the player will navigate them. Thus, you’re determining the gameplay that serves as a base for the artists to create the level art.
For that matter, your prototype should convey where the level takes place, its objective and the location of level elements such as pain volumes, kill zones, healing points and powerups. Being able to quickly change these level elements — adding or removing them at will — allows you to fine-tune the gameplay.
Defining Metrics
One of the points to test is that all level geometry should enable the players to perform the actions they need. Doors should allow the characters to pass through them, even if they need to crouch or go prone. It should be possible to jump across gaps, lines of sight shouldn’t be broken, etc.
These elements depend on metrics: How far can the character jump? How tall or wide is the character? How far can the character see? By being able to rapidly create, remove or modify elements, you’ll be able to define how the player interacts with the game and determine these metrics.
Teaching Gameplay
One of the main points of good level design is to teach how to play the game, as Miyamoto explains while talking about World 1-1 from the original Super Mario Bros. game. The players should navigate the level and understand how the game works — visualizing objectives, hazards and points of interest.
Now, have a good look at your level in the editor screen and notice there’s no way to see where the character should go. All the geometry has the same Material, apart from the newly created house in the middle of the courtyard.
To create Materials for your scene prototype, use the default texture M_PrototypeGrid, found by going into the Content Drawer tab and navigating to All ▸ Content ▸ LevelPrototyping ▸ Materials.
Right-click the Material icon and select Create Material Instance from the menu. Name the new Material M_Prototype_Grid_Walkable. Repeat the same procedure and name the new Material M_Prototype_Grid_Static.
After you finish this process, your Materials list should look like this:
A Material instance is a new Material that inherits the characteristics of a base Material, but can be changed independently. One of these Materials will represent the surfaces over which the player can walk. The other will represent scenery elements not meant for the player to interact with.
To highlight the surfaces the player can interact with, M_Prototype_Grid_Walkable should be lighter than M_Prototype_Grid_Static.
Double-click the M_Prototype_Grid_Walkable icon in the content browser and wait for the Material Editor to appear. On the right side of the window, under the Details tab, check the SurfaceColor box under the Surface Properties group.
Now, click the color select box of SurfaceColor and set the text box Hex Linear to C2C2C2FF. And, voilá — you have the same Material but in a lighter color. Save your edits by clicking the floppy disk in the upper-left corner of the Material Editor, and then close the Material Editor.
For the static Material, repeat the same process — just set the Hex Linear value to 212121FF.
Now, you’re ready to use these Materials in your scene. Drag and drop the M_Prototype_Grid_Static Material on the castle wall and the scene floor. Then, apply M_Prototype_Grid_Walkable to the parapet walkway and the house. Your scene should look like this now:
Notice how much clearer the scene got. The lighter surfaces are where the players can walk and use them to form their path in the level. The darker shaded elements just fade into the background and don’t attract as much attention.
Now you’re living in a Material world, and this is a Material scene. The character is living in a Material scene, and the player is a Material person.