Skip to content

WorldGen troubleshooting

Characters fall through the terrain when the game starts

Section titled “Characters fall through the terrain when the game starts”

Terrain collision is cooked asynchronously, so it may not be ready on the first frames. Terrain Load Delay (default 4 seconds) suspends gravity while it cooks, applied per player including late joiners. Raise it if players still fall through.

For AI characters created by the actor spawner, turn on Apply Terrain Load Delay on the spawner asset.

Chunks show permanent seams after changing height settings

Section titled “Chunks show permanent seams after changing height settings”

If you change height parameters (MinHeight, MaxHeight, HeightScale, SeaLevel, SnowStart, RockStart or the noise layers) at runtime, call ReinitializeNoise() afterwards. It pushes the new values to the noise generator and rebuilds all chunks:

Manager->MinHeight = -300000.f;
Manager->MaxHeight = 300000.f;
Manager->ReinitializeNoise();

Changing them while chunks are loading without this call leaves permanent seams.

This is a known limitation of experimental runtime navigation. At large Tile Sizes (including the 2 km default), Unreal’s runtime navmesh only generates over part of the area around the player, and waiting does not fill it in. The volume is placed correctly; it is an engine-side limit at this scale.

Fix: use a smaller Tile Size and/or View Distance. Also add a Navigation Invoker to every AI character for demand-driven tile generation:

NavInvoker = CreateDefaultSubobject<UNavigationInvokerComponent>(TEXT("NavInvoker"));
NavInvoker->TileGenerationRadius = 10000.f;
NavInvoker->TileRemovalRadius = 15000.f;
  1. Set Project Settings → Navigation System → Runtime Generation to Dynamic. Static mode only bakes at cook time and does not work with procedural terrain.
  2. Tick WorldGen → Navigation → Enable Navigation on the manager.
  3. Make sure the level has a RecastNavMesh: add a Nav Mesh Bounds Volume from Place Actors, then delete it. The RecastNavMesh it created stays.
  4. Press P in PIE to visualise the navmesh.

Navigation covers only terrain above sea level, and nav agent settings live on the RecastNavMesh actor, not on WorldGen.

  • Tick Enable Roads and assign a Road Asset and Settlement Asset on the manager. With roads off, the proximity filter is ignored.
  • Tick Enable Spawner and add the assets to Spawner Assets.
  • With Stay On Graded Shoulder on, a building too deep to fit inside the road’s Road Blend Radius logs a warning. Use a smaller building, a larger blend radius, or turn the option off.
  • Tune Grid Size and Density to control how often buildings appear. The proximity band controls where they go, not how many.

Building foundations are exposed on slopes

Section titled “Building foundations are exposed on slopes”

The test suite reports this as Building.UndersideExposed. Author the mesh with its pivot at floor level and a slab below it, then:

  • Set Foundation Depth to the slab’s depth (the demo buildings use 600).
  • Turn on Stand On Highest Point, so the building stands on the highest ground under its footprint and the slab covers the downhill side.
  • Lower the asset’s Max Slope if the ground still drops further than the slab.

Lower Max Spawns Per Frame on the spawner asset. The budget is per asset, so a dense spawner no longer starves the ones after it (fixed in 1.16).

Raise Road Z Offset on the road asset. It floats the road mesh above the graded bed.

Roads only appear once you are standing on them

Section titled “Roads only appear once you are standing on them”

This was fixed in 1.16: exit roads now build as soon as either of their towns is in range. Also check Road Visual Radius (how many settlement cells around the player get road meshes).

Increase Slope Sink Depth on the grass asset, which sinks blades into sloped ground.

Near and far grass assets z-fight or double up

Section titled “Near and far grass assets z-fight or double up”

Since 1.13.1, use one grass asset with a large Grass Radius and a small Collision Range instead of a separate near/far pair. You get the full visual field with physics only near the player.

Erosion is automatically disabled at Resolution 32 or lower, to avoid artefacts. Raise the resolution.

The manager writes WaterLevelZ and CameraUnderwater into the Water Param Collection (MPC_WorldGen by default). Make sure that collection is assigned and that your post-process material (such as the included underwater material) reads it. Wave Height is added to sea level when working out the underwater level.

Debug towers and squares appear at settlements

Section titled “Debug towers and squares appear at settlements”

Turn off Show Debug Shapes on the road asset. It is a tuning aid and should be off for shipping.