Local Map Testing
A map that loads without errors in the Level Editor is not a map that loads in the game. The editor bypasses several runtime validation steps that the game engine applies at startup: the asset bundle loading sequence, the spawn table resolution pipeline, the navmesh validation pass, and the terrain streaming system. A map that appears finished in the editor can fail catastrophically when a player attempts to join it for the first time through the standard game client. The first game-client test is the earliest point at which the map author can confirm that the map is playable rather than merely editable.
This article documents the 57 Studios™ workflow for local map testing: hosting the map from the game client, executing verification commands for every major system, and diagnosing the most common first-test failures. The testing procedure covers map appearance in the level list, player spawn verification, zombie navmesh validation, loot table confirmation, lighting and weather inspection, and the crash and hang diagnostics that catch editor-to-game pipeline failures. The companion article Dedicated Server Testing and Validation covers the server-side testing that must follow a successful local test.

Documentation source: This article synthesizes the official Smartly Dressed Games modding documentation for map testing and validation, combined with empirical validation across 57 Studios cohort mapping projects.
Prerequisites
- A custom map project that loads without errors in the Unturned™ Level Editor. The spawn points, navmesh, spawn tables, Config.json, safezones, kill volumes, and player spawn points must all be authored.
- The map folder copied to the game client's
Maps/directory. On a default Windows installation, this isC:\Program Files (x86)\Steam\steamapps\common\Unturned\Maps\. - Unturned™ installed and launchable in single-player mode.
- Familiarity with the in-game console (tilde key) and the admin command set.
- A backup of the map's project folder before beginning the testing procedure.
What you will learn
- How to execute a pre-test checklist that catches the most common editor-to-game failures before the first game-client test.
- How to copy the map to the game client's Maps/ directory and launch it in single-player.
- How to execute the cohort-validated verification command sequence for spawns, navmesh, lighting, and custom assets.
- How to verify lighting and weather transitions across the full day-night cycle.
- How to identify, diagnose, and fix the most common first-test failures: map not appearing in the level list, all-white textures, infinite loading screens, player spawn underground, and items not spawning.
Pre-test checklist
The pre-test checklist is executed before the map is first loaded through the game client. Each item in the checklist catches a specific class of editor-to-game failure. A map that passes every item on this checklist has a substantially higher probability of passing the local test stage on the first attempt.
| Pre-test item | How to verify | Failure symptom if skipped |
|---|---|---|
| Spawn point set on valid terrain | Confirm at least one player spawn point exists and is not clipped inside a collider | Player spawns underground or inside a wall |
| Navmesh baked with valid agent settings | Confirm navmesh covers all playable surface areas in the Unity Scene view | Zombies stand still on open ground; zombies glitch through walls |
| Item spawn tables have at least one entry per tier | Open spawn table .dat files and confirm non-empty tier lists | Items do not spawn on any lootable container |
| Zombie spawn tables have at least one entry | Open zombie spawn table .dat files and confirm non-empty lists | No zombies appear anywhere on the map |
Level .asset file references the correct master bundle | Open the level .asset in Notepad++ and confirm the bundle name | Map returns to the main menu with no error when selected |
| All custom prefabs are assigned to a named asset bundle | Open Unity Editor and inspect the Asset Bundle column for every custom prefab | White placeholder textures on custom assets |
| Custom textures use power-of-two dimensions | Inspect texture dimensions in Unity import settings | GPU warnings or black textures on lower-end hardware |
| Water reflections enabled on only one volume | Select each water volume and inspect the planar reflection property | Severe framerate drop in areas with multiple water volumes |
| Navmesh bounds do not overlap | Open the navmesh editor and inspect the overlap visualization | Zombies appear and disappear in multiplayer |
| Config.json Version field is set to a starting value | Open Config.json and confirm Version is set to 1.0.0.0 or similar | No operational failure, but version tracking is not initialized |
| Map folder name does not contain spaces or special characters | Confirm the map folder uses only alphanumeric characters and hyphens | Workshop upload tool may reject the folder path |
| Spawn table file names match the Table field on every spawn point | Cross-reference each spawn point's Table field against the files in Level/Spawns/ | Items, vehicles, animals, or zombies do not spawn |
The cohort recommendation is to execute the pre-test checklist as a formal sign-off step before the map is copied to the game client test environment. The checklist takes approximately 30 minutes for a first-time execution and approximately 10 minutes for subsequent passes after iteration.
Local testing procedure
The first game-client test is a single-player session hosted from the game client itself. This test exercises the asset loading pipeline, the terrain rendering, the spawn system, and the navmesh without the additional variable of network replication.
Step 1: Copy the map to the game client
- Navigate to the map's build output directory (the directory that contains
Level/,Bundle/, andConfig.json). - Copy the entire map folder.
- Navigate to the game client's
Maps/directory:C:\Program Files (x86)\Steam\steamapps\common\Unturned\Maps\. - Paste the map folder into the
Maps/directory. - The folder name becomes the map's internal name. The folder name must not contain spaces.
Step 2: Launch the map in single-player
- Launch Unturned™ and select Singleplayer from the main menu.
- Find the map in the level list. If the map does not appear, see the diagnostic section below.
- Select the map and start the session.
- Observe the loading screen. The progress bar should advance past 50 percent within 30 seconds on a modern SSD.
- If the loading screen stalls or the map returns to the main menu, the issue is in the asset loading pipeline, not in the gameplay logic.
Step 3: Execute the verification command sequence
Once the world loads, press the tilde key to open the console and run the following commands in sequence.
| Command | What it tests | Expected result | Failure indication |
|---|---|---|---|
/spawn | Player spawn position | Player appears at the designated spawn point | Player appears in midair, underground, or inside a collider |
/zombie | Zombie spawn system | A zombie spawns and begins walking on the navmesh | Zombie spawns but does not move; zombie does not spawn at all |
/give Item_Animal_X | Animal spawn entry | An animal spawns | /give does not autocomplete; animal spawns but does not pathfind |
/vehicle | Vehicle spawn table | A vehicle appears if the map defines vehicle spawns | Vehicle does not spawn |
/cycle 0 through /cycle 7 | Time of day system | The map transitions from day to night | Time does not change or lighting breaks during transition |
/teleport x y z (distant coordinates) | Terrain streaming at distance | Player arrives at distant location, terrain loads | Terrain does not load; player falls through the world |
/tp (near custom asset) | Custom prefab rendering | Custom asset appears with correct textures | Asset appears with white or pink placeholder material |
/admin | Admin access | Console confirms admin access | Required for the above commands |
Step 4: Walkthrough verification
After the command sequence passes, spend a minimum of 30 minutes walking through every distinct region of the map. Fast-travel using /teleport to each region and confirm:
| Verification target | What to look for | How to test |
|---|---|---|
| Terrain rendering | No terrain seams, no floating terrain, no heightmap holes | Walk across terrain boundaries between biome regions |
| Object placement | No floating objects, no objects clipping through terrain | Walk through each authored area |
| Water rendering | Water renders at correct height, no reflection doubling | Approach each water volume |
| Foliage rendering | Grass and trees appear in authored regions | Walk through foliage-dense areas |
| Lighting | Day-night cycle transitions without color shifting | Use /cycle to advance through the full day-night cycle |
| Custom asset textures | All custom assets render with correct material | Inspect every custom prefab |
| Navmesh coverage | Zombies walk to every area the author expects to be reachable | Spawn a zombie and observe its path to the player's position |
| Loot table items | Items appear in containers that the author configured | Check every authored loot container |
| Safe zone boundaries | Safe zone markers appear at correct positions | Approach each safezone area |
| Kill volume boundaries | Kill volume lines up with intended map edges | Approach the edge of the playable area on foot |
| Map boundaries | Player cannot walk past the intended map edge | Walk toward the map edge in each cardinal direction |
Verifying spawns in-game
The /give command is the primary tool for verifying that spawn tables produce the correct items. The command syntax is:
/give <table_name>The engine looks up the spawn table by name and spawns one instance of a randomly selected item from the table. Run the command multiple times (10-20 times per table) to verify that the weight distribution produces the expected variety of items.
Spawn table verification procedure
- For each item spawn table on the map, run
/givewith the table name 10 times. - Record which items appear. Compare the observed frequency to the expected probability based on the table's weight distribution.
- If a table always produces the same item, the table has only one entry or the weight distribution is extremely imbalanced.
- If a table produces no items, the table file does not exist or is malformed.
- If a table produces items that are not in the table's entry list, the table references a nested table that has different content than expected.
Vehicle spawn verification
- Run
/vehiclein the console. The command spawns a random vehicle from the vehicle spawn table. - Observe the vehicle spawn. The vehicle should appear at the player's position with the correct model and no collision artifacts.
- If the vehicle explodes on spawn, the vehicle spawn table references a vehicle type that is incompatible with the current spawn surface.
Zombie pathfinding verification
- Run
/zombieto spawn a zombie near the player. - Walk away from the zombie. The zombie should follow the player's path, avoiding obstacles and navigating through doorways.
- Walk behind a solid obstacle. The zombie should path around the obstacle.
- If the zombie stands in place, the navmesh does not reach the player's position.
- If the zombie walks through a wall, the navmesh was baked without the wall marked as Navigation Static.
Testing navmesh in-game
The in-game navmesh test is the single most important gameplay validation step. The Unity Editor's navmesh visualization shows the baked surface, but it does not simulate the Unturned™ runtime's pathfinding behavior exactly.
Navmesh test procedure
- Spawn at each player spawn point.
- From each spawn point, approach the nearest zombie spawn region.
- Confirm that zombies in the region detect the player and begin pathfinding.
- Walk through doorways, up staircases, and across bridges. Confirm that zombies follow the player through each transition.
- Walk to the edge of the map. Confirm that zombies stop at the map boundary and do not path into the void.
- Enter a building with multiple floors. Confirm that zombies can path from the ground floor to the upper floor via staircases.
Common navmesh test failures
| Observed behavior | Root cause | Fix |
|---|---|---|
| Zombie stands in place at spawn | Spawn point not on navmesh | Move zombie region or rebake navmesh |
| Zombie walks into a wall | Wall not marked Navigation Static | Mark wall Navigation Static and rebake |
| Zombie teleports when approached | Navmesh bounds overlapping | Separate overlapping bounds and rebake |
| Zombie stops at doorway | Off-Mesh Link missing or endpoint not on navmesh | Add or reposition Off-Mesh Link |
| Zombie cannot reach upper floor | Missing staircase Off-Mesh Link | Add bidirectional link on staircase |
| Zombie walks off a ledge | Navmesh extends past intended boundary | Trim navmesh or add barrier at ledge |
Verifying lighting and weather
The lighting and weather systems are difficult to evaluate in the Level Editor because the editor applies its own lighting overrides. The in-game test is the only reliable way to confirm that the map's lighting configuration produces the intended visual result.
Day-night cycle test
- Load the map in single-player.
- Open the console and run
/cycle 0to set the time to midnight. - Observe the ambient light level, shadow behavior, and visibility.
- Run
/cycle 1through/cycle 7sequentially. Each step advances the time by approximately 3 hours. - At each step, observe:
- The sun position and shadow direction
- The ambient color and fog density
- The visibility of point lights in interior areas
- The transition smoothness between time steps
Weather test
If the map has a Weather_Override set in Config.json or uses weather volumes:
- Load the map in single-player.
- Open the console and run the weather command if available (
@weather <type>). - Observe the weather effect: rain particle systems, snow accumulation, fog density changes.
- Confirm that the weather does not produce visual artifacts: rain falling through interior ceilings, snow accumulating on water surfaces, fog clipping through geometry.
What to look for at different sun angles
| Sun elevation | Visual effect | Gameplay impact |
|---|---|---|
| 60-90 degrees (high noon) | Short, dark shadows under objects | Zombies are easy to spot; minimal stealth advantage from shadows |
| 30-50 degrees (standard midday) | Medium-length shadows at consistent angle | Balanced visibility; suitable for most maps |
| 10-20 degrees (dawn/dusk) | Long shadows cast across terrain | Significant stealth advantage in shadow zones |
| 0-10 degrees (twilight) | Very long shadows; minimal direct light | Flashlights become important; near-darkness in shadow zones |
Common first-test failures
The table below maps every common first-test failure to its most likely cause and the resolution validated by the cohort.
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Map does not appear in level list | Level .asset file missing, malformed, or referencing wrong bundle | Open the level .asset; confirm file exists at map root; confirm Bundle field matches master bundle name |
| Map appears but returns to main menu when selected | Level .asset Bundle field points to non-existent master bundle | Correct Bundle field to match the asset bundle the map's prefabs are assigned to |
| All custom textures render as white or pink | Asset bundle missing or corrupt; prefab references bundle that was not rebuilt | Rebuild the asset bundle in Unity Editor; confirm all custom prefabs are assigned to the bundle |
| Map loads to infinite loading screen | Missing asset referenced by a spawn table or a prefab that the engine cannot resolve | Run ValidateAssets; inspect Client.log for "missing" or "not found" entries |
| Player spawns underground or inside a wall | Spawn point placed on a collider or below terrain surface | Move spawn point to clear area on valid terrain; rebake navmesh |
| Zombies stand still and do not react to player | Navmesh not baked or navmesh has gaps preventing pathfinding | Open navmesh editor; confirm bake bounds cover all playable terrain; rebake |
| Zombies teleport or vanish when approached | Overlapping navmesh bounds | Open navmesh editor; find overlapping zones; adjust bounds; rebake |
| Items do not spawn in lootable containers | Spawn table files empty or malformed; container references wrong table ID | Open spawn table; confirm at least one tier has non-empty item list; confirm table name matches |
| Game crashes when camera points at specific angle | Broken occlusion culling or culling volume incorrectly configured | Remove or re-configure the occlusion culling volume in the affected area |
| Game crashes when entering a specific building | Object with broken collider or mesh | Locate building in editor; inspect each object for broken mesh filters or renderers |
| Water appears but has severe framerate drop | Multiple water volumes with planar reflections enabled | Disable planar reflections on all but one water volume |
Map not appearing in level list: diagnostic workflow
When the map does not appear in the single-player level list after being copied to the Maps/ directory, the cause is almost always in the level .asset file or the folder structure.
Diagnostic flowchart
Resolution steps
- Confirm the map folder is in
C:\Program Files (x86)\Steam\steamapps\common\Unturned\Maps\. Subfolders withinMaps/are not detected; the map folder must be directly insideMaps/. - Confirm the folder name uses only alphanumeric characters and hyphens. Spaces, underscores, and special characters may cause the folder to be ignored.
- Confirm the level
.assetfile exists at the map root (not insideLevel/). The file name must match the folder name with a.assetextension. If the folder is namedMyMap, the level.assetfile must be namedMyMap.asset. - Open the level
.assetfile in Notepad++. Confirm theBundlefield references a valid master bundle name that exists in the map'sBundles/directory. - If the level
.assetfile is missing, restore it from the Unity Editor project's export output. The file is generated when the map is exported from the editor.
Frequently asked questions
Why does my map not appear in the single-player level list?
The most common cause is a missing or malformed level .asset file. The file must be in the map folder root and must reference a valid asset bundle and terrain configuration. The second most common cause is that the map folder is in the wrong directory or contains spaces in the folder name.
Why are all my custom assets white in-game?
White or pink textures indicate that the asset bundle containing the textures has not been loaded, or that the asset bundle was rebuilt without the textures. Rebuild the asset bundle in Unity Editor, confirm that every custom prefab is assigned to the bundle, and re-copy the bundle file to the map's Bundles/ directory.
Why does my map load forever on the loading screen?
An infinite loading screen indicates that the engine is trying to resolve a missing asset reference and never completes the resolution. The most common cause is a spawn table entry that references an item or vehicle ID that does not exist in any loaded mod. Run the -ValidateAssets flag and inspect the asset load log for missing reference errors.
Why do my zombies not walk anywhere?
Zombies that stand still after spawning indicate that the navmesh has not been baked or that the navmesh is not covering the player's position. Open the navmesh editor in Unity, confirm the bake bounds cover all playable terrain, and rebake.
My map works in single-player but not when I host from the game client. Why?
Hosting a server from the game client uses a different code path than single-player. The most common cause is that the map references assets that are available in the single-player context but not when hosting. The dedicated server test is the definitive test for server-side compatibility.
How do I test whether my spawn tables are balanced?
Count how many items of each tier the player encounters during a 30-minute walkthrough. If the player finds Tier3 items within the first 5 minutes, the Tier3 weight is too high. If the player never finds a Tier2 item after 30 minutes, the Tier2 weight is too low. Adjust weights and re-test.
What is the minimum time I should spend testing a map locally?
The 57 Studios cohort recommendation is a minimum of 30 minutes of active walkthrough plus the verification command sequence. A map with complex terrain, multiple biomes, or extensive custom content may require 2-3 hours of local testing to verify every area.
How do I test map boundaries without falling off the map?
Use the /teleport command to move to coordinates near the map edge, then approach the edge on foot. The command /teleport 0 0 0 moves the player to the world origin. Use coordinates near the map edge to test each boundary. If the player falls through the terrain, the spawn point is below the navmesh surface or the terrain has a hole.
Can I test the map with different graphical settings?
Yes. After loading the map in single-player, open the graphics settings and change the render quality, shadow quality, and terrain detail settings. Walk through a dense area at each setting level. This catches rendering issues that only appear at specific graphics settings.
My map has no errors but the framerate is very low. What should I check?
The most common framerate issues are: multiple water volumes with planar reflections enabled, excessive vertex count on custom objects, oversized textures (2048x2048+ on every object), and missing LOD groups on large objects. Inspect each category and optimize the largest contributors.
Repeated testing across build iterations
Each time the map is modified and re-exported, the local test must be repeated. Not all changes require the full 30-minute walkthrough, but the verification command sequence should always be executed.
Test scope by change type
| Change type | Required test scope | Estimated time |
|---|---|---|
| Config.json edit | Load map, verify HUD and gameplay changes | 5-10 minutes |
| Spawn table edit | Run /give on affected tables, check containers | 10-15 minutes |
| Object placement change | Walk through affected area, check navmesh | 10-20 minutes |
| Terrain heightmap edit | Walk through affected area, check boundaries | 15-30 minutes |
| Navmesh rebake | Walk through all zombie regions, test pathfinding | 20-30 minutes |
| New custom asset added | Inspect asset at multiple camera angles | 10-15 minutes |
| Full map revision | Full 30+ minute walkthrough + all commands | 30-60 minutes |
The 57 Studios cohort recommendation is to maintain a test log that records which areas were tested in each session, which tests passed, and which tests failed. The test log helps identify regressions when a change in one area breaks functionality in an unrelated area.
Rapid iteration workflow
For rapid iteration cycles (edit-export-test-repeat), the following workflow minimizes the time between edit and test:
- Make the edit in the Level Editor or Unity Editor.
- Export the map. The export process should take under 30 seconds for a map with no bundle changes.
- If asset bundles changed, rebuild the bundles. This step may take 1-5 minutes.
- Copy the map folder to the game client's Maps/ directory, overwriting the previous version.
- Launch the game client and load the map.
- Execute only the verification commands relevant to the change.
- If the test passes, proceed to the next edit. If it fails, return to step 1.
The cohort's measured median time for a rapid iteration cycle is 3-5 minutes for a Config.json change, 5-10 minutes for a spawn table edit, and 10-20 minutes for a navmesh rebake.
Best practices
- Execute the pre-test checklist before the first game-client test. Skipping this step is the leading cause of multi-hour diagnostic sessions.
- Spend a minimum of 30 minutes walking through every distinct region of the map during the local test.
- Use the verification command sequence on every build iteration, even for minor changes.
- Test the full day-night cycle using the
/cyclecommand. Lighting that looks correct at noon may look incorrect at midnight. - Test every spawn table by using
/givewith the table name 10-20 times per table. - Test every vehicle spawn point by using
/vehicleand observing the spawn behavior. - Test every zombie region by approaching it and observing zombie pathfinding.
- Test map boundaries in all four cardinal directions.
- Document test results in the map project file for reference during iterative development.
- Keep a backup of the map project folder before beginning the testing procedure. A failed test that requires reverting changes is easier to recover from with a backup.
Performance profiling during local testing
The local test is also an opportunity to profile the map's performance. The game client provides several tools for evaluating framerate and identifying performance bottlenecks.
Framerate monitoring
- Enable the in-game FPS counter:
@fpsin the console. - Walk through each region of the map and record the minimum and maximum framerate.
- Areas with framerate consistently below 30 FPS on the author's development hardware will perform poorly on lower-end hardware.
- The 57 Studios cohort benchmark for acceptable performance is a minimum of 45 FPS in all areas on a mid-range gaming PC (CPU from 2020 or later, dedicated GPU from 2020 or later).
Identifying performance bottlenecks
| Observed symptom | Likely bottleneck | Mitigation |
|---|---|---|
| Low FPS when looking in a specific direction | Too many draw calls in that view direction | Reduce object density; merge materials; enable batching |
| Low FPS when approaching water | Water volume with planar reflections | Disable reflections; use only one reflecting water volume |
| Low FPS when entering a building | High vertex count on interior meshes | Reduce polygon count; add LOD groups |
| Stuttering when moving across terrain | Terrain streaming system overloaded | Reduce terrain resolution; reduce detail distance |
| Low FPS with many zombies on screen | Zombie mesh and animation overhead | Reduce zombie density in Config.json |
| Consistent low FPS everywhere | Overall scene complexity too high | Reduce total object count; merge materials; lower texture sizes |
Cross-referencing test results with the project file
After each local testing session, record the results in the map project file. The test log serves as a reference for future iterations and helps identify regressions.
Test log template
Test Date: YYYY-MM-DD
Map Version: X.X.X.X
Tester: [Name]
PRE-TEST CHECKLIST: [PASS/FAIL]
- Spawn point on valid terrain: [OK/FAIL]
- Navmesh baked: [OK/FAIL]
- Spawn tables non-empty: [OK/FAIL]
- Level .asset correct: [OK/FAIL]
- Custom prefabs assigned: [OK/FAIL]
- Textures power-of-two: [OK/FAIL]
- Water reflections <= 1: [OK/FAIL]
- Navmesh no overlaps: [OK/FAIL]
- Config.json Version set: [OK/FAIL]
- Spawn table names match: [OK/FAIL]
VERIFICATION COMMANDS:
- /spawn: [PASS/FAIL]
- /zombie: [PASS/FAIL]
- /give <tables>: [PASS/FAIL - list any failures]
- /vehicle: [PASS/FAIL]
- /cycle 0-7: [PASS/FAIL]
- /teleport: [PASS/FAIL]
WALKTHROUGH:
- Region 1 (Military): [PASS/FAIL - notes]
- Region 2 (City): [PASS/FAIL - notes]
- Region 3 (Forest): [PASS/FAIL - notes]
- Region 4 (Water): [PASS/FAIL - notes]
PERFORMANCE:
- Min FPS: [value]
- Max FPS: [value]
- Areas below 30 FPS: [list]
ISSUES FOUND:
1. [Description] - [Fix applied / Needs fix]
2. [Description] - [Fix applied / Needs fix]Keeping the test log in the map project folder (YourMap/Testing/test-log-001.md) provides a searchable record of the map's testing history.
When to rebuild from a failed test
A test failure that cannot be resolved within 30 minutes of diagnostic effort should trigger a full restore from the pre-test backup. The cost of rebuilding from a clean backup is lower than the cost of an open-ended diagnostic session that may introduce additional bugs. The 57 Studios cohort recommendation is to restore from backup after 30 minutes of unsuccessful diagnosis and to re-apply changes incrementally, testing after each change.
Testing the map on different graphics quality settings
A map that runs at 60 FPS on Epic quality settings on the author's development machine may run at 15 FPS on Low quality settings on a player's older machine. Testing across graphics quality levels catches rendering issues that only appear at specific settings.
Graphics quality test procedure
- Load the map in single-player at the highest quality setting (Epic).
- Walk through a region with high object density and high draw-call count.
- Record the framerate at the most performance-intensive camera angle.
- Reduce the quality setting to Medium and repeat the walkthrough.
- Reduce to Low and repeat.
- For each setting level, note any rendering artifacts: missing objects, textures that do not load, shadows that break, water that renders incorrectly.
Common quality-specific issues
| Quality setting | Common issue | Root cause | Fix |
|---|---|---|---|
| Epic | Low framerate | Too many draw calls, high polygon count | Reduce object density, merge materials, enable batching |
| Medium | Shadows disappear at mid-range | Shadow distance too low in Config.json | Increase shadow distance or add shadow cascades |
| Low | Textures are blurry | Mipmaps not generated | Enable mipmap generation in texture import settings |
| Low | Objects pop in at close range | Culling volumes too aggressive | Adjust culling volume boundaries |
| Low | Water renders as solid color | Water reflection quality reduced by engine | Ensure water material has fallback for low quality |
The 57 Studios cohort recommendation is to test at both Epic and Low quality settings at minimum. If the map passes both extremes, the intermediate settings will also function correctly.
Testing with the visibility overlay
The Level Editor's visibility overlay (accessible from the view options menu) shows areas of the map that have high visibility cost in red. Areas with extensive red zones indicate that the terrain or object layout produces many visible objects from a single viewpoint, which increases draw-call pressure.
When the visibility overlay shows large red zones during local testing:
- Open the map in the Level Editor.
- Enable the visibility overlay.
- Inspect the red zones. Each red zone corresponds to a camera position from which many objects are visible.
- Reduce object density in the red zone areas, or add culling volumes to reduce the visible object count.
- Re-export and re-test the framerate.
Advanced considerations
Testing with mods loaded
If the map depends on other Workshop items (custom item mods, vehicle mods, other maps), the local test must be performed with those mods loaded. Subscribe to the dependent mods through Steam Workshop before loading the map. The map's single-player level list entry will show a "Missing Dependencies" warning if required mods are not loaded.
Testing on lower-end hardware
A map that runs smoothly on the author's development machine may perform poorly on lower-end hardware. The 57 Studios cohort recommendation is to test the map on at least one machine with specifications at or below the median Unturned™ player's hardware: an older CPU, integrated graphics, and 8 GB of RAM. Performance issues that do not appear on the development machine may appear on the test machine.
Testing with the -LogCon launch option
The -LogCon launch option for Unturned™ opens a console window that displays real-time log output during gameplay. This is useful for catching errors that do not produce visible in-game symptoms but are recorded in the log. Add -LogCon to the game's launch options in Steam to enable the console window during local testing.
Appendix A: Verification command reference
| Command | System tested | Syntax |
|---|---|---|
/spawn | Player spawn position | /spawn |
/zombie | Zombie spawn and navmesh | /zombie |
/give | Spawn table resolution | /give <table_name> |
/vehicle | Vehicle spawn table | /vehicle |
/cycle | Time of day system | /cycle <0-7> |
/teleport | Terrain streaming | /teleport <x> <y> <z> |
/tp | Custom asset rendering | /tp x y z (via coordinate) |
Appendix B: First-test failure diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Map not in level list | Level .asset missing or Bundle field wrong | Verify level .asset exists and Bundle field is correct |
| Returns to main menu | Missing master bundle | Rebuild bundle; copy to correct path |
| White textures | Asset bundle not loaded | Rebuild bundle with all prefabs assigned |
| Infinite loading | Missing asset reference | Run ValidateAssets; check Client.log |
| Player underground | Spawn point on collider | Move spawn point to clear terrain |
| Zombies stand still | Navmesh not baked | Bake navmesh; confirm coverage at spawn region |
| Zombies teleport | Overlapping navmesh bounds | Separate bounds; rebake |
| No items in containers | Spawn table empty or name mismatch | Verify table file exists; check Table field |
| Crash at camera angle | Broken culling volume | Remove or reconfigure culling volume |
| Crash in building | Broken collider on object | Inspect and fix object mesh/collider |
| Water framerate drop | Multiple planar reflections | Disable on all but one water volume |
Cross-references
- Safezones, Borders, and Volumes - the previous article; covers the volume and border systems that are validated during local testing.
- Dedicated Server Testing and Validation - the next article; covers server-side testing that must follow a successful local test.
- Navmesh Generation and Editing - covers navmesh generation that is validated by the zombie pathfinding test.
- Spawn Point Placement - covers spawn point placement that is validated by the
/spawnand/zombiecommands. - Spawn Tables and Loot Config - covers spawn table authoring that is validated by the
/givecommand. - Level Config and Settings - covers Config.json configuration validated during the loading and rendering checks.
- Map Loading Failures - the comprehensive composite article that this local testing procedure was extracted from.
- Smartly Dressed Games Modding Documentation - the official map testing and validation documentation.
- 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 local map testing guide with pre-test checklist, verification command sequence, walkthrough procedure, lighting and weather testing, and diagnostic procedures. |
