Skip to content

Foliage Asset Reference

The foliage asset system in Unturned controls the placement, density, scale, and visual behavior of every piece of instanced vegetation on a map: grass, pebbles, flowers, bushes, trees, and every other organically distributed surface detail. The system is split into two principal asset subtypes: FoliageResourceInfoAsset for trees and large resources that have their own collision and interaction behavior, and InstancedMeshInfoAsset for small, dense foliage such as grass and pebbles that are rendered through GPU instancing. The vanilla game ships over 240 InstancedMeshInfoAsset configurations and 69 tree types across the bundled landscapes and trees directories.

57 Studios has documented and validated the full foliage asset configuration surface across the Unturned mapping community. This article covers both foliage subtypes, the density and obstruction systems, angle constraints for terrain slope matching, the Uniform_Scale optimization, Tile_Dither fade behavior, the devkit foliage V1-to-V2 upgrade path, and the complete field reference for InstancedMeshInfoAsset drawn from the 240+ shipped configurations.

Foliage in the Unturned level editor showing grass, flowers, and trees on a terrain surface

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 want to configure foliage placement, density, and appearance on their map terrains. If you are new to Unturned mapping, start with Custom Map Creation: Project Setup for the editor foundations, then return here for foliage system configuration.

How the foliage system works

The foliage system evaluates a set of configuration parameters at terrain bake time to determine where each foliage type is placed. The system samples the terrain at regular intervals, checks the terrain material weight at each sample point, checks the surface angle, checks for obstructions, and places a foliage instance if all conditions are met.

As shown in the flowchart above, the foliage placement system evaluates three conditions at each sample point. The material weight filter constrains foliage to specific terrain material layers. The angle filter constrains foliage to terrain slopes within a specific range. The obstruction sphere prevents overlap with other objects.

Foliage asset subtypes

The foliage system defines two asset subtypes. Each subtype uses a different .dat format and serves a different purpose.

SubtypeType stringPurposeShipped count
FoliageResourceInfoAssetSDG.Framework.Foliage.FoliageResourceInfoAssetTrees and large resource foliage with collision and interaction69 tree types in Bundles/Trees/
InstancedMeshInfoAssetSDG.Framework.Foliage.InstancedMeshInfoAssetSmall dense foliage rendered through GPU instancing240+ in Bundles/Assets/Landscapes/Foliage/

FoliageResourceInfoAsset (trees)

The tree subtype defines how a tree resource is placed on the terrain. Trees are resources that the player can interact with (chop down, harvest wood from), unlike instanced mesh foliage which is purely visual.

.dat field reference

FieldTypeExampleRequiredPurpose
TypestringSDG.Framework.Foliage.FoliageResourceInfoAssetYesThe fully qualified type string for tree foliage assets.
GUIDuint128 hexa1b2c3d4e5f64a7b8c9d0e1f2a3b4c5dYesGlobally unique identifier.
ResourceAssetpointerAsset pointer to the actual tree resourceYesThe resource asset that defines the tree's harvestable behavior, health, and drops.
Obstruction_Radiusfloat2.0YesSpawn position is invalid if a sphere with this radius overlaps anything. Prevents trees from spawning inside buildings or other trees.
Densityfloat4.0YesThis value is poorly named. One tree will try to spawn per this many square meters. For example a value of 4 will spawn approximately once per 2m x 2m area. Smaller values produce denser tree coverage.
Min_Weightfloat0.0NoOnly spawn if landscape material weight is greater than this value. Range 0 to 1.
Max_Weightfloat1.0NoOnly spawn if landscape material weight is less than this value. Range 0 to 1. Together with Min_Weight, constrains trees to specific terrain material layers.
Min_Anglefloat0.0NoOnly spawn if surface angle is greater than this value. Range 0 to 90 degrees. For example a boulder only spawning on slopes steeper than 45 degrees.
Max_Anglefloat90.0NoOnly spawn if surface angle is less than this value. Range 0 to 90 degrees. For example a tree not growing on slopes steeper than 30 degrees.
Tile_DitherbooltrueNoPerformance-conscious option that fades out far-away foliage more quickly. Often enabled for foliage near the tile border. Defaults to true.
Uniform_ScaleboolfalseNoIf true, max and min scale are floats rather than Vector3. Enables an optimization for instanced mesh foliage.

