PCG (Procedural Content Generation Framework) ist das seit UE5.2 eingeführte node-basierte System zur prozeduralen Generierung und Platzierung von Weltelementen direkt in Unreal Engine 5, das repetitive manuelle Platzierungsarbeit durch parametrische, regelbasierte Workflows ersetzt.
Was ist PCG?
Open Worlds und große Spielwelten erfordern die Platzierung von Millionen von Objekten: Bäume, Steine, Gras, Ruinen, Straßenmarkierungen, Lichtpfähle. Dieses Content manuell zu platzieren ist nicht nur zeitaufwendig, sondern auch inflexibel – eine Änderung des Terrains erfordert aufwendige manuelle Korrekturen.
Das PCG Framework (eingeführt mit UE5.2 im Jahr 2023) bietet einen Lösungsansatz: Regeln und Algorithmen beschreiben, wie Content platziert werden soll, anstatt jede Position einzeln zu definieren. Das Ergebnis ist eine lebendige, parametrisch gesteuerte Umgebung, die bei Änderung eines Parameters sofort neu generiert werden kann.
PCG ist kein External-Tool, sondern vollständig in den UE5-Editor integriert und eng mit World Partition verknüpft, um skalierbare Open-World-Generierung zu ermöglichen.
Erklärung
Graph-basierte Architektur
Der Kern von PCG ist der PCG Graph Editor – ein node-basierter Editor ähnlich dem Material Editor oder Blueprint. Ein PCG Graph besteht aus:
Input-Nodes:
- Landscape Input – liest Höhendaten und Painting-Layer vom Terrain
- Spline Input – verwendet Spline-Pfade als Platzierungsachse
- Actor Tag Input – liest Positionen getaggter Actors
- Volume Input – Beschränkung auf definierte Begrenzungsvolumen
- World Ray Hit Query – Raycast gegen die Weltgeometrie
Filter- und Transformations-Nodes:
- Density Filter – entfernt Punkte basierend auf Dichtewerten (z. B. weniger Bäume auf steilen Hängen)
- Attribute Filter – filtert nach benutzerdefinierten Attributen
- Projection – projiziert Punkte auf die Geländeoberfläche
- Transform Points – verschiebt, dreht und skaliert Punkte nach Regeln
- Distance to Actor – erzeugt Attribut-Gradienten basierend auf Entfernung zu Referenz-Actors
Sampling-Nodes:
- Surface Sampler – erzeugt Punkt-Cluster auf Oberflächen (Poisson-Disk oder gleichmäßiges Grid)
- Spline Sampler – erzeugt Punkte entlang eines Splines in definiertem Abstand
- Texture Sampler – nutzt eine Graustufentextur als Dichteverteilung
Output-Nodes:
- Static Mesh Spawner – platziert Static Meshes an den berechneten Punkten
- Hierarchical Instance Spawner – nutzt HISM (Hierarchical Instanced Static Meshes) für hochperformante Massenplatzierung
Attribute-System
Ein zentrales Konzept ist das Attribute-System: Jeder Punkt im PCG-Datenstrom trägt beliebige Attribute (Position, Rotation, Skalierung, benutzerdefinierte Float/Integer-Werte). Diese Attribute können durch Nodes gelesen, modifiziert und als Entscheidungsgrundlage für Filteroperationen genutzt werden.
Beispiel: Ein Landscape Layer Weight-Attribut misst für jeden Punkt die Stärke eines bestimmten Painting-Layers (z. B. "Rocky"). Über eine Density Filter-Node werden nur Punkte mit hohem Rocky-Attributwert behalten – Felsen spawnen bevorzugt auf felsigem Terrain.
Runtime vs. Editor-Zeit-Ausführung
PCG Graphen können in zwei Modi ausgeführt werden:
- Editor-Zeit (Static): Der Graph wird im Editor ausgeführt und die Ergebnisse als statische Instances in die Level-Hierarchie eingebacken. Schnell zur Laufzeit, aber unflexibel bei dynamischen Änderungen.
- Runtime (Dynamic): Der Graph wird während des Spiels auf der CPU ausgeführt. Ermöglicht dynamisch verändernde Umgebungen (z. B. Wald, der durch Spielerinteraktion wächst oder verschwindet), ist aber ressourcenintensiver.
Beispiele
- Waldgenerierung: Bäume werden auf dem Terrain basierend auf Steigungswinkel, Höhenlage und Painting-Layer platziert; Bäume auf Felshängen über 45° werden automatisch ausgeschlossen
- Straßenränder: Entlang eines Straßen-Splines werden Leitpfosten, Straßenlaternen und Wildpflanzen mit regelbasiertem Abstand platziert
- Ruinen: Trümmergeometrie wird prozedural auf einem zerstörten Gebäudemesh verteilt, wobei Stücke auf flachen Oberflächen mehr angehäuft werden als auf steilen
- Unterwasser-Vegetation: Korallen und Seegras werden auf Unterwasserfelsen basierend auf Tiefe und Strömungsrichtung platziert
- Städtegenerierung: Straßenblöcke, Gehwegplatten und Bordsteine werden entlang von Spline-Straßennetzen automatisch zusammengesetzt
In der Praxis
Einfacher Workflow: Bäume auf einem Terrain platzieren:
- PCG Volume-Actor ins Level ziehen (definiert den Arbeitsbereich)
- Neuen PCG Graph erstellen: Content Browser → PCG Graph
- Im Graph-Editor: Landscape Input Node → Surface Sampler (Poisson Disk, Radius 500 cm) → Static Mesh Spawner (Baum-Mesh auswählen)
- PCG Graph Component dem Volume Actor zuweisen
- Generate PCG ausführen – Bäume erscheinen sofort im Viewport
Verfeinern mit Density-Regeln: Nach dem ersten Generation:
- Get Landscape Layer Weights Node zwischen Landscape Input und Surface Sampler einfügen
- Layer "Grassland" auswählen
- Density Filter nach Surface Sampler: Punkte mit Grassland-Gewicht < 0.3 entfernen
- Bäume erscheinen nur noch auf begrünten Flächen
Integration mit anderen Systemen
PCG ist tief mit dem UE5-Ökosystem verknüpft:
- [World Partition](/wiki/software-tools/unreal-engine/ue5-world-partition/): PCG unterstützt World Partition nativ; Generierung erfolgt nur für den aktuell geladenen Bereich
- Nanite: PCG-gespawnte Static Meshes können Nanite-Meshes sein, was Millionen von Instances ohne Performance-Einbruch ermöglicht
- [Landscape](/wiki/software-tools/unreal-engine/ue5-landscape/): Landscape-Layer und Höhendaten sind primäre Eingabequellen für PCG
- Blueprint: PCG Graphen können zur Laufzeit über Blueprint-Nodes gesteuert und neu generiert werden
Vergleich & Abgrenzung
PCG vs. Foliage Tool: Das klassische UE5-Foliage-Paint-Tool erlaubt manuelle Vegetation über einen Pinsel, bietet aber keine regelbasierte Automatisierung. Für komplexe Welten ist PCG klar überlegen.
PCG vs. Houdini Procedural: Houdini bietet deutlich leistungsfähigere prozedurale Systeme (z. B. komplette Stadtgenerierung, komplexe geometrische Transformationen), läuft aber offline und erfordert Export nach UE5. PCG ist innerhalb UE5 integriert und erlaubt Live-Iteration im Editor.
PCG vs. Blender Geometry Nodes: Blenders Geometry Nodes sind konzeptuell ähnlich, jedoch auf Einzelobjekte beschränkt und nicht für Weltgenerierung in Spielen ausgelegt.
Häufige Fragen (FAQ)
Wann wurde PCG eingeführt? Mit UE5.2 im Mai 2023. Die erste stabile Version. In UE5.3 und 5.4 folgten erhebliche Erweiterungen (Runtime-PCG, PCG für Skeletal Meshes, verbesserte Debug-Tools).
Kann PCG Skeletal Meshes spawnen? Seit UE5.3 unterstützt PCG experimentell auch Skeletal Mesh Spawning für Crowd-Systeme.
Wie beeinflusst PCG die Build-Zeit? Statische PCG-Generierung läuft nach dem Kooking als Teil des Builds; dynamische PCG beeinflusst die Laufzeit-CPU. Für Millionen von Instances empfiehlt sich statisches Backen mit HISM.
Verwandte Einträge
Weiterführend
- Epic Games: Procedural Content Generation Framework – Dokumentation (docs.unrealengine.com, 2024)
- Epic Games: PCG in Fortnite, Unreal Fest 2023 (Video, YouTube)
- Freij, Jonas: Procedural World Building at Scale, GDC 2024
- SideFX: Houdini to Unreal Engine PCG Integration (sidefx.com, 2023)
- Dempsey, Gavin: Open World Tools: Comparing PCG, SpeedTree and Manual Foliage, Unreal Developer Community Blog (2024)
