---
title: Create a new level
product: Advanced Framework Pro
version: 1.0
engine: Unreal Engine 5.8
updated: 2026-10-05
canonical: https://docs.human-codeable.com/workflows/create-new-level.html
---

# Create a new level

By the end of this you will have your own map with the correct pawn spawning on every platform.

## Steps

1. Create a `PDA_Level` data asset. Name it `DA_Level_<YourMap>`.
2. Set **Game Mode** to your game mode, or `BP_GameMode_Showroom` to start.
3. Assign **Default Pawn Desktop**, **Default Pawn VR** and **Default Pawn Mobile**. Leave **Pawn Select** on Dynamic.
4. Set **Persistant Map** to your map. Add any streaming maps to **Streaming Maps**.
5. If you use streaming maps, set **Transition Class** and **Min Transition Time**.
6. Create your map and place a `BP_MapInfo` actor in it. Set its **Level Key** to the data asset.
7. Place one or more `BP_PlayerPosition` actors as spawn points. Mark one as **Default Position**.

[![The level data asset filled in](../images/howto_newlevel_01-1600.webp?v=73c2dc27)](../images/howto_newlevel_01-1600.webp?v=73c2dc27)

The level data asset filled in

[![BP_MapInfo placed in the map](../images/setup_mapinfo_placed-1600.webp?v=d808a588)](../images/setup_mapinfo_placed-1600.webp?v=d808a588)

BP_MapInfo placed in the map

## Notes

Switch to this level at runtime with `ML_Loading.Loading_SwitchLevel`, which handles the editor, listen-server and client cases and fades the camera for you.

Tip

Set **Pawn Select** to Force Desktop while iterating in the editor so you are not launching VR preview on every test, then switch it back to Dynamic before shipping.