Tree file structure

Bundles/Trees/<TreeType>/
├── TreeType.dat        ← FoliageResourceInfoAsset configuration
├── TreeType.unity3d    ← asset bundle containing the tree mesh and materials
└── (resource asset files)

Complete .dat example: pine tree

GUID b2c3d4e5f6a74a8b9c0d1e2f3a4b5c6d
Type SDG.Framework.Foliage.FoliageResourceInfoAsset
ResourceAsset 12345

Obstruction_Radius 3.0
Density 6.0
Min_Weight 0.3
Max_Weight 0.8
Min_Angle 0
Max_Angle 30
Tile_Dither true
Uniform_Scale false

This configuration places pine trees on terrain with material weight between 0.3 and 0.8, on slopes no steeper than 30 degrees, with one tree per 6 square meters (approximately one tree per 2.45m x 2.45m area). The obstruction radius of 3.0 prevents overlap with buildings, roads, and other trees.

InstancedMeshInfoAsset (grass, pebbles, small foliage)

The instanced mesh subtype defines small, dense foliage rendered through GPU instancing. These are purely visual elements with no collision or player interaction. The vanilla game ships over 240 InstancedMeshInfoAsset configurations in Bundles/Assets/Landscapes/Foliage/.

.dat field reference

FieldTypeExampleRequiredPurpose
TypestringSDG.Framework.Foliage.InstancedMeshInfoAssetYesThe fully qualified type string for instanced mesh foliage assets.
GUIDuint128 hexa1b2c3d4e5f64a7b8c9d0e1f2a3b4c5dYesGlobally unique identifier.
Meshmaster bundle pointerPointer to the mesh assetYesThe mesh rendered for each foliage instance. Can be a grass blade, a pebble, a flower, a small bush, or any small mesh.
Materialmaster bundle pointerPointer to the material assetYesThe material applied to the mesh. Must use a foliage-compatible shader.
Densityfloat2.0YesSame as tree density: one instance per this many square meters. Smaller values produce denser foliage.
Obstruction_Radiusfloat0.5YesSpawn position is invalid if a sphere with this radius overlaps anything.
Min_Weightfloat0.0NoOnly spawn if terrain material weight is above this threshold.
Max_Weightfloat1.0NoOnly spawn if terrain material weight is below this threshold.
Min_Anglefloat0.0NoOnly spawn if surface angle is above this threshold.
Max_Anglefloat90.0NoOnly spawn if surface angle is below this threshold.
Min_Scalefloat or Vector30.8NoMinimum scale factor applied to each instance. Float when Uniform_Scale is true; Vector3 when false.
Max_Scalefloat or Vector31.2NoMaximum scale factor. Scale is randomly chosen between min and max for each instance.
Uniform_ScalebooltrueNoIf true, max and min scale are floats rather than Vector3. This enables an optimization for instanced mesh foliage like grass and pebbles, packing more instances per batch. Requires shaders that support uniform scaling, such as Framework/Grass (Uniform Scaling) and Framework/Detail (Uniform Scaling).
Tile_DitherbooltrueNoFades out far-away foliage more quickly near tile borders. Often enabled for small, dense, high-quantity foliage like grass and pebbles.

Complete .dat example: grass patch

GUID c3d4e5f6a70b4a8c9d0e1f2a3b4c5d6e
Type SDG.Framework.Foliage.InstancedMeshInfoAsset
Mesh core.masterbundle /Foliage/Grass/GrassBlade.fbx
Material core.masterbundle /Foliage/Grass/GrassMaterial.mat

