With a player, weapons, and enemies in place, the next step is level design: building spaces where combat and movement feel good. This lesson covers blockout, cover, sightlines, lighting, and flow so your FPS levels support your mechanics and feel intentional.

You will finish with a playable test level that has clear routes, cover for the player and AI, and basic lighting and atmosphere.

Why level design comes next

So far you have character movement, shooting, and enemies that chase and attack. Without a designed space, testing happens in a flat plane or a single room. Level design gives you cover, sightlines, chokepoints, and flow so the player has meaningful choices (where to move, when to peek, where enemies can approach from). Start with a simple blockout; art and detail can come later.

Step 1: Blockout and scale

  1. Create a new level or use a test level

    • In Unreal Engine 5, create a new level (e.g. File > New Level > Empty Level or Basic) or open your existing test level.
    • Add a Directional Light and a Sky Atmosphere (or Sky Light) so you can see geometry clearly.
    • Ensure the player start and any enemy spawns are where you want them for your first playtest.
  2. Block out with BSP or static meshes

    • Use BSP brushes (Geometry > Box, etc.) or simple static meshes (cubes, planes) to define floors, walls, and platforms. Keep everything in blockout scale: typical UE unit is 1 cm, so a 200-unit-wide room is 2 meters; a corridor might be 300–400 units long.
    • Build a few key spaces: a starting area, a central combat space (open or with some cover), and one or two approach routes (e.g. corridors or flank paths). You do not need detail yet; gray boxes are fine.
  3. Check scale with the character

    • Place your player character in the level and play. Walk through doorways and past walls; adjust BSP or mesh size so the space feels right (not too tight, not cavernous). A good rule of thumb: doorways at least 200–256 units wide, ceiling height 300–400 units for interior spaces.

Pro tip: Use Blocking Volume or Kill Z only if you need to prevent the player from leaving the playable area; for now, walls and floor are enough.

Step 2: Cover and sightlines

  1. Add cover objects

    • Place low cover (crates, barriers) that the player can crouch behind and that block line of sight from enemies. Place high cover (walls, pillars) that allow the player to peek and shoot.
    • Use your existing static meshes or BSP. Ensure cover has collision so bullets (line traces) and movement respect it. In UE5, default cube meshes and BSP have collision by default.
  2. Design sightlines

    • Sightlines are the lines of sight between the player and key positions (enemy spawns, objectives, other cover). Avoid one long corridor with no cover; add corners, pillars, or offsets so the player can choose when to expose themselves.
    • Give the enemy places to take cover too, so combat is not just a turkey shoot. Use the same blockout pieces to create enemy cover; the AI can use Move To behind those spots if you add logic later.
  3. Chokepoints and open areas

    • A chokepoint (narrow door, bridge) forces the player or enemies through one path; use sparingly for tension. Open areas allow flanking and movement but need some cover so the player is not exposed from every direction. Mix both: e.g. an open room with a few pillars and one narrow exit to the next zone.

Common mistake: Making every space either a long hallway (no cover) or a single open box (no structure). Vary room shape and cover density so gameplay stays interesting.

Step 3: Flow and pacing

  1. Define a simple flow

    • Decide a basic path: e.g. spawn → first encounter → main arena → exit. Place enemies (or spawn points) along that path. The player should have a sense of "forward" (e.g. toward a door, a light, or a higher ground).
  2. Respawn and checkpoints (optional)

    • If your game uses respawn, place Player Start actors or trigger volumes that set the respawn point. For this lesson, one start is enough; you can add checkpoints in a later pass.
  3. Pacing

    • Do not pack every room with enemies. Leave a breathing room (empty corridor or small room) between fights so the player can reload, plan, or recover. This is especially important when you have limited health or ammo.

Step 4: Lighting and atmosphere

  1. Basic lighting

    • Add a Directional Light for sun/moon; rotate it to get shadows and time-of-day feel. Add Point Lights or Spot Lights in key areas (above cover, near doors) so the space is readable and moody.
    • In UE5, Lumen is on by default for dynamic global illumination; your blockout will respond to lights without extra setup. Adjust light intensity and color to separate areas (e.g. warm interior, cool exterior).
  2. Fog and atmosphere

    • Add Exponential Height Fog or Volumetric Fog to give depth and hide distant blockout. This makes the level feel less empty and can guide the eye toward lit areas.
  3. Post Process (optional)

    • Place a Post Process Volume and enable Unbound so it affects the whole level. Slight Bloom, Contrast, or Color Grading can sell the mood without changing geometry.

Pro tip: Keep lighting simple at first. One dominant direction (sun or key light) plus a few fill lights is enough to read the space and make cover matter.

Step 5: NavMesh and AI

  1. Bake NavMesh

    • Your enemies use Move To and the Navigation System. In the level, add a Nav Mesh Bounds (or use the default one that covers the level). From the Project Settings or Build menu, Build or Bake the NavMesh.
    • Ensure the playable floor and any walkable platforms are inside the Nav Mesh Bounds. Enemies will path only on the baked NavMesh; if they get stuck, check that the floor is walkable and the bounds include it.
  2. Place enemies

    • Put a few enemies in the level (or use spawn points). Test that they can path from their start to the player and that they do not walk through walls or get stuck on cover. Adjust cover or NavMesh bounds if needed.

Step 6: Mini challenge – level checklist

Before moving on, verify:

  • [ ] The level has a clear blockout: at least one start area, one combat space, and one or two routes.
  • [ ] There is cover (low and/or high) that blocks line of sight and gives the player choices.
  • [ ] Sightlines are considered: not one endless corridor; mix of open and tight spaces.
  • [ ] Basic lighting is in place so the space is readable and has mood.
  • [ ] NavMesh is baked and enemies can path to the player without getting stuck.
  • [ ] Playing through the level feels like a short "run" with a beginning and an end.

If enemies do not path, re-bake NavMesh and ensure the floor is not set to "Block" in collision. If the space feels too small or too big, rescale your blockout and test again with the character.

Troubleshooting

NavMesh not generating: Ensure Nav Mesh Bounds covers the walkable area and that floor and platform collision are set to "Walkable" or that the NavMesh project settings include the correct collision channels. Rebuild the level geometry and bake again.

Enemies stuck on geometry: Check that cover and walls have collision and that the NavMesh does not go through them. Simplify collision on decorative meshes if needed.

Level too dark or too bright: Adjust Directional Light intensity and rotation; add a Sky Light or increase its intensity for ambient fill. Use a Post Process Volume to tweak exposure if needed.

Player falls through floor: Ensure floor BSP or meshes have collision enabled. Check for gaps between pieces; scale or align geometry so there are no holes.

What is next

With a blockout level that has cover, sightlines, and working AI pathfinding, you have a space that supports your combat. In Lesson 9: UI/UX Design & Implementation you will add a HUD (health, ammo, crosshair) and menus so the game communicates state clearly to the player.

For more on level design in Unreal, see Unreal Engine 5 Level Design Documentation and our Unreal Engine Guide. Found this useful? Bookmark the course and try a second level with a different flow (e.g. more vertical, or more open). When you are ready, head to Lesson 9 for UI and HUD.