Navmesh Generation and Editing
The navmesh is the data structure that the Unturned™ runtime uses for AI pathfinding. Zombies, animals, and NPCs compute paths through the navmesh to navigate the map. A map without a valid navmesh produces zombies that stand in place at their spawn point, animals that never wander from their spawn zone, and NPCs that cannot reach their waypoints. The navmesh is baked in the Unity Editor using Unity's built-in NavMesh system, then exported with the map bundle and consumed by the game runtime at load time.
This article documents the 57 Studios™ workflow for generating and editing navmesh for custom Unturned™ maps. It covers the bake process from boundary definition to finalized output, the agent settings that calibrate the navmesh for zombie and animal movement, the manual navmesh editing tools for adjusting bake results, connection points (Off-Mesh Links) that bridge gaps across doorways and staircases, navmesh behavior on sloped terrain and water surfaces, and the diagnostic workflow for the most common pathfinding failures. This article assumes the reader has a completed map project with terrain and objects placed and is ready to add AI navigation support.

Documentation source: This article synthesizes the official Smartly Dressed Games modding documentation for navmesh configuration, combined with empirical validation across 57 Studios cohort mapping projects. The companion reference article Navmesh and Pathfinding covers the full Off-Mesh Link and NavMeshObstacle configuration at greater depth.
Prerequisites
- Unity 2022.3 LTS installed with the Unturned™ map project open. The scene must contain terrain and placed objects that define the walkable and non-walkable surfaces.
- The Navigation panel (Window > AI > Navigation) accessible in the Unity Editor. This is the primary interface for navmesh configuration and baking.
- A map that has been exported and tested at least once in single-player to confirm the basic map loading pipeline works, even if the navmesh has not yet been baked.
- Familiarity with the Unity Editor Scene view, the Inspector, and the GameObject hierarchy.
What you will learn
- How Unity's NavMesh system works and how the baked output flows into the Unturned™ runtime.
- How to define navmesh bake bounds using Navigation Static geometry markers.
- How to configure agent settings (radius, height, slope, step height) for Unturned™ zombies and animals.
- How to execute the navmesh bake and inspect the resulting coverage.
- How to use the navmesh visualization overlay to identify coverage gaps and errors.
- How to edit the navmesh manually using NavMeshObstacle components and geometry re-marking.
- How to place Off-Mesh Links across doorways, staircases, ledges, and vehicle-sized gaps.
- How navmesh interacts with sloped terrain and water surfaces.
- How to diagnose and fix the three most common pathfinding failures: zombies standing in place, zombies walking through walls, and zombies teleporting or vanishing.
How the Unity NavMesh system works
The navmesh is a triangulated polygon mesh that represents the walkable surface of the map. The Unity NavMesh system performs a voxelization pass against the scene's geometry, identifying all surfaces that meet the agent's movement criteria (slope angle, clearance height, navigable width). The voxelized data is then converted into a polygonal mesh that the AI pathfinding system uses for A* pathfinding at runtime.
As shown in the sequence diagram above, the bake is a pre-computation step that produces a static data file. The navmesh is not computed at runtime; it is loaded from the NavMesh.asset file when the map bundle is mounted. This means any change to the map's geometry requires a rebake before the change is reflected in zombie pathfinding.
The distinction between bake-time and runtime is critical for troubleshooting. A zombie that walks into a wall is experiencing a navmesh that does not match the current scene geometry (either because the geometry changed after baking or because the geometry was never marked as Navigation Static). A zombie that refuses to move at all is experiencing a no-path condition where no walkable surface exists at or near its spawn point.
Defining navmesh bounds
The navmesh bake area is not defined by a bounding box or volume. Instead, the bake considers every GameObject in the scene that is marked with the Navigation Static flag. The navmesh is generated wherever those GameObjects provide a walkable surface within the agent's movement parameters.
Marking geometry as Navigation Static
- In the Unity Hierarchy, select the terrain GameObject. In the Inspector, locate the Static flags dropdown in the top-right corner of the Inspector header.
- Enable the Navigation Static flag. If the top-level Static checkbox is enabled, all sub-flags including Navigation Static are automatically enabled.
- Select all building prefabs, wall objects, bridges, stairs, and barriers in the scene. Enable Navigation Static on each.
- When prompted, apply the change to all child GameObjects. A building prefab that has its top-level Navigation Static flag enabled but whose child walls and floors are not flagged will produce a navmesh that treats those walls and floors as nonexistent.
- Confirm that dynamic objects (vehicles, doors, destructible props) are NOT marked Navigation Static. These objects require NavMeshObstacle components for runtime carving, not static navmesh inclusion.
| Object type | Navigation Static | Rationale |
|---|---|---|
| Terrain | Required | The primary walkable surface |
| Building floors | Required | Zombies must walk inside buildings |
| Building walls | Required | Walls block zombie movement |
| Stairs and ramps | Required | Vertical transitions |
| Bridges | Required | Cross-terrain traversal |
| Vehicles | Do NOT mark | Dynamic; use NavMeshObstacle |
| Doors | Do NOT mark | Dynamic; use Off-Mesh Links |
| Small props | Do NOT mark | Too small for navmesh voxelization |
| Foliage and grass | Do NOT mark | Not walkable surfaces |
What happens when geometry is not marked Navigation Static
The navmesh bake is completely blind to geometry that lacks the Navigation Static flag. A wall that is not marked Navigation Static is invisible to the bake: the navmesh is generated through the wall as if it does not exist. A building floor that is not marked Navigation Static produces a hole in the navmesh where the floor should be. A staircase that is not marked Navigation Static severs the navmesh connection between the ground floor and the upper floor, even if an Off-Mesh Link is placed.
The most common navmesh failure in first-time map projects is a building whose walls are not marked Navigation Static, producing a navmesh that flows through the walls and leading to zombies that walk directly through them.
Configuring agent settings
Agent settings define the physical dimensions and movement capabilities of the AI agent that the navmesh is baked for. The navmesh is calibrated to the agent, not the other way around: a navmesh baked for a small, agile agent is different from one baked for a large, slow agent. The agent settings for Unturned™ zombies and animals use the same set of parameters but with different values.
Zombie agent settings
The following values are the 57 Studios cohort-validated settings for standard Unturned™ zombies. These values produce a navmesh that matches zombie movement behavior across all official and custom maps.
| Setting | Value | Rationale |
|---|---|---|
| Agent Radius | 0.4 m | Must be less than half the narrowest doorway width. Standard doorways in the Unturned™ asset library are 1.0-1.2 m wide, which passes the 0.8 m minimum. |
| Agent Height | 1.8 m | Standard zombie standing height. Clearance under 1.8 m is treated as unwalkable. |
| Max Slope | 45 degrees | Zombies can navigate slopes up to 45 degrees. Steeper slopes are excluded from the navmesh. |
| Step Height | 0.4 m | Matches the standard stair riser height for Unturned™ building interiors. Steps higher than 0.4 m require an Off-Mesh Link. |
Animal agent settings
Animals use the same agent type as zombies in most map projects. The 57 Studios cohort recommendation is to use a single agent type for all ground-based AI and to reserve custom agent types only for maps with specialized AI that requires different movement parameters (boss zombies, flying animals, vehicles with AI drivers).
Voxelization settings
The Advanced panel in the Navigation window exposes voxelization settings that control bake resolution.
| Setting | Value | Description |
|---|---|---|
| Voxel Size | 0.1667 m | Controls bake resolution. Smaller values produce finer detail but longer bake times. The default of Agent Radius / 3 is appropriate for most maps. |
| Min Region Area | 2 sq m | Removes navmesh islands smaller than this area. Prevents tiny isolated navmesh patches from generating useless pathfinding targets. |
| Height Mesh | Enabled | Generates a height mesh for accurate vertical positioning on sloped terrain. Must be enabled for correct zombie behavior on hills and ramps. |
| Manual Voxel Size | Disabled | Enable only when specific fine-detail baking is needed for a section of the map. |
The navmesh bake process
The bake process transforms the Navigation Static geometry and agent settings into the final navmesh data file.
Step-by-step bake procedure
- Open the Navigation panel (Window > AI > Navigation).
- Select the Bake tab.
- Confirm agent settings match the cohort-validated values: Agent Radius 0.4, Agent Height 1.8, Max Slope 45, Step Height 0.4.
- Expand the Advanced section. Enable Height Mesh. Confirm Min Region Area is 2.
- Click the Bake button at the bottom of the Navigation window.
- The bake progress appears in the Unity Editor status bar. A Medium map (1024x1024 terrain with moderate object density) typically completes in 1-5 minutes.
- After the bake completes, the navmesh is displayed as a blue overlay on walkable surfaces in the Unity Scene view. Areas not covered in blue are not walkable.
What a successful bake looks like
A successful bake on a Medium survival map with standard terrain and building geometry should produce the following visual pattern in the navmesh overlay.
| Surface type | Expected navmesh coverage | Notes |
|---|---|---|
| Flat terrain | Full blue coverage | All terrain with slope under 45 degrees |
| Sloped terrain | Blue coverage on slopes under 45 degrees | Steeper slopes are excluded |
| Building interiors | Blue coverage on all floors | Floors must be marked Navigation Static |
| Doorways | Gap in coverage | Requires Off-Mesh Link to bridge |
| Staircases | No coverage on individual steps | Requires Off-Mesh Link to bridge |
| Wall tops | No coverage | Walls should not be walkable |
| Roof surfaces | No coverage unless intentional | Remove Navigation Static from roofs |
| Water | No coverage | Water is not walkable |
Saving the baked navmesh
After baking, save the Unity scene. The navmesh is stored in a NavMesh.asset file that Unity creates alongside the scene file. An unsaved bake is not persisted and will not be included in the map export. The 57 Studios cohort recommendation is to save the scene immediately after every bake and to verify that the NavMesh.asset file exists in the scene directory before exporting the map.
Visualizing the navmesh
The Unity Scene view provides a navmesh visualization overlay that shows the coverage surface, coverage gaps, and Off-Mesh Links.
Enabling the overlay
- In the Navigation panel, select the Bake tab.
- The navmesh overlay is displayed automatically in the Scene view after a bake completes.
- Use the Scene Filter dropdown in the Navigation panel to isolate the navmesh visualization from other scene elements. The filter shows only the navmesh surface and hides all geometry, which makes coverage gaps easier to identify.
Reading the visualization
| Visualization element | Meaning | Action required |
|---|---|---|
| Blue surface | Walkable area where AI can pathfind | None if coverage is correct |
| White gap in blue | Area not covered by navmesh | May be intentional (wall, water) or an error (missing Navigation Static flag) |
| Blue surface inside a wall | Navmesh generated inside wall geometry | Wall is too thin for voxelization; increase wall thickness |
| Arc connecting two blue areas | Off-Mesh Link bridging a gap | Confirm both endpoints land on blue surface |
| No blue surface anywhere | No Navigation Static geometry in scene | Mark terrain and objects as Navigation Static |
The 57 Studios cohort recommendation is to inspect every building interior and every zombie spawn region in the navigation overlay after each bake. A missing coverage patch at a spawn region means zombies in that area will never move.
Manual navmesh editing
The navmesh cannot be painted or sculpted directly in the Unity Editor. There is no brush tool for navmesh. Manual editing is performed indirectly by changing which geometry is marked Navigation Static, by adding NavMeshObstacle components to carve holes, and by adding Off-Mesh Links to bridge connections.
Removing unwanted navmesh coverage
When the navmesh covers a surface that should not be walkable (a roof surface, a decorative platform, a rock outcropping), the resolution is to remove the Navigation Static flag from that geometry and rebake.
- Select the GameObject with unwanted navmesh coverage.
- In the Inspector, disable the Navigation Static flag.
- The change is immediate. Rebake the navmesh to regenerate the surface without the unwanted coverage.
- If the unwanted coverage is on a mesh that is part of a larger prefab, consider adding a NavMeshObstacle component with Carve enabled instead of modifying the prefab, which would affect every instance of the prefab.
Adding navmesh coverage where it is missing
When the navmesh does not cover a surface that should be walkable (a floor that was not marked Navigation Static, a bridge that was added after the last bake), the resolution is to mark the geometry as Navigation Static and rebake.
- Select the GameObject. Enable Navigation Static.
- If the geometry is part of a prefab, confirm that all child meshes also have Navigation Static enabled. The prefab may have a mix of flagged and un-flagged children.
- Rebake the full navmesh. The new surface appears in the coverage after the bake completes.
Using NavMeshObstacle for selective removal
The NavMeshObstacle component carves a hole in the navmesh at the component's position at runtime. This is useful for geometry that cannot be removed from the Navigation Static set because it is shared with other coverage that must remain.
- Select the GameObject where the navmesh hole is needed.
- Add Component > Navigation > NavMeshObstacle.
- Set Shape to Box or Capsule. Size the obstacle to cover the area that should be unwalkable.
- Enable Carve. When Carve is enabled, the obstacle carves a hole in the navmesh at runtime.
The NavMeshObstacle approach is preferred over modifying prefab Navigation Static flags when the unwanted coverage is on a shared prefab instance. It targets a specific instance without affecting other instances of the same prefab.
Connection points across gaps
Off-Mesh Links are the mechanism for bridging gaps in the navmesh. They connect two navmesh regions that are not contiguous in the baked mesh: doorways, window openings, staircases, ledges, and vehicle-sized gaps.
When Off-Mesh Links are required
| Scenario | Navmesh behavior without link | Link type required |
|---|---|---|
| Doorway | Navmesh gap at door frame | Bidirectional |
| Staircase | No connection between floors | Bidirectional |
| Window opening | No connection between interior and exterior | Bidirectional |
| Ledge drop | Abrupt navmesh edge at ledge | One-way (downward) |
| Vehicle door | No connection through vehicle interior | Bidirectional |
| Cave entrance | Surface navmesh does not reach underground | Bidirectional |
Placing an Off-Mesh Link
- Select the GameObject that is adjacent to the gap (the building prefab for a doorway, the floor section for a staircase).
- Add Component > Navigation > Off Mesh Link.
- Create two empty child GameObjects at the link endpoints: one named
LinkStart, one namedLinkEnd. - Position
LinkStartat one side of the gap, 0.5 meters from the edge, on the blue navmesh surface. - Position
LinkEndat the other side of the gap, 0.5 meters from the edge, on the blue navmesh surface. - In the Off Mesh Link component, assign
LinkStartto the Start field andLinkEndto the End field. - Set Cost Override to 1 (default). Higher values make the link less preferred by pathfinding.
- Enable Bidirectional if the gap can be crossed in both directions. Disable for one-way drops.
- Enable the Activated flag. A disabled link is never used.
- Rebake the navmesh. The link appears as an arc in the navmesh visualization.
Verifying Off-Mesh Link placement
Off-Mesh Links whose endpoints are not on valid navmesh surface fail silently. The link appears in the visualization but is never used in pathfinding. The verification step is critical.
- After baking, inspect the Off-Mesh Link in the Scene view with navmesh visualization enabled.
- Confirm that both
LinkStartandLinkEndGameObjects are positioned on blue navmesh surface. - Confirm the link arc connects two blue regions.
- If the endpoints are not on blue surface, move them closer to the center of the navmesh region and rebake.
Navmesh on sloped terrain
The Max Slope setting (45 degrees by default) controls which terrain angles are included in the navmesh. Terrain slopes below 45 degrees are walkable. Slopes above 45 degrees are excluded.
Diagnosing slope-related coverage gaps
When the navmesh has a missing patch on terrain that appears walkable, the terrain slope in that area may exceed 45 degrees in the underlying heightmap data even if it appears gentle at the surface. The slope calculation is based on the heightmap's rate of change, not the visual appearance of the painted terrain.
- In the Unity Editor, select the terrain.
- Open the Terrain inspector and select the height manipulation tool.
- Enable the Slope visualization mode (available in the Terrain inspector's visualization options).
- Walk through the area with missing navmesh coverage. Areas colored red exceed 45 degrees.
- If the slope is genuinely too steep, use the Smooth brush on the terrain heightmap to reduce the angle below 45 degrees.
- Alternatively, increase the Max Slope setting to 50 degrees to provide additional margin. The 57 Studios cohort recommendation is to keep Max Slope at 45 degrees and adjust the terrain rather than the setting, because higher slope values allow zombies to traverse terrain that looks visually incorrect (zombies walking up near-vertical surfaces).
Slopes that are technically walkable but look wrong
When Max Slope is set to 50 or higher, zombies can traverse terrain that appears excessively steep to a human observer. The navmesh treats the slope as walkable because the agent's step height and radius allow it, but the visual result is zombies scaling cliff faces. The 57 Studios cohort recommendation is to keep Max Slope at 45 degrees and to add Off-Mesh Links or stepped terrain for traversable vertical transitions. A stepped approach (multiple flat platforms connected by Off-Mesh Links) produces a more visually natural result than a single high-slope surface that zombies can traverse but that looks incorrect to players observing from a distance.
Navmesh on water surfaces
Water surfaces are never walkable and do not generate navmesh. This is intentional: zombies cannot pathfind across water. The navmesh terminates at the water's edge.
Handling shallow water that zombies should traverse
If a water area is shallow enough that zombies should be able to walk through it (a river crossing, a flooded street), the water cannot remain as a standard water volume. The resolution is to lower the water surface below the terrain height in that area or to replace the water with a terrain-based riverbed that has no water volume assigned.
- In the Level Editor, identify the water volume in the shallow area.
- Lower the water volume below the terrain surface so that no water geometry exists at the crossing point.
- Use terrain painting to create a riverbed visual that looks like shallow water without the water volume's navmesh-blocking behavior.
- Rebake the navmesh. The terrain at the crossing point is now walkable and generates navmesh coverage.
Preventing zombies from walking into deep water
Zombies whose last valid path terminates at the water's edge may carry forward into the water due to momentum. The mitigation is to add a NavMeshObstacle carver or invisible barrier geometry at the water's edge to create a navmesh wall.
- Create an invisible barrier GameObject along the water's edge.
- Mark it as Navigation Static.
- Rebake the navmesh. The barrier creates a navmesh boundary that stops zombie paths at the water's edge.
Zombies not pathfinding: diagnostic workflow
When zombies stand in place, walk through walls, or teleport, the cause is almost always in one of three categories: no navmesh at the spawn point, navmesh disconnected from the player's position, or navmesh mismatch with the current geometry.
Diagnostic flowchart
As shown in the flowchart above, the diagnostic path depends on the observed symptom. The three symptoms cover the vast majority of navmesh failures in custom maps.
Fix 1: No navmesh at spawn point
When a zombie spawns and stands in place without ever moving, the spawn point is not on a valid navmesh surface. The zombie's AI controller checks the spawn point position against the navmesh at spawn time. If the position is off the navmesh, the engine returns a no-path result and the zombie remains stationary.
Resolution: Open the Level Editor and inspect the zombie spawn point position with navmesh visualization enabled. If the spawn point is in a white area (no coverage), move it onto blue coverage or adjust the navmesh to cover that area. A distance tolerance of 0.5 meters from the navmesh edge is applied by the engine; spawn points within 0.5 meters of a navmesh surface are treated as valid.
Fix 2: Navmesh walked through walls
When zombies walk directly through walls, the navmesh has been generated through the wall geometry. The wall is either not marked Navigation Static or is too thin for the voxelization pass to register.
Resolution: Select the wall in the Unity Hierarchy and confirm the Navigation Static flag is enabled. If it is enabled and the issue persists, measure the wall thickness. Walls thinner than 0.1 m may not voxelize correctly. Increase the wall mesh thickness to at least 0.2 m in the 3D modeling tool and re-import. Alternatively, add a NavMeshObstacle component with Carve enabled on the thin wall to cut a runtime hole in the navmesh.
Fix 3: Zombie teleportation or vanishing
When zombies disappear or teleport when approached, the most likely cause is overlapping navmesh bounds. The zombie's position oscillates between two navmesh regions that overlap, causing the AI controller to continuously recalculate the path and producing a visual vanishing effect.
Resolution: Open the navmesh editor in Unity. Inspect the navmesh bounds for any overlapping areas. Adjust the bounds so that each region is exclusive. If the overlap is between a building interior navmesh and the terrain navmesh, check that the building floor is at the correct height and that the building walls properly separate the interior from the exterior. Rebake after adjusting bounds.
Frequently asked questions
Why do zombies stand in place after spawning?
The spawn point is not on a valid navmesh surface. The zombie AI computes a path to the player at spawn time. If the spawn point is not within reach of the navmesh, the engine returns a no-path result and the zombie remains stationary. Verify by inspecting the navmesh visualization at the spawn point position and confirm the point is on blue surface or within 0.5 meters of it.
Why does my navmesh bake take over 10 minutes?
The primary factor is the voxel size setting in the Advanced panel. The default voxel size is Agent Radius / 3. Increasing the voxel size to Agent Radius / 2 (approximately 0.2 m for a zombie agent) reduces bake time significantly at the cost of reduced navmesh detail. For a 1024x1024 map, a voxel size of 0.2 m typically produces a bake under 3 minutes while retaining sufficient accuracy.
Can I have different navmesh agent types for different zombie variants?
Yes. Unity supports multiple agent types defined in the Navigation window's Agents tab. Each agent type requires a separate bake pass. In practice, most Unturned™ map projects use a single agent type for all zombie variants because the bake overhead for multiple agent types is significant and the behavioral difference between agent types is subtle.
Why does the navmesh cover the inside of my building but not the roof?
The roof geometry must be marked Navigation Static for the bake to generate navmesh on it. If the roof mesh normals point downward (ceiling orientation), the bake treats it as a non-walkable surface. Add the Navigation Static flag to the roof mesh and confirm the normals point upward. If the roof was imported with inverted normals, flip them in Blender or the modeling tool before re-importing.
How do I make a specific area completely unwalkable?
Add a NavMeshObstacle component to the geometry in that area with Carve enabled. The carve cuts a hole in the navmesh over the obstacle. For permanently impassable static geometry, remove the Navigation Static flag from the blocking geometry rather than adding a NavMeshObstacle.
My Off-Mesh Links were working before I added new buildings. Now zombies stop at the building edges. What happened?
Adding new geometry and rebaking may have disconnected previously connected navmesh regions. After rebaking, inspect all Off-Mesh Links in the affected area. Links whose endpoints are on navmesh regions that are now separated need to be extended or repositioned.
Can players interact with the navmesh at runtime?
No. Players are controlled directly by physics input and do not use the NavMesh system. The navmesh is consumed exclusively by AI agents. Player movement is not affected by navmesh coverage or gaps.
Will updating the navmesh affect an already-running server?
The navmesh is loaded when the map bundle is loaded at server start. A navmesh update requires redistributing the updated map bundle and restarting the server. There is no mechanism to hot-reload the navmesh without a server restart.
How do I bake navmesh for an underground bunker or cave?
Underground spaces must have their geometry marked Navigation Static and must have at least one Off-Mesh Link connecting the underground space to the surface navmesh at the entrance or exit. For a vertical shaft, use a one-way link downward from the shaft opening to the bunker floor and a separate one-way link upward from the bunker floor to the shaft opening.
My navmesh looks correct in Unity but zombies behave differently in-game. Why?
The Unity Editor's NavMesh visualization shows the baked surface, but it does not simulate the Unturned™ runtime's pathfinding behavior exactly. Export the map and test in single-player. If the issue persists, enable zombie debugging through the in-game console or check the server log for navmesh-related error messages.
Best practices
- Bake the navmesh after the heightmap and all major object geometry are finalized. Each navmesh bake takes 1-5 minutes and every geometry change requires a rebake.
- Mark all terrain and building geometry as Navigation Static before the first bake. Missing a surface at bake time produces a coverage gap that is invisible in the editor but causes zombies to stop at that surface in-game.
- Use a single agent type for all ground-based AI unless the map has specialized movement requirements.
- Save the Unity scene immediately after every bake. An unsaved bake is lost.
- After baking, inspect the blue overlay in every building interior and every zombie spawn region. Missing coverage at a spawn point means zombies will not move.
- Place Off-Mesh Links for every doorway, staircase, window opening, and ledge drop. Use the checklist in Appendix C to verify completeness.
- Rebake after every editor session that changes Navigation Static geometry. An old navmesh produces pathfinding failures that are difficult to distinguish from other bugs.
- Test navmesh in single-player before publishing. The Unity Editor's visualization is accurate for coverage but does not simulate runtime pathfinding edge cases.
- Keep the Max Slope setting at 45 degrees. Higher values allow zombies to traverse terrain that appears visually incorrect.
Advanced considerations
Multi-level structures and floor separation
The navmesh is a 2.5D surface; it does not natively understand floor separations in multi-level buildings. Each floor generates navmesh independently. Off-Mesh Links at staircases and at vertical openings (elevator shafts, ladder hatches) are required to connect the levels.
For a building with three floors and one staircase, the required Off-Mesh Links are:
- Ground floor landing to first floor landing (bidirectional)
- First floor landing to second floor landing (bidirectional)
Each staircase requires its own pair of link endpoints. A single link that spans the entire staircase from ground floor to second floor will not bridge the first floor correctly because the link's endpoints must be on navmesh surfaces that exist at the same vertical level.
Navmesh for vehicle-collidable surfaces
If the map includes vehicles that zombies should be able to climb onto or walk around (parked cars, shipping containers, flatbed trucks), the vehicle geometry must be handled carefully. Marking a vehicle prefab as Navigation Static is not recommended because vehicles that move or despawn leave orphan navmesh islands.
The 57 Studios cohort recommendation for vehicle navmesh is to use NavMeshObstacle components on large static vehicles (shipping containers, wrecked cars that never move) and to not include mobile vehicles in the navmesh at all. Zombies pathfind around mobile vehicles using agent avoidance at runtime, which is sufficient for gameplay purposes.
Navmesh baking in a project with multiple scenes
Some Unturned map projects use multiple Unity scenes to organize different regions or levels. The navmesh bake is a per-scene operation. Each scene generates its own NavMesh.asset file. At runtime, only the active scene's navmesh is loaded. If the map uses scene streaming (loading adjacent scenes as the player moves), each scene must have its own navmesh baked independently, and the navmesh boundaries at scene seams must align.
The 57 Studios cohort recommendation for multi-scene maps is to bake the navmesh for each scene separately, using identical agent settings across all scenes, and to verify that the navmesh at each scene seam is continuous (zombies can path across the seam without interruption). If zombies stop at a scene seam, the navmesh in one or both scenes is missing coverage at the seam position.
Navmesh for custom terrain with landscape tiles
If the map uses Unity landscape tiles (Terrain components placed on a grid) rather than a single large terrain, each tile must be individually marked Navigation Static. The navmesh bake generates coverage across tile boundaries seamlessly as long as all tiles are flagged and their heights match at the seam.
Appendix A: Navmesh agent settings field reference
| Setting | Location | Type | Default | Description |
|---|---|---|---|---|
| Agent Radius | Bake tab | float (m) | 0.5 | Minimum width of a walkable gap. The gap must be at least 2x the radius. |
| Agent Height | Bake tab | float (m) | 2.0 | Minimum clearance height for a walkable surface. |
| Max Slope | Bake tab | float (deg) | 45 | Steepest terrain slope that is walkable. |
| Step Height | Bake tab | float (m) | 0.4 | Maximum height of a single traversable step. |
| Drop Height | Bake tab | float (m) | 0 | Maximum height of a ledge the agent can drop from. Requires Off-Mesh Link for nonzero values. |
| Jump Distance | Bake tab | float (m) | 0 | Maximum horizontal gap the agent can jump across. Requires Off-Mesh Link for nonzero values. |
| Min Region Area | Advanced | float (sq m) | 2 | Navmesh islands smaller than this are removed. |
| Height Mesh | Advanced | bool | false | Generates vertical surface mesh for slope-accurate positioning. |
| Voxel Size | Advanced | float (m) | Agent Radius / 3 | Resolution of the voxelization pass. |
| Tile Size | Advanced | int (voxels) | 256 | Size of each navmesh tile. Smaller tiles improve incremental carve performance. |
Appendix B: Navmesh bake diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| No navmesh generated | No geometry marked Navigation Static | Mark terrain and all static objects Navigation Static and rebake |
| Gaps in navmesh on flat terrain | Agent radius too large or geometry too narrow | Reduce agent radius to 0.4 m |
| Navmesh inside walls | Wall geometry too thin for voxelization | Increase wall thickness to 0.2 m or add NavMeshObstacle with Carve |
| Off-Mesh Link not used | Endpoints not on valid navmesh | Reposition endpoints onto blue navmesh surface and rebake |
| Navmesh covers roof surfaces | Roof geometry marked Navigation Static unintentionally | Remove Navigation Static from non-walkable surfaces |
| Bake takes over 30 minutes | Voxel size too small for map area | Increase voxel size to 0.2 m and rebake |
| Navmesh missing on slope that looks walkable | Slope exceeds Max Slope in heightmap data | Smooth terrain or increase Max Slope to 50 degrees |
| Cover gap at doorway | Doorway narrower than 2x agent radius | Add Off-Mesh Link through the doorway |
| Navmesh disappears in section after rebake | Navigation Static flag removed during prefab update | Re-mark affected geometry Navigation Static |
| Zombies fall through terrain on spawn | Spawn point positioned below navmesh surface | Raise spawn point to ground level, within 0.5 m of navmesh |
Appendix C: Off-Mesh Link placement checklist
- [ ] All exterior doorways have a bidirectional Off-Mesh Link with endpoints 0.5 m from the door frame on navmesh surface
- [ ] All interior doorways connecting different navmesh regions have bidirectional links
- [ ] Each staircase has a bidirectional Off-Mesh Link from bottom landing to top landing
- [ ] Each window opening that players can exploit as a zombie entry point has an Off-Mesh Link
- [ ] Drop-down ledges (rooftop to ground, upper story to lower story) have one-way links pointing downward
- [ ] Each link's Start and End transforms are on visible blue navmesh surface in the Scene view
- [ ] Each link's Activated flag is enabled
- [ ] Bidirectional links have Bidirectional enabled; one-way links do not
- [ ] After adding links, the scene has been saved and the navmesh has been rebaked
- [ ] After rebake, each link appears as an arc in the navmesh visualization
- [ ] The
NavMesh.assetfile exists in the scene directory after saving - [ ] The navmesh is included in the map export by confirming the bundle build includes the asset
Appendix D: Navmesh generation workflow quick reference
1. Mark all terrain and geometry as Navigation Static
2. Configure agent settings (Radius 0.4, Height 1.8, Max Slope 45, Step Height 0.4)
3. Enable Height Mesh in Advanced settings
4. Click Bake
5. Inspect the blue overlay in the Scene view
6. Add Off-Mesh Links for every gap (doorways, stairs, ledges)
7. Rebake after adding links
8. Verify link endpoints are on blue surface
9. Save the scene
10. Export the map and test in single-playerCross-references
- Lighting and Lightmap Baking - the previous article in this series; covers light placement and lightmap generation that should be completed before navmesh baking.
- Spawn Point Placement - the next article; covers placing zombie spawn points that require navmesh coverage to function.
- Navmesh and Pathfinding - the companion reference article covering Off-Mesh Link configuration, NavMeshObstacle settings, and zombie pathfinding diagnostics at greater depth.
- Spawn Point Placement - covers zombie spawn region configuration that must reference navmesh-covered areas.
- Local Map Testing - the testing procedure that validates navmesh behavior in single-player.
- Custom Map Creation: Project Setup - the prerequisite map creation pipeline that must be completed before navmesh generation.
- Smartly Dressed Games Modding Documentation - the official navmesh configuration reference.
- Unturned on Steam - the base game and community hub.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete navmesh generation and editing guide with bake workflow, agent settings, Off-Mesh Links, slope and water handling, and diagnostic procedures. |