Density 1.5
Obstruction_Radius 0.3
Min_Weight 0.2
Max_Weight 0.9
Min_Angle 0
Max_Angle 45
Min_Scale 0.8
Max_Scale 1.4
Uniform_Scale true
Tile_Dither true

This configuration places grass instances on terrain with material weight between 0.2 and 0.9, on slopes up to 45 degrees, with approximately one instance per 1.5 square meters. The random scale varies between 0.8x and 1.4x for visual variety.

Complete .dat example: pebble scatter

GUID d4e5f6a70b14a8c9d0e1f2a3b4c5d6e7
Type SDG.Framework.Foliage.InstancedMeshInfoAsset
Mesh core.masterbundle /Foliage/Pebbles/PebbleMesh.fbx
Material core.masterbundle /Foliage/Pebbles/PebbleMaterial.mat

Density 3.0
Obstruction_Radius 0.2
Min_Weight 0.0
Max_Weight 1.0
Min_Angle 0
Max_Angle 90
Min_Scale 0.5
Max_Scale 1.5
Uniform_Scale true
Tile_Dither false

This configuration scatters pebbles across all terrain material types and all slope angles, at a density of one per 3 square meters. Tile_Dither is disabled because pebbles at the tile border should not fade out abruptly.

Foliage density and placement tuning

The density system controls how many instances of a foliage type appear per unit area. Understanding the density-to-coverage relationship is essential for achieving the intended visual result.

Density valueApproximate spacingCoverage character
0.50.7m x 0.7mDense coverage, almost continuous
1.01.0m x 1.0mModerate density, visible spacing
2.01.4m x 1.4mSparse coverage, clear gaps
4.02.0m x 2.0mWidely spaced, individual instances visible
8.02.8m x 2.8mVery sparse, isolated instances

The density value is evaluated per foliage type. Multiple foliage types with overlapping material weight and angle ranges will all place instances in the same area, producing a layered effect.

Terrain material weight constraints

The Min_Weight and Max_Weight fields constrain foliage to specific terrain material layers. Terrain materials in Unturned are painted using the landscape material system, which blends multiple textures based on weight values.

Weight rangeMaterial typeTypical usage
0.0 - 0.2Bare terrain, rockPebbles, rocks, cacti
0.2 - 0.5Sparse grassThin grass, flowers, small bushes
0.5 - 0.8Dense grassThick grass, dense bushes
0.8 - 1.0Forest floorFerns, moss, forest undergrowth

The weight values correspond to the blend weight of the terrain material layer painted in the level editor. A terrain area painted with 100% grass material has a weight of 1.0 for that layer.

Surface angle constraints

The Min_Angle and Max_Angle fields constrain foliage to specific terrain slopes. The angle is measured from horizontal: 0 degrees is flat ground, 90 degrees is a vertical cliff.

Angle rangeSlope characterTypical foliage
0 - 20Gentle slopesGrass, flowers, most trees
20 - 45Moderate slopesHardy grasses, shrubs, cliff-dwelling trees
45 - 70Steep slopesMoss, lichen, cliff vegetation
70 - 90Near-verticalOnly specialized cliff foliage

Using angle constraints correctly prevents trees from spawning on vertical cliff faces and prevents grass from spawning in areas where it would clip through the terrain.

The Uniform_Scale optimization

The Uniform_Scale field enables a GPU instancing optimization for instanced mesh foliage. When Uniform_Scale is true, the minimum and maximum scale are floats rather than Vector3, which means the mesh is scaled uniformly on all axes. This allows the GPU instancing system to pack more instances per draw call.

SettingScale typePerformanceUse case
Uniform_Scale trueFloatHigher (more instances per batch)Grass, pebbles, small dense foliage
Uniform_Scale falseVector3Lower (fewer instances per batch)Flowers, plants with non-uniform aspect ratios

