ue-actor-component-arc…
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when working with procedural generation in Unreal Engine: PCG framework, ProceduralMesh, instanced mesh, HISM, spline, runtime mesh, noise, terrain generation, or dungeon generation. See references/pcg-node-reference.md for PCG node types and
$ npx -y skills add quodsoler/unreal-engine-skills --skill ue-procedural-generation --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ue-procedural-generationContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when working with procedural generation in Unreal Engine: PCG framework, ProceduralMesh, instanced mesh, HISM, spline, runtime mesh, noise, terrain generation, or dungeon generation. See references/pcg-node-reference.md for PCG node types and
name: ue-procedural-generation description: "Use this skill when working with procedural generation in Unreal Engine: PCG framework, ProceduralMesh, instanced mesh, HISM, spline, runtime mesh, noise, terrain generation, or dungeon generation. See references/pcg-node-reference.md for PCG node types and references/procedural-mesh-patterns.md for mesh generation patterns. For physics on procedural geometry, see ue-physics-collision." metadata: version: 1.0.0
You are an expert in Unreal Engine's procedural generation systems, including the PCG framework, ProceduralMeshComponent, instanced static meshes, noise functions, and spline-based generation.
Before advising, read `.agents/ue-project-context.md` to determine:
Ask for clarification on: 1. **Generation type**: world population (PCG), runtime mesh (ProceduralMeshComponent), instanced geometry (ISM/HISM), or spline-driven? 2. **Timing**: editor-time baked result or runtime dynamic generation? 3. **Instance count**: hundreds (ISM) or tens of thousands (HISM)? 4. **Collision**: does generated geometry need physics collision? 5. **Determinism**: same seed must produce same result across sessions or network clients?
---
Node-based rule-driven world generation. Operates on point clouds with transform, density, color, seed, and metadata attributes.
// Build.cs
PublicDependencyModuleNames.Add("PCG");// .uproject Plugins array
{ "Name": "PCG", "Enabled": true }| Class | Header | Purpose | |---|---|---| | `UPCGComponent` | `PCGComponent.h` | Actor component driving generation | | `UPCGGraph` | `PCGGraph.h` | Asset: nodes + edges | | `UPCGGraphInstance` | `PCGGraph.h` | Graph instance with parameter overrides | | `UPCGPointData` | `Data/PCGPointData.h` | Point cloud between nodes | | `UPCGSettings` | `PCGSettings.h` | Node settings base class | | `UPCGBlueprintBaseElement` | `Elements/Blueprint/PCGBlueprintBaseElement.h` | Custom Blueprint node base |
// Assign graph (NetMulticast) void SetGraph(UPCGGraphInterface* InGraph); // Trigger generation (NetMulticast, Reliable) — use for multiplayer void Generate(bool bForce); // Local non-replicated generation void GenerateLocal(bool bForce); // Cleanup void Cleanup(bool bRemoveComponents); void CleanupLocal(bool bRemoveComponents); // Notify to re-evaluate after Blueprint property change void NotifyPropertiesChangedFromBlueprint(); // Read generated output const FPCGDataCollection& GetGeneratedGraphOutput() const;
Generation triggers (`EPCGComponentGenerationTrigger`):
// Add node by settings class UPCGNode* AddNodeOfType(TSubclassOf<UPCGSettings> InSettingsClass, UPCGSettings*& DefaultNodeSettings); // Connect two nodes UPCGNode* AddEdge(UPCGNode* From, const FName& FromPinLabel, UPCGNode* To, const FName& ToPinLabel); // Graph parameters (typed template) template<typename T> TValueOrError<T, EPropertyBagResult> GetGraphParameter(const FName PropertyName) const; template<typename T> EPropertyBagResult SetGraphParameter(const FName PropertyName, const T& Value);
Derive from `UPCGBlueprintBaseElement`:
UCLASS(BlueprintType, Blueprintable)
class UMyPCGNode : public UPCGBlueprintBaseElement
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "PCG|Execution")
void Execute(const FPCGDataCollection& Input, FPCGDataCollection& Output);
};
// In Execute:
FRandomStream Stream = GetRandomStreamWithContext(GetContextHandle()); // deterministic seed
for (const FPCGTaggedData& In : Input.GetInputsByPin(PCGPinConstants::DefaultInputLabel))
{
const UPCGPointData* InPts = Cast<UPCGPointData>(In.Data);
if (!InPts) continue;
UPCGPointData* OutPts = NewObject<UPCGPointData>();
for (const FPCGPoint& Pt : InPts->GetPoints())
{
FPCGPoint NewPt = Pt;
NewPt.Density = Stream.FRandRange(0.5f, 1.0f);
OutPts->GetMutablePoints().Add(NewPt);
}
Output.TaggedData.Emplace_GetRef().Data = OutPts;
}Key `UPCGBlueprintBaseElement` properties:
PCG graphs are deterministic by default — the same seed produces identical output. Each node receives a seeded random stream via `GetRandomStreamWithContext()`. To vary output across instances, set the PCG component's `Seed` property. For multiplayer, ensure all clients use the same seed (replicate via GameState or pass as spawn parameter).
// Set PCG seed at runtime for deterministic variation UPCGComponent* PCG = FindComponentByClass<UPCGComponent>(); PCG->Seed = MyDeterministicSeedValue; PCG->Generate(); // Regenerate with new seed
| Type | Contains | Use for | |---|---|---| | `FPCGPoint` / Point Data | Position, rotation, scale, density, color | Scatter placement, foliage, instance positioning | | `UPCGSplineData` | Spline points + tangents | Roads, rivers, paths, boundary definitions | | `UPCGLandscapeData` | Height + layer weight sampling | Terrain-aware placement, biome queries | | `UPCGVolumeData` | 3D bounds | Volume-based filtering and generation |
Point data is the most common — mos
A collection of 27 AI agent skills for Unreal Engine C++ development. Built for game developers who want AI coding agents to help write correct, production-quality UE5 C++ code.
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when implementing AI, AIController, behavior tree, blackboard, AI perception,…
Use this skill when working with Unreal Engine animation: AnimInstance, montage playback,…
Use this skill when working with Unreal Engine async operations, threading, parallel…
Use this skill when working with audio, sound, music, UAudioComponent, PlaySoundAtLocation,…
Use this skill when working with character movement, CharacterMovementComponent, CMC,…