Contents
Unreal Engine 5.8 · System guide
PCG
Build and optimize procedural content graphs
On this page
Choose a task
Choose an approach
Build and understand
Workflow and boundaries
Use these checks when a task crosses several systems. The focused references above contain the specific actions.
Ownership boundary
This skill owns procedural sampling, graph data, generation, cleanup, and generated-output ownership.
Route source-path mechanics to unreal-splines, source-terrain
deformation/paint to unreal-landscape, and World Partition cells,
streaming sources, Data Layers, and HLODs to
unreal-world-partition.
Select generation ownership
- Use editor generation for authored world content that must persist, cook, build HLODs, support collision/navigation, or be manually reviewed before shipping.
- Use non-partitioned generation for bounded tools and small generation domains.
- Use partitioned generation when a large domain must split into streamable cells.
- Use hierarchical generation when large-scale shared work and small-scale detail require different grid sizes.
- Use runtime generation only when content genuinely depends on runtime sources/state and its generation, cleanup, memory, and visual-pop costs fit the target budget.
- Use GPU execution only after a representative CPU/GPU trace proves enough parallel work to amortize transfers and dispatch preparation.
Read references/system-selector.md before choosing.
Design the data contract first
- Identify the spatial source: volume, surface, spline/line, points, actor data, or polygon.
- Declare each metadata attribute's name, type, units, producer, consumer, and default.
- Define stable seeds and which operations intentionally mutate them.
- Separate selection data from spawn/presentation data.
- Define exclusion/clearance rules before adding variation.
- Choose output ownership: instances, Actors, data assets, or downstream graph data.
- Decide what is authoritative, persisted, streamed, rebuilt, or disposable.
Read references/data-model-graph-design.md.
Build in dependency order
- Confirm the PCG plugin and any required interop plugins are enabled.
- Create the smallest graph: input -> sample -> debug/inspect -> output.
- Establish bounds, projection, point density, and deterministic seed behavior.
- Filter invalid slopes, heights, surfaces, tags, and exclusion volumes.
- Add transforms and mesh/actor selection through explicit attributes.
- Spawn only after point data is correct.
- Expose instance parameters and extract reusable subgraphs/templates.
- Choose partition/hierarchy/runtime grids from content scale and streaming ownership.
- Integrate Data Layers/HLOD and batch builders for persistent large-world output.
- Profile node cost, scheduling, instance count, memory, CPU/GPU transfers, and visual pops.
Use references/sampling-spawning-patterns.md,
references/parameters-tools-overrides.md, and
references/world-partition-integration.md.
Respect UE 5.8 maturity boundaries
- PCG Editor Mode is Experimental.
- UE 5.8's non-destructive manual editing/Data Override system is Experimental.
- PCG GPU Processing is Beta.
- GPU Procedural Instancing in the GPU Static Mesh Spawner path is Experimental and lacks persisted instances, collision, navigation, ray tracing, distance-field lighting, HLOD, and static baked-lighting support.
- PCG Biome Core/Sample remains Experimental; treat it as an example architecture.
Read references/gpu-processing.md.
Hard rules
- Inspect points and attributes before spawning content.
- Keep graph parameters typed, named, documented, and instance-overridable only when intentional.
- Never rely on uncontrolled randomness; preserve a reproducible seed path.
- Do not use runtime PCG for content that can be baked without losing the required behavior.
- Do not alternate CPU/GPU nodes repeatedly; transfers can erase GPU gains.
- Do not use Experimental GPU instances when collision, nav, ray tracing, HLOD, or persistence is required.
- Never assume generated gameplay Actors replicate or become authoritative automatically.
- Preserve artist-authored/manual overrides through the supported override system; do not bake accidental edits into opaque graph logic.
- Cleanup, regenerate, cook, and test from a clean state before declaring a graph reliable.
- Profile on target hardware and at shipping content density.
Read references/runtime-scheduling.md,
references/debugging-validation.md, and
references/use-cases.md. See
references/sources.md for the UE 5.8 source trail.
Version and evidence
Targets Unreal Engine 5.8 documentation. This label does not establish that every procedure was tested in an editor or packaged build.
Read the documentation sources and verification notes →