The Uniform_Scale optimization requires shaders that support uniform scaling. The vanilla shaders Framework/Grass (Uniform Scaling) and Framework/Detail (Uniform Scaling) provide this support.

Tile_Dither behavior

The Tile_Dither field controls a performance optimization that fades out foliage near the edges of terrain tiles. When enabled, foliage instances near the tile border become progressively more transparent rather than cutting off abruptly. This reduces the visual pop of foliage appearing and disappearing as the player moves across tile boundaries.

SettingVisual effectPerformance
Tile_Dither trueFoliage fades out near tile bordersMore draw calls, smoother visual transition
Tile_Dither falseFoliage cuts off at tile bordersFewer draw calls, visible pop

The default value is true. The cohort recommendation is to disable Tile_Dither only for foliage types that are too sparse for the fade to be noticeable (isolated large rocks, widely spaced cacti).

Devkit foliage V1 to V2 upgrade

The devkit foliage storage format was upgraded from V1 to V2 to improve map file performance. Understanding the upgrade is essential for map authors working with maps created before the 3.22.8.0 update.

V1 format

V1 of devkit foliage saved each small, individual region into its own files. This made maps slow to copy, download, and install because the foliage data was fragmented across thousands of small files.

V2 format

V2 fixes this by storing pointers for each region into a single file. The consolidated format reduces file count, improves copy and download speed, and simplifies the map folder structure. The trade-off is increased RAM usage in the map editor because the consolidated file must be loaded into memory.

Upgrade path

Following the 3.22.20.0 update, maps using V1 foliage will automatically update to V2 the next time they are saved. The automatic upgrade does not require the -SaveFoliageUsingV2 command-line argument, which was used for manual conversion in earlier versions.

The older V1 foliage files are still kept in the map's Foliage/ directory as a backup after conversion. These V1 files can be manually removed after having converted to V2, freeing up disk space.

Upgrade notes

Maps with auto-converted terrain from the 3.22.8.0 update will have already been converted to V2. The backup V1 files can be safely deleted once the conversion has been verified. If a map is still on V1, the next save in any version after 3.22.20.0 triggers the automatic upgrade.

Foliage file locations

Foliage typeLocationShipped count
Instanced mesh (grass, pebbles)Bundles/Assets/Landscapes/Foliage/240+
Tree typesBundles/Trees/<TreeType>/69
Tree .dat filesBundles/Trees/<TreeType>/TreeType.datPer tree type

Foliage chain

The foliage chain from configuration to rendering involves the .dat file defining placement rules, the terrain bake evaluating those rules across the terrain surface, and the rendering system drawing all placed instances through GPU instancing for performance.

Frequently asked questions

What is the difference between FoliageResourceInfoAsset and InstancedMeshInfoAsset?

FoliageResourceInfoAsset defines trees and large foliage that have collision, player interaction, and resource harvesting behavior. InstancedMeshInfoAsset defines small, dense foliage (grass, pebbles, flowers) that is purely visual and rendered through GPU instancing. Trees use the resource system; grass uses the instanced mesh system.

How do I make trees spawn only on certain terrain materials?

Use the Min_Weight and Max_Weight fields. Set Min_Weight to the minimum terrain material blend weight and Max_Weight to the maximum. For example, to place trees only on the grass layer (weight 0.5-1.0), set Min_Weight 0.5 and Max_Weight 1.0. The tree will not spawn on bare rock, sand, or other materials outside this range.

How do I prevent trees from spawning on steep slopes?

Use the Min_Angle and Max_Angle fields. Set Max_Angle to the steepest slope the tree should grow on. A value of Max_Angle 30 means trees will not spawn on slopes steeper than 30 degrees from horizontal. Boulders and cliff vegetation would use higher angle values.

What is the obstruction radius and when should I adjust it?

