WorldGen V1.11 — Complete Setup Guide & Parameter Reference (UE5 Infinite Terrain Plugin)
──────────────────────────────────────────────────────────────────────────────
🌍 WorldGen V1.11 — Official Documentation
Runtime infinite terrain for Unreal Engine 5. Generates and streams terrain around the player while your game runs — no baking, no loading screens, no pre-built heightmaps. Eleven feature updates since launch.
► Fab Marketplace: https://www.fab.com/listings/e4e93fbe-9326-40b8-a043-a809f788306a
► Project files: https://www.patreon.com/posts/156845948
► Free playable demo: https://www.patreon.com/posts/156846235
Supports UE 5.4, 5.5, 5.6, 5.7
──────────────────────────────────────────────────────────────────────────────
🆕 WHAT'S NEW SINCE V1.0
V1.1 — Dense ISM grass system with world-snapped grid, clustering, slope sink
V1.2 — Hydraulic erosion (droplet simulation, fully async — zero game-thread cost)
V1.3 — Multiplayer + dedicated server mode (collision-only on server)
V1.4 — Real-time terrain deformation with persistent deltas
V1.5 — Distance-based LOD — configurable per-ring resolution array
V1.6 — Texture stretching fix, dynamic road expansion into newly streamed chunks
V1.7 — GrassGridSize, ISM foliage, CLMNoise (no third-party dependencies)
V1.8 — Exclusion Volumes — flatten terrain and suppress foliage for POIs
V1.9 — Terrain Query API, Actor Spawner, consumed-position persistence
V1.10 — Spatial Biomes (Tundra / Boreal / Desert / Tropical), desert sand layer
V1.11 — Runtime navigation mesh — auto-spawned NavMeshBoundsVolume that follows the player
──────────────────────────────────────────────────────────────────────────────
📦 INSTALLATION
OPTION 1 — From Fab Marketplace
Epic Games Launcher → Library → Vault
Find WorldGen → Install to Engine → select your engine version
Open your project → Edit → Plugins → search "WorldGen" → enable
Restart the editor when prompted
OPTION 2 — From Patreon Project File (source)
Copy the WorldGen folder into your project's Plugins/ directory
Right-click your .uproject → Generate Visual Studio project files
Open the solution, build, and launch the editor
The plugin enables automatically — no manual activation needed
OPTION 3 — Try the Free Playable Demo
A complete .exe demo with full streaming, foliage, and AI navigation:
► https://www.patreon.com/posts/156846235
──────────────────────────────────────────────────────────────────────────────
⚡ QUICK START
Step 1 — Place the actor
Search for WorldStreamingManager in the Place Actors panel and drag it into your level near world origin.
Step 2 — Assign a material
Create a terrain material (see Material Setup below) and assign it to WorldGen > Terrain Material.
Step 3 — Preview
Select the actor and click Preview Terrain in the Details panel. Terrain builds within a second or two.
Step 4 — Play
Hit Play. Terrain streams automatically around your player character. For AI, see the Runtime Navigation section.
──────────────────────────────────────────────────────────────────────────────
🔒 PATREON MEMBERS GET
► Full project files (ready to open in UE5) — https://www.patreon.com/posts/156845948
► Early access to V1.12 features as they're built
► 2,000+ files from all CodeLikeMe tutorials
► Direct support via Patreon messages
Join from $20/mo → https://www.patreon.com/cw/CodeLikeMe
──────────────────────────────────────────────────────────────────────────────
🎨 MATERIAL SETUP
WorldGen bakes all blend weights into vertex data. Your material reads these to drive layer blending.
VERTEX COLOR CHANNELS
• R (Red) = Water — 1.0 below sea level, 0.0 above. Binary, not a gradient.
• G (Green) = Grass — base layer remainder
• B (Blue) = Rock — height + slope based
• A (Alpha) = Snow — high-altitude cap
UV CHANNELS
• UV1.R (TextureCoordinate 1, R) = Beach / Sand — 1.0 at waterline, fades to 0 above. Also carries Desert biome sand weight when Spatial Biomes are enabled.
• UV1.G (TextureCoordinate 1, G) = Road (experimental)
MATERIAL PARAMETER
• SeaLevelZ (Scalar) — automatically pushed by WorldStreamingManager at BeginPlay and on parameter changes. Use this for a clean per-pixel underwater mask.
RECOMMENDED BLEND ORDER (inside → out)
Grass → Rock (VertexColor.B) → Snow (VertexColor.A) → Beach/Sand (UV1.R) → Road (UV1.G) → Underwater
CLEAN UNDERWATER MASK (recommended)
AbsoluteWorldPosition → Mask Z → Subtract SeaLevelZ → Multiply -1 → Divide 500 → Saturate → Lerp Alpha
This runs per-pixel and eliminates the waterline artifact you get with VertexColor.R on sloped terrain.
💡 The full project with materials already wired up is available to Patreon members → https://www.patreon.com/posts/156845948
──────────────────────────────────────────────────────────────────────────────
⚙️ PARAMETER REFERENCE
WORLDGEN | GENERAL
• Seed — Master world seed (default: 42)
• Tile Size (cm) — Chunk width/height. 200,000 = 2 km per tile
• Resolution — Vertices per side. Fallback when LOD is disabled. Default: 64
• Height Scale — Global height multiplier. Default: 1.0
• View Distance — Near-chunk radius. 4 = 9×9 = 81 chunks
• Terrain Load Delay (s) — Suspends gravity at startup while async collision cooks. Applied per-player including late joiners. Default: 4.0
• Terrain Material — Assign your terrain material here
• Enable LOD — Distance-based LOD system (default: true)
• LOD Resolutions — Resolution per Chebyshev ring. Default: [128, 128, 64]. Last entry reused for further rings.
WORLDGEN | HEIGHT RANGE
• Min Height (cm) — Ocean floor. Default: -175,000
• Max Height (cm) — Mountain peak. Default: 175,000
• Sea Level — Normalized 0–1. Default: 0.50
WORLDGEN | TERRAIN LAYERS
• Rock Start — Normalized height where rock begins. Must be above Sea Level.
• Rock Blend — Grass→rock transition width. Default: 0.10
• Snow Start — Height where snow begins. Default: 0.75
• Snow Blend — Rock→snow transition. Default: 0.06
WORLDGEN | MOUNTAINS
• Mountain Threshold — Controls mountain coverage. Raise for more flat plains.
• Mountain Blend — Plains→mountains transition smoothness. Default: 0.30
WORLDGEN | NOISE
• Noise Layers — Stack of noise layers. Layer 0 is always the continental base + mountain mask.
• Warp Strength — Domain warp amplitude in cm. 0 = disabled. Default: 8,000
• Warp Frequency — Default: 0.000033
DEFAULT NOISE LAYER STACK
Layer 0 — Continental | Perlin | freq 0.000001 | 3 octaves | Land/ocean + mountain mask
Layer 1 — Ridged | Ridged Multi | freq 0.000005 | 3 octaves | Mountain ridges and peaks
Layer 2 — Mountains | Simplex | freq 0.010000 | 1 octave | Mid-frequency mountain detail
Layer 3 — Ridges | Perlin | freq 0.000180 | 2 octaves | Fine ridge detail (disabled by default)
Since V1.7, noise is generated by CLMNoise — a custom implementation with no third-party dependencies.
WORLDGEN | BEACH
• Beach Width — Height band above sea level treated as sand. Default: 0.04
• Beach Flatten Strength — How flat the beach becomes. Default: 0.85
WORLDGEN | WATER
• Enable Water Plane — Flat ocean surface at sea level.
• Water Material — Assign your ocean/water material.
• Water Update Interval — How often the plane follows the player. Default: 2.0s
WORLDGEN | FAR TERRAIN
• Enable Far Terrain — Low-res LOD ring beyond the near grid.
• Far Tile Multiplier — Each far tile covers 4×4 near tiles. Default: 4
• Far View Distance — Far tile ring radius. Default: 3
• Far Tile Resolution — Vertices per far tile side. Default: 8
WORLDGEN | FOLIAGE
• Enable Foliage — Master foliage toggle. Disable during parameter iteration for 10× faster rebuilds.
• Max Foliage Distance — Chebyshev distance from player within which foliage spawns. Default: 2
• Foliage Assets — Array of BiomeFoliageAsset — one per biome.
• Foliage World Grid Size — Shared grid spacing for near/far foliage patterns. Default: 500 cm
WORLDGEN | GRASS (V1.1, V1.7)
• Enable Grass — Master toggle for the dense grass system
• Grass Assets — Array of UWorldGenGrassAsset
WORLDGEN | EROSION (V1.2)
• Enable Erosion — Hydraulic erosion simulation. Runs fully async. Auto-disabled at Resolution ≤ 32.
• Droplets — Droplets per chunk. Default: 4,000
• Erosion Strength — How aggressively droplets erode. Default: 0.3
• Deposition Rate — How quickly sediment deposits. Default: 0.3
• Evaporation Rate — Droplet water evaporation per step. Default: 0.05
• Sediment Capacity — Max sediment per unit speed/water. Default: 4.0
• Inertia — Momentum factor. 0 = sharp channels, 0.1 = meandering. Default: 0.05
• Brush Radius — Erosion spread in vertices. Default: 3
WORLDGEN | ROADS (Experimental) (V1.6)
• Enable Roads — Generate a procedural road network at BeginPlay
• Road Half Width (cm) — Flatten corridor radius. Default: 800
• Road Flatten Strength — How flat terrain becomes under roads. Default: 0.90
• Max Settlements — Settlement nodes found and connected. Default: 6
• Search Radius — World radius scanned for settlement sites. Default: 6 chunks
• Max Settlement Slope (deg) — Maximum slope for a valid settlement site. Default: 20
• Road Z Offset (cm) — Road mesh float height above terrain. Default: 10
• Road Slope Sensitivity — How strongly routing avoids slopes. Default: 5.0
WORLDGEN | SPAWNER (V1.9)
• Enable Spawner — Master toggle for the Actor Spawner system
• Spawner Assets — Array of UWorldGenSpawnerAsset
WORLDGEN | NAVIGATION (V1.11)
• Enable Navigation — Auto-spawns a single NavMeshBoundsVolume at BeginPlay and moves it with the player. No level setup needed.
The bounds volume is sized to (ViewDistance + 1) × TileSize. Z extent covers sea level to max height (ocean floor excluded — no nav budget wasted underwater). The volume moves whenever the player crosses a chunk boundary, keeping nav generation centred on the active streaming area.
WORLDGEN | BIOMES (V1.10)
• Enable Spatial Biomes — Master toggle. One checkbox — all biome systems activate.
• Temperature Frequency — Spatial frequency of temperature noise. Default: 0.000003 (~3 km zones)
• Humidity Frequency — Spatial frequency of humidity noise. Default: 0.000002 (~5 km zones)
• Temperature Seed Offset — Seed offset for temperature noise. Default: 100
• Humidity Seed Offset — Seed offset for humidity noise. Default: 200
Each of the four biomes (Tundra, Boreal, Desert, Tropical) has Snow Start, Rock Start, and Grass Mult controls — see the Spatial Biomes section below.
──────────────────────────────────────────────────────────────────────────────
🌿 FOLIAGE SETUP
Content Browser → Add → Miscellaneous → Data Asset → BiomeFoliageAsset
Set Biome (Grass / Rock / Snow / Beach)
Add entries in the Entries array — one per mesh type
Assign the asset to WorldGen > Foliage Assets on the streaming manager
FOLIAGE ENTRY PROPERTIES
• Mesh — Static mesh to scatter
• Density — Instances per m². 0.002 = ~1 per 500 m²
• Min/Max Normalized Height — Height range where this entry appears
• Min/Max Slope Degrees — Slope range. Use to keep trees off cliffs. Default: 0–45
• Scale Range — Random uniform scale min/max. Default: (0.8, 1.2)
• Seed Offset — Different seed per entry for varied patterns
• Vertical Offset (cm) — Z offset after terrain snap
• Position Jitter — Extra random XY displacement per instance. Default: 0.5
• View Distance — Chunk radius. Large trees: 3–4. Ground clutter: 1.
• bCluster — Enable cluster grouping
• Cluster Radius (cm) — Radius of each cluster group. Default: 5,000
• Num Clusters — Cluster centers per chunk. Default: 5
• Cluster Falloff — How quickly density drops from cluster center. Default: 1.0
• bGrowInShade — Allows spawning under tree canopy (useful for grass)
• bEnableCollision — Physics collision on instances
• bUseHISM — Use HISM instead of ISM (enables LOD but costs BVH rebuild). Default: off (V1.7 switched defaults to ISM).
RECOMMENDED SETUP
DA_Foliage_Grass (Grass biome) — Large trees (0.001, VD 4), shrubs (0.003, VD 2), tufts (0.01, VD 1, Grow in Shade ✓)
DA_Foliage_Rock (Rock biome) — Rock formations (0.002, clustering on)
DA_Foliage_Snow (Snow biome) — Dead trees, snow-covered rocks
DA_Foliage_Beach (Beach biome) — Driftwood, sea grass
💡 All four foliage assets and the terrain material are pre-configured in the Patreon project files → https://www.patreon.com/posts/156845948
──────────────────────────────────────────────────────────────────────────────
🌱 GRASS SYSTEM (V1.1, V1.7)
Dense world-snapped grass blades with clustering, slope-aware sinking, and per-instance scale variation.
CREATE A GRASS ASSET
Content Browser → Add → Miscellaneous → Data Asset → WorldGenGrassAsset
Configure the properties below
Assign to WorldGen | Grass → Grass Assets
GRASS ASSET PROPERTIES
• Mesh — Static mesh for grass blades
• Biome — Terrain biome where this grass spawns
• Density (per m²) — Instances per square meter. Default: 0.5
• Grass Grid Size (cm) — World-space spacing. Default: 100 (V1.7: fixed world-space, no longer chunk-relative)
• Grass Radius (cm) — Player radius within which grass spawns. Default: 5,000
• Min/Max Slope Degrees — Slope filter. Default: 0–35
• Scale Range — Default: (0.8, 1.2)
• Vertical Offset (cm) — Z offset
• Slope Sink Depth (cm) — Auto-sinks blades into terrain on slopes (eliminates floating blades)
• bAlignToNormal — Rotate blade to match terrain normal
• bEnableCollision / bCastShadow — Self-explanatory
• Position Jitter — Random offset [0–1]. Default: 0.5
• Clustering — bCluster, Num Clusters, Cluster Radius, Cluster Falloff (same semantics as foliage clustering)
──────────────────────────────────────────────────────────────────────────────
💧 HYDRAULIC EROSION (V1.2)
Droplet-based erosion simulation. Enable via WorldGen | Erosion → Enable Erosion. Runs fully on background threads — zero game-thread cost.
KEY DIALS
• Droplets — more droplets = more detail but longer chunk build time. 4,000 is a good balance.
• Erosion Strength + Deposition Rate — lower both for subtle weathering, raise both for dramatic carved valleys.
• Inertia — low (0.01) produces sharp straight channels; higher (0.1) produces natural meanders.
Erosion is automatically disabled at Resolution ≤ 32 to avoid artefacts.
──────────────────────────────────────────────────────────────────────────────
🛠️ TERRAIN DEFORMATION (V1.4)
Real-time sculpting with spherical brushes. Deltas persist across chunk rebuilds and survive LOD changes.
C++ / BLUEPRINT API
// Raise terrain at WorldPos within Radius by Strength
Manager->DeformTerrain(FVector2D WorldPos, float Radius, float Strength);
// Lower terrain — negative strength
Manager->DeformTerrain(FVector2D WorldPos, float Radius, -Strength);
// Restore terrain to original noise height
Manager->ClearDeformation(FVector2D WorldPos, float Radius);
──────────────────────────────────────────────────────────────────────────────
🚧 EXCLUSION VOLUMES (V1.8)
Place hand-authored content cleanly inside a procedural world — flat terrain, no foliage, smooth boundary.
SETUP
Search Place Actors for WorldGenExclusionVolume
Resize the box component to cover your content area
Position at your desired floor height (Z = flatten target when Auto Flatten Height is on)
Click Preview Terrain — terrain flattens to the volume's Z, foliage clears
PROPERTIES
• Flatten Terrain — Flatten height inside volume (default: on)
• Auto Flatten Height — Use actor Z as target height (default: on)
• Flatten Height (cm) — Manual override when Auto is off
• Flatten Strength — 1.0 = perfectly flat inside
• Blend Radius (cm) — Smooth ramp at the volume boundary. Default: 2,000
• Suppress Foliage / Suppress Grass — Clear trees / ground cover inside
──────────────────────────────────────────────────────────────────────────────
🎯 ACTOR SPAWNER (V1.9)
Scatter actual Actors (not ISM instances) across the world. Biome-aware, deterministic, rate-limited.
SETUP
Content Browser → Add → Miscellaneous → Data Asset → WorldGenSpawnerAsset
Configure the properties
Assign to WorldGen | Spawner → Spawner Assets
SPAWNER ASSET PROPERTIES
• Actor Class — Actor class to spawn
• Biome — Terrain biome where this actor appears
• Density — Spawn probability per grid cell (0–1). Default: 0.05
• Grid Size (cm) — World-space distance between candidates. Default: 5,000
• Spawn Radius (cm) — Player radius for spawning and maintenance. Default: 50,000
• Min/Max Normalized Height — Height filter
• Min/Max Slope Degrees — Slope filter. Default: 0–30
• Vertical Offset (cm) — Z offset after terrain snap
• Seed Offset — Different scatter pattern
• Max Spawns Per Frame — Prevents hitching when entering a dense area. Default: 3
CONSUMED POSITIONS (persistence)
// Mark a position consumed (player mined / collected the actor):
Manager->MarkSpawnConsumed(FVector2D(Actor->GetActorLocation()), SpawnerAsset);
// Save consumed positions to your save game:
TArray<int64> Keys = Manager->GetConsumedSpawnKeys();
// Restore on load:
Manager->RestoreConsumedSpawnKeys(LoadedKeys);
──────────────────────────────────────────────────────────────────────────────
📐 TERRAIN QUERY API (V1.9)
Sample any world XY position for height, slope, normal, and biome weights — useful for AI, gameplay logic, building placement.
// Full sample
FHeightmapSample S = Manager->SampleTerrainAt(FVector2D(X, Y));
// Height only
float Z = Manager->GetHeightAtWorldPos(FVector2D(X, Y));
FHeightmapSample FIELDS
• Height (float) — World Z in cm
• NormalizedHeight (float) — 0–1 between MinHeight and MaxHeight
• Slope (float) — Surface slope in degrees
• Normal (FVector) — Surface normal
• GrassWeight / RockWeight / SnowWeight — Matches VertexColor.G / B / A
• BeachWeight — Matches UV1.x
• WaterWeight — 1.0 below sea level
──────────────────────────────────────────────────────────────────────────────
🌎 SPATIAL BIOMES (V1.10)
Temperature and humidity noise fields create four distinct biome zones with smooth gradients between them.
Dry (M=0) Wet (M=1)
Cold Tundra → Boreal
(T=0)
Hot Desert → Tropical
(T=1)
Values between corners are bilinearly interpolated — no hard zone boundaries, all transitions smooth.
ENABLING
Select WorldStreamingManager → WorldGen | Biomes → Enable Spatial Biomes ☑ → Click Preview Terrain.
BIOME CORNERS (per-biome controls)
Tundra | Boreal | Desert | Tropical
Snow Start 0.15 | 0.35 | 0.99 | 0.90
Rock Start 0.25 | 0.40 | 0.55 | 0.60
Grass Mult 0.20 | 1.00 | 0.20 | 1.40
SAND (WorldGen | Biomes | Sand)
• Tundra / Boreal / Tropical Sand Mult — Default: 0.0 (no sand)
• Desert Sand Mult — Default: 1.0 (fully sandy floor)
• Desert Sand Top Norm — Normalized height where sand fully fades. Default: 0.45
The sand layer uses UV1.x — no material changes needed. Sandy desert floors appear automatically.
──────────────────────────────────────────────────────────────────────────────
🤖 RUNTIME NAVIGATION (V1.11)
WorldGen V1.11 adds first-class navigation mesh support. AI characters can navigate the procedurally generated world without any manual level setup.
HOW IT WORKS
When Enable Navigation is checked, WorldStreamingManager auto-spawns a single ANavMeshBoundsVolume at BeginPlay. The volume:
• Is sized to cover the active streaming radius plus one chunk of padding
• Restricts its Z extent to above sea level — no nav budget wasted on the ocean floor
• Moves to follow the player each time they cross a chunk boundary
• Notifies the navigation system on each move, triggering tile regeneration
REQUIRED PROJECT SETTINGS
Engine → Navigation System → Runtime Generation = Dynamic
Static mode only bakes nav at cook time and will not work with procedural terrain.
SETUP
Project Settings → Navigation System → Runtime Generation = Dynamic
Select WorldStreamingManager → WorldGen | Navigation → Enable Navigation ☑
Ensure a RecastNavMesh actor is in the level (add a Nav Mesh Bounds Volume then delete it — the RecastNavMesh persists)
Hit Play — the nav volume spawns automatically and nav tiles build around the player
💡 Press P in PIE to visualise the generated nav mesh.
AI CHARACTERS — NAV INVOKERS
For efficient navigation in an infinite world, add a Navigation Invoker component to every AI character.
Blueprint:
Open your AI character Blueprint
Add Component → Navigation Invoker
Set Tile Generation Radius (e.g. 10,000 cm)
Set Tile Removal Radius (e.g. 15,000 cm)
C++ (in constructor):
NavInvoker = CreateDefaultSubobject<UNavigationInvokerComponent>(TEXT("NavInvoker"));
NavInvoker->TileGenerationRadius = 10000.f;
NavInvoker->TileRemovalRadius = 15000.f;
The bounds volume defines where nav is allowed (centered on the player). Each invoker requests tile generation around its character within that area. No tiles are built outside the bounds volume.
──────────────────────────────────────────────────────────────────────────────
🌐 MULTIPLAYER (V1.3)
WorldGen streams terrain around all connected players simultaneously. No configuration required — multiplayer support is automatic when running as a server or listen server.
• Server — Builds collision-only geometry. No visual mesh, no foliage, no grass. Massive memory and CPU savings.
• Clients — Full visual terrain streams around each client's pawn.
• Gravity delay — Terrain Load Delay applied independently per player on spawn, including late joiners.
• Navigation — For dedicated server builds, nav is generated on the server from collision-only geometry. Clients don't generate nav.
──────────────────────────────────────────────────────────────────────────────
📊 PERFORMANCE GUIDE
High-end PC — Resolution 96–128 | View Distance 5–6 | Far Terrain on (VD 4) | LOD on | Full foliage + grass
Mid-range PC — Resolution 64–96 | View Distance 4 | Far Terrain on (VD 3) | LOD on | Foliage VD 2 max
Low-end — Resolution 32–48 | View Distance 3 | Far Terrain on (VD 2) | LOD on | Foliage VD 1 only
KEY NOTES
• Distance-based LOD (V1.5) means high near-chunk resolution costs less than it used to — outer rings auto-drop to lower res.
• Resolution is still the biggest near-chunk cost — 64→128 quadruples geometry per near chunk.
• Disable foliage while tuning noise — rebuilds are 10× faster.
• Keep ISM instances below ~15,000 per chunk per mesh.
• Enable Erosion only at Resolution ≥ 48 (auto-disabled below 32 anyway).
• Dedicated server skips visual mesh entirely — much cheaper than client.
──────────────────────────────────────────────────────────────────────────────
⚠️ KNOWN LIMITATIONS (V1.11)
• Road network is still marked experimental. V1.6 added dynamic road expansion into newly streamed chunks, but routing quality varies by terrain.
• UE's native Landscape Grass Tool is incompatible (WorldGen uses ProceduralMeshComponent, not Landscape).
• Runtime parameter changes — most parameters require calling PreviewTerrain() or rebuilding to take effect. Live tweaking during PIE is not supported for noise/biome parameters.
• Material not included — you must build your own terrain material using the channel reference above (or use the pre-wired material in the Patreon project files).
• Nav mesh follows the player — AI characters that stray beyond the streaming radius may temporarily have no nav data. Use Nav Invokers on AI to keep tiles built around them.
──────────────────────────────────────────────────────────────────────────────
❓ FAQ
Q: My terrain has no foliage.
A: Check that your BiomeFoliageAsset has meshes assigned, the asset is in the Foliage Assets array, and Enable Foliage is on. Also verify Rock Start is above Sea Level — if Rock Start ≤ Sea Level the grass zone disappears.
Q: Grass is bleeding through the beach or underwater.
A: Set up the per-pixel underwater mask using AbsoluteWorldPosition (see Material Setup above). VertexColor.R alone causes artifacts on sloped terrain near the waterline.
Q: I see visible chunk seams.
A: This is typically the material, not the geometry. Mesh normals are seamless by design. Check your material is not using an unsmoothed normal map or mismatched UV tiling. If you use a world-aligned texture, V1.6 added local UV coords (TextureCoordinate 0) — use those to keep texture scale stable at any world Tile Size.
Q: Preview Terrain is slow.
A: Disable foliage and grass and reduce View Distance to 2 while iterating on noise parameters. Re-enable once you're happy.
Q: AI characters can't path on the terrain.
A: Two things to check: (1) Project Settings → Navigation System → Runtime Generation = Dynamic. (2) Enable Navigation is on in WorldStreamingManager. If both are correct, press P in PIE to confirm nav tiles are actually being built around the player. For AI that needs nav far from the player, add a Navigation Invoker to the AI character.
Q: My buildings / hand-authored content gets erased when terrain streams.
A: Place a WorldGenExclusionVolume around your content (V1.8). Terrain flattens, foliage clears, smooth blend at the boundary.
Q: Can I use this in a shipped commercial game?
A: Yes. CLMNoise (V1.7) replaced FastNoise Lite — there are no third-party dependencies in the current plugin. License ships with all purchasers.
Q: Does multiplayer Just Work?
A: Yes. No configuration needed (V1.3). Server builds collision-only geometry. Clients get full visuals. Late joiners get the gravity delay applied independently.
──────────────────────────────────────────────────────────────────────────────
🗺️ ROADMAP
Shipped:
V1.1 ✓ Dense grass system
V1.2 ✓ Hydraulic erosion
V1.3 ✓ Multiplayer + dedicated server
V1.4 ✓ Terrain deformation
V1.5 ✓ Distance-based LOD
V1.6 ✓ Texture stretching fix, dynamic roads
V1.7 ✓ GrassGridSize, ISM foliage, CLMNoise (no third-party deps)
V1.8 ✓ Exclusion Volumes
V1.9 ✓ Terrain Query API, Actor Spawner, consumed-position persistence
V1.10 ✓ Spatial Biomes, desert sand layer
V1.11 ✓ Runtime navigation mesh
Coming:
V1.12 — Biome-driven heightmap variation (planned)
──────────────────────────────────────────────────────────────────────────────
🎓 WANT TO BUILD IT YOURSELF?
This entire plugin was built from scratch on the CodeLikeMe YouTube channel as the WorldEngine tutorial series. Every system — the chunk pool, noise stack, foliage scatter, erosion, LOD, biomes, navigation — is covered in detail across the series.
► Tutorial series: https://www.youtube.com/playlist?list=PLNTm9yU0zou6B6eqrPrRjODBd2OD-BVsh
The plugin is for developers who want to skip straight to shipping.
The series is for developers who want to understand every line.
──────────────────────────────────────────────────────────────────────────────
🎯 SKIP THE SETUP — GET THE PROJECT FILES
Everything in this guide is already configured in the Patreon project files. Materials wired up, foliage assets ready, demo map included with navigation, biomes, and erosion all dialled in. Open it in UE5 and start building your game.
► Download the project files: https://www.patreon.com/posts/156845948
► Try the free playable demo first: https://www.patreon.com/posts/156846235
► Get it on Fab: https://www.fab.com/listings/e4e93fbe-9326-40b8-a043-a809f788306a
► Join Patreon from $20/mo: https://www.patreon.com/cw/CodeLikeMe
Questions? Drop them in the comments — I read everything.
──────────────────────────────────────────────────────────────────────────────
CLMNoise (V1.7+) — custom noise implementation, no third-party dependencies.
