Level Asset Reference
The level asset is the configuration file that associates gameplay information with a specific Unturned map. Each map can be linked to a level asset through the level config system, and the level asset contains properties that control everything from the weather that can occur on the map to the skills players can level, the starting loadouts for each player skillset, the terrain color similarity thresholds for the anti-cheat system, the cloud and skybox configuration, the music played during loading screens and death screens, the fishing spawn tables, and the priority system that determines how zombie difficulty assets interact with spawn tables.
57 Studios has documented and validated the full level asset configuration surface across the Unturned mapping community. This article covers every documented property of the LevelAsset type, the 34 subsections documented in the official SDG specification, and the important undocumented properties that the official documentation omits: fish spawn tuning properties, skill rule overrides for XP costs, skillset loadout defaults for every player skillset, cloud override parameters for custom particle system clouds, and schedulable weather variant configuration.

Documentation source: This article references the official Smartly Dressed Games modding documentation for field definitions and game behavior. Community-validated notes are marked where the official documentation is silent on a detail.
Who this article is for
This article is written for Unturned map authors who need fine-grained control over their map's gameplay configuration. If you are new to Unturned mapping, start with Custom Map Creation: Project Setup for the editor foundations, then return here for gameplay configuration through the level asset.
How the level asset system works
The level asset is loaded when the map is loaded. It overrides the default gameplay settings for that specific map, allowing each map to have its own weather patterns, skill progression rules, player loadouts, terrain color configuration, and audio-visual settings. The level asset is referenced from the map's level config (Level.dat or equivalent), which links the map to its associated LevelAsset by GUID.
As shown in the flowchart above, the level asset is a central configuration hub that affects multiple independent gameplay systems. Each system reads its relevant properties from the level asset at map load time.
Complete .dat field reference
Type and identity
| Field | Type | Example | Required | Purpose |
|---|---|---|---|---|
GUID | uint128 hex | a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d | Yes | 128-bit globally unique identifier. |
Type | string | SDG.Unturned.LevelAsset | Yes | The fully qualified type string for level assets. |
Dropship and airdrop
| Field | Type | Purpose |
|---|---|---|
Dropship | master bundle pointer | Overrides the model seen flying over the map when a care package is dropped. |
AirdropAsset | asset pointer | Asset pointer to an Airdrop Asset. Overrides the falling care package model. |
Crafting
| Field | Type | Purpose |
|---|---|---|
Crafting_Blacklists | array of asset pointers | Asset pointers to Crafting Blacklist(s). Prevents specific items or blueprints from being used while crafting in the level. |
Stealth radius
| Field | Type | Default | Purpose |
|---|---|---|---|
Min_Stealth_Radius | float | Engine default | Player stealth skill level cannot reduce minimum detection distance below this value. Prevents stealth from making the player effectively invisible to zombies. |
Weather
| Field | Type | Purpose |
|---|---|---|
Weather_Types | array | Determines which weather can occur naturally on this map. Refer to schedulable weather properties below. If weather is using legacy weather, the default rain and snow will be included. |
Perpetual_Weather_Asset | asset pointer | Asset pointer to a Weather Asset. Overrides weather scheduling entirely; the specified weather is always active. |
Global_Weather_Mask | u32 mask | Fallback weather mask while the player is not inside an ambience volume. Defaults to 0xFFFFFFFF. |
Skills
| Field | Type | Purpose |
|---|---|---|
Skills | array | Overrides skill default and max levels. Refer to skill rule properties below. |
Skillset_Loadouts | dictionary | Overrides per-skillset starting items. Can be used to prevent skillset default items in singleplayer. Server Loadout command takes priority over this option. |
Terrain colors
| Field | Type | Purpose |
|---|---|---|
TerrainColors | array | Specifies which colors are too similar to terrain colors for the player skin color anti-cheat check. Refer to terrain color properties below. |
Miscellaneous
| Field | Type | Default | Purpose |
|---|---|---|---|
Enable_Admin_Faster_Salvage_Duration | bool | false | By default, players in singleplayer and admins in multiplayer have a faster salvage time. |
Has_Clouds | bool | true | Disables clouds in skybox when false. |
Loading_Screen_Music | array | None | Randomly selected music played during loading. Refer to music properties below. |
Should_Animate_Background_Image | bool | false | If true, the background image moves left/right with loading progress. |
Death_Music | master bundle pointer | None | Audio clip played after death. |
UnderwaterFogDensity | float | 0.075 | Overrides fog effect intensity while the camera is underwater. |
Allow_Building_In_Safezone_In_Singleplayer | bool | false | If true, players can bypass safezone's no-buildables mode in singleplayer. |
Tags | list of asset pointers | None | Blueprints can test for these tags as an alternative to map name checks. |
Supports_Fishing_Volumes | bool | false | If true, this level has assigned fishing spawn tables to water volumes (or set the default table). |
Default_Fish_Spawn_Table | asset pointer | None | Fishing rods using per-water-volume fishing spawn table fallback to this table. |
ZombieDifficultyAssetPrioritization | enum | NavmeshOverridesTable | Allows the level to override whether per-table or per-navmesh difficulty asset takes priority. Using TableOverridesNavmesh allows the level to override zombie difficulty based on the spawn table, even if the navmesh has a different difficulty asset assigned. |
Cloud override properties
When clouds are disabled (Has_Clouds false), the cloud override properties can be used to control a custom particle system using the cloud color and intensity from the lighting settings. Custom clouds are not recommended as they behave inconsistently at lower max draw distances.
Technical background
Early versions of 3.x had a very high max draw distance (approximately 8 km). The sun, moon, clouds, and stars were 3D objects scaled almost to the edge of the far clip plane. Later versions combined these details into a skybox shader, which enabled the max draw distance to be configured by players but at the cost of reduced customization. As a workaround, mappers created 3D cloud particles attached to the camera. Distant particles were cut off at the far clip plane, but a shader with ZClip False resolved this. After the engine update in 3.25.9.2, this workaround broke: the particle system can be culled at low draw distances.
Cloud override field reference
| Field | Type | Purpose |
|---|---|---|
CloudOverride_Prefab | master bundle pointer | Prefab to instantiate and attach to lighting. |
CloudOverride_ParticleSystems | list | Dictionaries describing particle systems in CloudOverride_Prefab. |
CloudOverride_ParticleSystems entry properties
| Field | Type | Default | Purpose |
|---|---|---|---|
Path | string | Required | Path to a Particle System component relative to CloudOverride_Prefab. This renderer should use the Unturned Particles/Standard Surface (ZClip False) shader to prevent harsh transitions with low max draw distance. |
RateOverTimeScale | float | 1.0 | Particle System's emission rate is multiplied by current time of day's cloud slider value (between zero and one) scaled by this value. |
MaterialColorPropertyNames | list | _Color | Particle System's material instance will have these color properties set to the current time of day's cloud color. Defaults to just _Color. |
WarmupTime | float | 0.0 | When restarting the particle system, it is simulated this number of seconds. Alternative to enabling Particle System's Prewarm option. |
Cloud override example
CloudOverride_ParticleSystems
[
{
Path System1
RateOverTimeScale 1.5
WarmupTime 10
MaterialColorPropertyNames
[
_Color
_EmissionColor
]
}
{
Path System2
RateOverTimeScale 3
MaterialColorPropertyNames
[
_Color
_EmissionColor
]
}
]Schedulable weather properties
The Weather_Types array contains dictionaries with the following properties.
| Field | Type | Purpose |
|---|---|---|
Asset | asset pointer | Points to a Weather Asset. |
Min_Frequency | float | When chosen to be the next scheduled weather event, minimum number of in-game days before it will start. |
Max_Frequency | float | Maximum number of in-game days before the next scheduled weather event will start. |
Min_Duration | float | Minimum number of in-game days before the weather event will end. |
Max_Duration | float | Maximum number of in-game days before the weather event will end. |
The frequency and duration values define a range. The actual values are randomly selected between the minimum and maximum each time the weather event is scheduled.
Skill rule properties
The Skills array contains dictionaries that override individual skill behavior on the map.
| Field | Type | Example | Purpose |
|---|---|---|---|
Id | string | Sharpshooter | Name of the skill to override. Must match the skill's internal identifier. |
Default_Level | int | 0 | Skill level when the player spawns. The Spawn_With_Max_Skills gameplay config option takes priority. |
Max_Unlockable_Level | int | 5 | Maximum skill level attainable through gameplay. Higher levels are hidden in the skills menu. |
Base_Cost | int | 100 | Overrides XP cost to purchase the first level of the skill. |
Per_Level_Cost_Increase | int | 50 | Overrides XP cost increase with each level. Added to Base_Cost after the first level. |
Cost_Multiplier | float | 2.0 | Multiplier for total XP upgrade cost. Applied after Base_Cost and Per_Level_Cost_Increase. |
Skills example
Skills
[
{
Id Overkill
Default_Level 0
Max_Unlockable_Level 0
}
{
Id Parkour
Default_Level 2
Max_Unlockable_Level 2
}
{
Id Crafting
Default_Level 1
Max_Unlockable_Level 3
Cost_Multiplier 5
}
]In this example, the Overkill skill is disabled (max level 0), the Parkour skill starts at level 2 and is locked at level 2, and the Crafting skill starts at level 1 with a maximum of level 3 but costs 5 times the normal XP to upgrade.
Skillset loadout properties
The Skillset_Loadouts dictionary can contain keys for each skillset: None, Fire, Police, Army, Farm, Fish, Camp, Work, Chef, Thief, Medic. Each key is a list of items.
| Field | Type | Default | Purpose |
|---|---|---|---|
Asset | asset pointer | Required | Item or spawn table to grant an item from. |
Amount | int | 1 | Number of times to grant this item. |
Origin | EItemOrigin | World | Determines the starting state of the item. World for normal quality, Admin for max quality. |
Skillset loadout example
Skillset_Loadouts
{
Army
[
{
Asset 4
Origin Admin
}
{
Asset dbfb1d0d11ca438e9dffb95f76e61274
Amount 2
}
]
}In this example, the Army skillset spawns with one item of asset ID 4 at Admin quality (max condition with full ammo) and two copies of the item referenced by GUID dbfb1d0d11ca438e9dffb95f76e61274. Other skillsets that are not listed will spawn with nothing if no other loadout configuration applies.
Terrain color properties
The TerrainColors array defines color thresholds for the player skin color anti-cheat check. Players who customize their skin color to be too similar to the terrain appearance may be kicked from multiplayer servers.
| Field | Type | Range | Purpose |
|---|---|---|---|
Color | color | RGBA | The actual base color/albedo of the terrain material. Players will be kicked if their customized skin color is too similar to this value. |
HueThreshold | float32 | 0 to 1 | If the difference between hues is greater than this threshold, the colors are not considered too similar. |
SaturationThreshold | float32 | 0 to 1 | If the difference between saturations is greater than this threshold, the colors are not considered too similar. |
ValueThreshold | float32 | 0 to 1 | If the difference between value (brightness) is greater than this threshold, the colors are not considered too similar. |
Music properties
The Loading_Screen_Music array and Death_Music field control map-specific audio.
| Field | Type | Purpose |
|---|---|---|
Loop | master bundle pointer | Looping audio clip played until loading finishes. |
Outro | master bundle pointer | Audio clip played once loading finishes. |
The Loading_Screen_Music array randomly selects an entry when the loading screen appears. Each entry in the array has the same structure with Loop and Outro properties. Death_Music is a single master bundle pointer to the audio clip played after the player dies.
Level asset fishing configuration
The level asset supports fishing configuration through two fields that control how fishing rods interact with the map's water volumes.
| Field | Type | Default | Purpose |
|---|---|---|---|
Supports_Fishing_Volumes | bool | false | If true, the level has assigned fishing spawn tables to water volumes (or uses the default table). |
Default_Fish_Spawn_Table | asset pointer | None | Per-water-volume fishing spawn tables fall back to this table if they do not have their own table assigned. |
The fish spawn tuning properties that are not fully documented in the official specification include the interaction between Default_Fish_Spawn_Table and per-volume overrides, the fallback chain when neither a per-volume table nor the default table is set, and the behavior when Supports_Fishing_Volumes is true but no water volumes exist on the map.
Zombie difficulty asset prioritization
The ZombieDifficultyAssetPrioritization field controls which zombie difficulty asset the engine uses when both a navmesh-based difficulty asset and a spawn-table-based difficulty asset are configured for the same area.
| Value | Behavior |
|---|---|
NavmeshOverridesTable (default) | The zombie difficulty asset assigned to the navmesh takes priority over the difficulty asset assigned to the spawn table. |
TableOverridesNavmesh | The zombie difficulty asset assigned to the spawn table takes priority over the difficulty asset assigned to the navmesh. |
The cohort recommendation for most maps is to use the default NavmeshOverridesTable and assign difficulty assets at the navmesh level. TableOverridesNavmesh is useful for maps where specific spawn table entries (such as boss encounter spawners) should override the surrounding navmesh difficulty regardless of which navmesh the boss area is on.
Level config structure
The level asset configuration structure branches into 13 independent configuration domains. Each domain is optional; a level asset can configure only the domains it needs and leave the rest at their defaults.
Frequently asked questions
How do I link a level asset to a map?
The level asset is linked to the map through the map's level config file. The level config references the level asset by its GUID. See Level Config Reference for the linking workflow.
Can I have different weather on different parts of the map?
Weather affects the entire map globally. To create localized weather effects, use ambience volumes with weather masks. The Global_Weather_Mask serves as the fallback for areas outside any ambience volume. Ambience volumes can override the weather mask for specific regions.
How do I disable a specific skill on my map?
Set the skill's Default_Level and Max_Unlockable_Level both to 0. The skill appears in the skills menu but cannot be unlocked and has no effect. The Overkill skill is commonly disabled on survival maps to prevent the damage progression from unbalancing the early game.
How do I prevent the default skillset loadout items from spawning?
Configure the Skillset_Loadouts dictionary with empty arrays for the skillsets that should have no starting items. Any skillset that is not listed in the dictionary uses the game's default loadout. Listing a skillset with an empty array overrides the default with nothing.
Can I add custom tags to a level for blueprint filtering?
Yes. Add asset pointers to TagAsset objects in the Tags array. Blueprints can then test for these tags as an alternative to map name checks. This is useful for blueprint sets that should work across multiple maps without hardcoding each map's name.
How do I configure the terrain colors to prevent skin color cheating?
Add a TerrainColors entry for each terrain material that has a base color. Set the Color to the material's albedo color, and set the HueThreshold, SaturationThreshold, and ValueThreshold to the sensitivity levels that the anti-cheat system should use. Typical threshold values are 0.05 to 0.1 for tight enforcement and 0.2 to 0.3 for relaxed enforcement.
What happens if Has_Clouds is false and no cloud override is configured?
The sky renders without clouds. The skybox shader's cloud layer is disabled, and no custom particle system clouds are spawned. This produces a clear-sky appearance that may look unfinished if the map's lighting configuration expects clouds.
How do I add custom weather to my map?
Add a Weather_Types array entry for each custom weather asset. Each entry specifies the weather asset pointer, the frequency range (min/max in-game days between occurrences), and the duration range (min/max in-game days the weather lasts). The weather asset itself defines the visual and gameplay effects of the weather event.
Can I have music that only plays in specific areas?
Loading screen music and death music are global to the map. Area-specific music is configured through the ambience volume system, not through the level asset. Ambience volumes can override audio for specific regions of the map.
Can I use the level asset to control per-player skill progression rates?
The Skills array overrides per-map skill behavior but does not distinguish between players. All players on the map use the same skill rules. For per-player skill progression rates, use the XP multiplier configuration in the server's Config.json file rather than the level asset's skill rules.
How do I create a map where fishing is disabled?
Set Supports_Fishing_Volumes to false (the default). Fishing rods will not interact with water volumes on the map. If Supports_Fishing_Volumes is true but no fishing spawn tables are configured, fishing rods will catch nothing or use the default fallback table.
Best practices
- Configure only the level asset sections that your map needs. Unnecessary sections increase the file size and complexity without adding value.
- Use explicit weather scheduling with
Weather_Typesrather than relying on legacy weather defaults. This gives you full control over which weather events can occur. - Set
Has_Cloudstotrueunless you have a specific reason to disable clouds and a working cloud override particle system. - Document terrain color thresholds in the map project so other mappers know the anti-cheat sensitivity.
- Keep skill rules simple: override only the skills that need different behavior, and leave the rest at their defaults.
- Test weather scheduling by setting short frequency and duration ranges (0.1 to 0.5 in-game days) during development, then adjust to production values before release.
- Use
Tagsfor cross-map blueprint compatibility instead of map name checks.
Appendix A: Level asset .dat field quick reference
| Field | Type | Section |
|---|---|---|
GUID | uint128 | Identity |
Type | string | Identity |
Dropship | master bundle pointer | Dropship |
AirdropAsset | asset pointer | Airdrop |
Crafting_Blacklists | array | Crafting |
Min_Stealth_Radius | float | Stealth |
Weather_Types | array | Weather |
Perpetual_Weather_Asset | asset pointer | Weather |
Global_Weather_Mask | u32 | Weather |
Skills | array | Skills |
Skillset_Loadouts | dictionary | Skills |
TerrainColors | array | Terrain |
Enable_Admin_Faster_Salvage_Duration | bool | Misc |
Has_Clouds | bool | Visual |
CloudOverride_Prefab | master bundle pointer | Visual |
CloudOverride_ParticleSystems | list | Visual |
Loading_Screen_Music | array | Audio |
Should_Animate_Background_Image | bool | Visual |
Death_Music | master bundle pointer | Audio |
UnderwaterFogDensity | float | Visual |
Allow_Building_In_Safezone_In_Singleplayer | bool | Gameplay |
Tags | list | Tags |
Supports_Fishing_Volumes | bool | Fishing |
Default_Fish_Spawn_Table | asset pointer | Fishing |
ZombieDifficultyAssetPrioritization | enum | Zombie |
Appendix B: Level asset weather scheduling reference
The table below provides cohort-validated frequency and duration ranges for common weather types.
| Weather type | Min_Frequency | Max_Frequency | Min_Duration | Max_Duration | Notes |
|---|---|---|---|---|---|
| Light rain | 0.5 | 1.5 | 0.3 | 0.8 | Frequent but short; keeps the map feeling dynamic |
| Heavy rain | 1.0 | 3.0 | 0.5 | 1.5 | Less frequent than light rain; lasts longer |
| Thunderstorm | 2.0 | 5.0 | 0.3 | 1.0 | Unpredictable; short but intense |
| Fog | 1.0 | 4.0 | 0.5 | 2.0 | Long duration for atmospheric persistence |
| Snow | 1.0 | 3.0 | 1.0 | 3.0 | Long duration; snow accumulation is a visual expectation |
| Sandstorm | 3.0 | 8.0 | 0.5 | 1.5 | Rare events; short bursts common in desert biomes |
| Acid rain | 5.0 | 10.0 | 0.3 | 0.8 | Very rare; short duration due to gameplay impact |
| Healing rain | 3.0 | 6.0 | 0.5 | 1.5 | Uncommon reward event; moderate duration |
Appendix C: Level asset skill identifier reference
The table below lists the internal skill identifiers used in the Skills array. The Id field must match these values exactly.
| Skill ID | Skill name | Default max level |
|---|---|---|
Overkill | Overkill | 5 |
Sharpshooter | Sharpshooter | 5 |
Parkour | Parkour | 5 |
Safezone | Safezone | 5 |
Vitality | Vitality | 5 |
Immunity | Immunity | 5 |
Toughness | Toughness | 5 |
Strength | Strength | 5 |
Warmblooded | Warmblooded | 5 |
Survival | Survival | 5 |
Healing | Healing | 5 |
Crafting | Crafting | 5 |
Outdoor | Outdoor | 5 |
Cooking | Cooking | 5 |
Fishing | Fishing | 5 |
Agriculture | Agriculture | 5 |
Mechanic | Mechanic | 5 |
Engineer | Engineer | 5 |
Dexterity | Dexterity | 5 |
Cardio | Cardio | 5 |
Diving | Diving | 5 |
Appendix D: Level asset troubleshooting table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Weather does not change | Weather_Types array is empty or weather assets are not configured | Add weather asset entries with appropriate frequency and duration |
| Custom weather never appears | Frequency range is too wide or the weather system did not select it | Narrow the frequency range or test with a minimal range |
| Skills have no effect | Skill ID string does not match the game's internal skill name | Verify the skill ID against the vanilla skill list |
| Skillset loadouts not applied | Skillset_Loadouts dictionary key does not match the skillset name | Verify the skillset key (Army, Fire, etc.) |
| Terrain color anti-cheat kicks players | Thresholds are too tight or terrain color entries are missing | Adjust thresholds to 0.1-0.2 or add missing terrain color entries |
| Cloud override not rendering | Particle system shader does not support ZClip False | Use Particles/Standard Surface (ZClip False) shader |
| No loading screen music | Loading_Screen_Music array is empty | Add music entries with valid bundle pointers |
| Fishing does not work on water volumes | Supports_Fishing_Volumes is false or no spawn tables are configured | Set to true and assign Default_Fish_Spawn_Table |
| Zombie difficulty ignored | ZombieDifficultyAssetPrioritization is set to the wrong mode | Switch mode or verify difficulty asset assignments |
| Airdrop model not appearing | AirdropAsset pointer is invalid | Verify the asset pointer GUID |
Appendix C: External references
- Smartly Dressed Games official modding documentation - Level Assets - the authoritative field reference.
- Unturned on Steam - the Unturned store page and community hub.
- Custom Map Creation: Project Setup - the level editor foundations article.
- Weather Asset Reference - the companion article for weather asset configuration.
- Level Config Reference - linking level assets to maps.
- Spawn Tables - loot table configuration tied to spawn tables.
Cross-references
- Road Asset Reference - the previous article; covers road and path spline configuration.
- Weather Asset Reference - the next article; covers weather asset field reference for custom weather events.
- Level Config Reference - linking level assets to maps.
- Custom Map Creation: Project Setup - the level editor foundations article.
- Spawn Tables - loot table configuration.
- Smartly Dressed Games modding documentation - official field reference.
- Unturned on Steam - game page and community.
Authoring checklist
Before using a level asset in a map project, confirm the following:
- [ ]
GUIDis unique and freshly generated - [ ]
TypeisSDG.Unturned.LevelAsset - [ ] Weather types are configured with appropriate frequency and duration ranges
- [ ] Skill rules use correct skill identifier strings
- [ ] Skillset loadout keys match the skillset naming convention
- [ ] Terrain color thresholds are set to appropriate sensitivity levels
- [ ] Cloud override uses the correct shader if custom clouds are needed
- [ ] Music entries reference valid audio clips in master bundles
- [ ] Fishing configuration is set according to the map's design
- [ ] Zombie difficulty prioritization is set to the intended mode
- [ ] Level asset is linked to the map through the level config
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Full LevelAsset .dat field reference covering weather, skills, loadouts, terrain colors, cloud overrides, music, fishing, zombie difficulty prioritization, and undocumented properties. |