The Obstruction_Radius defines a sphere around each potential spawn position. If anything overlaps this sphere (another tree, a building, a road), the position is invalid and no foliage is placed. Increase the radius for large trees to prevent them from spawning inside buildings. Decrease it for small grass to allow dense coverage.

How do I create custom grass meshes for foliage?

Author a small mesh in Blender (a single grass blade is typically 4-8 triangles), export as FBX, import into Unity, assign the foliage-compatible shader, bundle the mesh and material into a master bundle, and reference them in a new InstancedMeshInfoAsset .dat file.

What shader should I use for instanced mesh foliage?

Use Framework/Grass (Uniform Scaling) for grass-like foliage when Uniform_Scale is enabled. Use Framework/Detail (Uniform Scaling) for other small instanced meshes. These shaders support the uniform scaling optimization that improves GPU instancing performance.

How do I remove the V1 backup foliage files after upgrading to V2?

Navigate to the map's Foliage/ directory and delete the V1 backup files. The V2 single-file format is active and the V1 files are no longer needed. Verify the map loads and foliage appears correctly after deletion. The cohort recommendation is to keep the V1 files until the map has been tested and confirmed stable on V2.

Can I use foliage from one map on another map?

Foliage configuration is part of the map's Level.dat and foliage directory. The foliage asset files (.dat and bundles) can be copied between maps, but the terrain bake must be re-run on the new map because the placement depends on the specific terrain shape and material layers of that map.

What is the maximum foliage density?

There is no hard maximum density enforced by the engine, but practical limits are imposed by GPU performance. Dense foliage with Density 0.5 on a large map with multiple foliage types can produce millions of instances, which will impact frame rate. The cohort recommendation is to start with Density 2.0 and decrease (denser) only after testing performance on target hardware.

How do I make foliage that only appears in one biome?

Biome-specific foliage is achieved through the Min_Weight and Max_Weight constraints combined with terrain material painting. Paint different terrain materials for different biomes, then configure each foliage type to only spawn on the materials associated with its biome. This is the standard technique for creating distinct forest, desert, and grassland biomes on the same map.

Can I use non-uniform scale for grass foliage?

Non-uniform scale (Uniform_Scale false) is supported for grass foliage but reduces GPU instancing performance. Use uniform scale for grass and pebbles where the scale variation does not need to be axis-specific. Reserve non-uniform scale for flowers, bushes, and plants where the width and height should scale independently.

How do I create foliage that appears in specific seasons?

Season-specific foliage is achieved through separate foliage configurations for different times of the in-game year. Create multiple InstancedMeshInfoAsset configurations with the same mesh and material but different terrain material weight constraints, and change the active foliage configuration when the in-game season changes. This requires server-side scripting or map-level configuration updates.

Can I use foliage assets for objects other than vegetation?

Foliage assets are designed for vegetation and surface scatter. Using them for non-vegetation objects such as debris or structural elements is technically possible but not recommended. The GPU instancing system assumes small, simple meshes with foliage-compatible shaders. For non-vegetation scattered objects, use object placement with spawn tables instead.

What is the performance impact of having many foliage types on a single map?

Each foliage type requires a separate draw call batch for its GPU instanced meshes. 30-50 foliage types on a single map is the range where performance impact becomes measurable on mid-range hardware. The cohort recommendation is to keep foliage type counts under 20 per biome area and under 40 total for the entire map.

What happens to foliage when I repaint terrain materials?

Existing foliage placement is baked into the map based on the terrain material configuration at the time of the bake. Repainting terrain materials does not automatically remove or re-evaluate existing foliage. The map author must re-bake the terrain to apply new foliage placement rules.

Best practices

  • Layer multiple foliage types with overlapping but different material weight ranges to create natural-looking vegetation transitions at biome boundaries.
  • Use angle constraints to prevent foliage from spawning on vertical terrain features such as cliff faces and building walls.
  • Enable Uniform_Scale for grass and pebbles to maximize GPU instancing performance.
  • Set Tile_Dither to true for dense foliage and false for sparse or large foliage types.
  • Keep individual foliage .dat files organized in a folder structure that mirrors the map's biome layout.
  • Test foliage density at the maximum view distance to ensure the intended coverage level reads correctly from a distance.
  • Run the foliage bake as one of the final terrain steps to avoid re-baking after material repainting.
  • Delete V1 backup foliage files only after verifying V2 conversion is stable.
  • Use Obstruction_Radius values that are proportional to the foliage size: 0.2-0.5 for grass, 0.5-1.0 for bushes, 2.0-4.0 for trees.

Appendix A: Foliage .dat quick-reference template

InstancedMeshInfoAsset template

GUID <generated-uuid-no-hyphens>
Type SDG.Framework.Foliage.InstancedMeshInfoAsset
Mesh <bundle> <path/to/mesh>
Material <bundle> <path/to/material>

Density 2.0
Obstruction_Radius 0.5
Min_Weight 0.0
Max_Weight 1.0
Min_Angle 0
Max_Angle 90
Min_Scale 0.8
Max_Scale 1.2
Uniform_Scale true
Tile_Dither true

FoliageResourceInfoAsset template

GUID <generated-uuid-no-hyphens>
Type SDG.Framework.Foliage.FoliageResourceInfoAsset
ResourceAsset <asset-id>

Obstruction_Radius 2.0
Density 4.0
Min_Weight 0.0
Max_Weight 1.0
Min_Angle 0
Max_Angle 30
Tile_Dither true
Uniform_Scale false

Appendix B: Foliage density tuning reference table

The table below provides cohort-validated density values for common foliage types based on shipped vanilla configurations and community testing.

Foliage typeRecommended DensityRecommended Obstruction_RadiusRecommended Uniform_ScaleRecommended Tile_Dither
Short grass1.0-2.00.2-0.3truetrue
Tall grass2.0-3.00.3-0.5truetrue
Flowers3.0-5.00.3-0.4falsetrue
Pebbles/scatter3.0-6.00.1-0.2truefalse
Small bushes4.0-8.00.5-0.8falsetrue
Large bushes8.0-15.00.8-1.5falsetrue
Ferns/undergrowth2.0-4.00.3-0.5falsetrue
Moss1.0-2.00.1-0.2truetrue
Cacti (desert)10.0-20.01.0-2.0falsefalse
Beach debris5.0-10.00.5-1.0truefalse

Appendix C: Tree type configuration reference

The table below provides cohort-validated configuration values for common tree types.

Tree typeRecommended DensityRecommended Obstruction_RadiusRecommended Min_WeightRecommended Max_WeightRecommended Max_Angle
Pine/evergreen4.0-8.03.0-4.00.20.930
Deciduous6.0-12.03.0-5.00.30.825
Palm10.0-20.03.0-5.00.00.520
Desert acacia15.0-30.03.0-4.00.00.315
Tundra spruce8.0-15.03.0-4.00.31.035
Jungle hardwood8.0-15.04.0-6.00.41.040
Orchard/fruit10.0-20.03.0-4.00.50.920

Appendix D: Foliage performance optimization checklist

  • [ ] Uniform_Scale is enabled for grass and pebble foliage to maximize GPU instancing
  • [ ] Foliage type count is under 20 per biome area
  • [ ] Individual mesh triangle counts are under 50 triangles for instanced mesh foliage
  • [ ] Tile_Dither is enabled for dense foliage near tile borders
  • [ ] Density values are tuned to the minimum necessary for visual coverage
  • [ ] Tree obstruction radii prevent overlap without excessive spacing
  • [ ] Foliage meshes use foliage-compatible shaders (Framework/Grass, Framework/Detail)
  • [ ] Texture atlases are used where multiple foliage materials share the same shader
  • [ ] V2 foliage format is active and V1 backups have been removed after verification

Appendix E: Foliage asset troubleshooting table

SymptomMost likely causeResolution
Foliage does not appear after bakeMaterial weight or angle constraints exclude all terrain areasVerify Min_Weight/Max_Weight and Min_Angle/Max_Angle cover the intended terrain
Foliage appears in wrong areasMaterial weight constraints are too broadNarrow the weight range to the specific terrain material
Foliage density is too lowDensity is set too highDecrease the Density value (smaller numbers = denser)
Foliage density is too highDensity is set too lowIncrease the Density value (larger numbers = sparser)
Trees spawning inside buildingsObstruction_Radius is too smallIncrease the obstruction radius
Grass visible at tile borders with sharp cutoffTile_Dither is falseEnable Tile_Dither for smoother borders
Foliage instances appear stretched or squashedMin_Scale/Max_Scale values produce extreme aspect ratiosAdjust scale range to 0.5-1.5 for natural variation
Foliage disappears at medium distanceLOD or culling settings are too aggressiveAdjust foliage LOD and culling in level editor settings
Foliage uses wrong materialMaterial pointer references incorrect bundle pathVerify the bundle name and material path
Foliage mesh not foundMesh pointer references missing bundle or incorrect pathVerify the bundle name and mesh path
Map loads slowly with V1 foliageMap is using devkit foliage V1 with fragmented filesSave the map to trigger automatic V2 conversion, then delete V1 backups

Appendix C: External references

Cross-references

Appendix F: Foliage biome configuration reference

The table below provides cohort-validated foliage type combinations for common biomes.

BiomeGrass typeGround coverBushesTrees
Temperate forestShort green grassFerns, moss, flowersSmall deciduous bushesPine and oak mix
DesertSparse tan grassPebbles, small rocksDry brushCacti, acacia
TundraShort pale grassMoss, lichenLow alpine shrubsSpruce, bare pines
TropicalDense green grassFerns, vinesDense tropical bushesPalm, hardwood
GrasslandMedium green grassWildflowersScattered bushesFew trees, widely spaced
SwampDark green grassReeds, cattailsDense wetland shrubsCypress, mangrove
VolcanicSparse dark grassDark pebbles, ashHardy scrubFew trees

Appendix G: Foliage biome configuration by terrain material weight

BiomeGrass weight rangeGround cover weight rangeBush weight rangeTree weight range
Temperate forest0.2-0.90.3-0.80.4-0.80.5-0.8
Desert0.0-0.30.0-0.50.0-0.20.0-0.2
Tundra0.2-0.70.2-0.60.2-0.50.3-0.6
Tropical0.3-1.00.4-0.90.4-0.90.5-1.0
Grassland0.2-0.80.2-0.60.2-0.50.3-0.6
Swamp0.6-1.00.5-1.00.5-0.90.6-1.0

Authoring checklist

Before using a foliage asset in a map project, confirm the following:

  • [ ] GUID is unique and freshly generated
  • [ ] Type is correct for the foliage subtype
  • [ ] Density produces the intended coverage level
  • [ ] Min_Weight / Max_Weight constrain foliage to the correct terrain materials
  • [ ] Min_Angle / Max_Angle prevent spawning on inappropriate slopes
  • [ ] Obstruction_Radius is proportional to the foliage size
  • [ ] Uniform_Scale is enabled for grass and pebbles
  • [ ] Tile_Dither is enabled for small dense foliage
  • [ ] Mesh and material pointers reference valid bundle paths
  • [ ] Terrain bake has been run after configuration changes
  • [ ] V1 backup foliage files are deleted after confirming V2 is stable

Document history

VersionDateAuthorNotes
1.02026-07-2657 StudiosInitial publication. Full foliage asset field reference covering InstancedMeshInfoAsset and FoliageResourceInfoAsset, density and constraint systems, uniform scale optimization, V2 upgrade path, 240+ shipped configurations reference.