rdInst Tutorial 10.5 – Spawning from PCG with Proxies
Last Updated: 17th July 2025
Tutorial created using rdInst version 1.52
UE version used: 5.6
When spawning meshes from your PCG graphs using the rdSpawnStaticMesh Nodes – their Proxy Settings are read from the StaticMesh Asset and applied when found. This makes it very quick and easy to set them up.
This tutorial uses PCG to Spawn a Forest using PCG and the rdSpawnStaticMeshWithIndices node. The trees swap to their proxy actors when the player is close, or the player shots a projectile at them. When hit, the proxy actor plays an animation of the tree falling, and the proxy is switched to “Destroyed” mode which displays a broken trunk rather than the tree from then on.
We’re basing this off the First Person template in 5.6 and the latest (at the time of writing) PCG plugin in 5.6.
Note that the PCG volumes in 5.6 need the PCGWorldActor to control the “On Demand” and “Runtime” spawn modes of the volumes. If you’re using 5.3-5.5 you don’t need the PCGWorldActor.
Step 1. Create a Project Based on the FirstPerson Template (or import)
The first step is to create a project with the FirstPerson Character, Blueprints and Weapon/pickup in it as we’re building our functionality straight into those. Set the Variant to “Arena Shooter”.

Step 2. Enable the PCG plugins
Now open the Plugins window and type “pcg” into the search bar – enable the top three, the PCG Biome Core, it’s samples and the PCG Framework. (We’re not using the Biome plugin, but check out the sample). Make sure that rdInst is also enabled.

Step 3. Create a new level
Create a new level from the Basic Level Template. Delete the Floor mesh and add a default landscape.


Step 4. Create a PCG Graph
Now right-click in the Content Browser and choose New->PCG Graph:

From the window that opens, select the “Simple Forest” Template and “create”Initialize from Template”.

Now open the graph, and add 3 new Nodes, all rdSpawnStaticMeshesWithIndices. Either copy/paste the existing MeshSpawner Mesh Entries into the new Nodes or add them from fresh – replacing the meshes in the originals to the Meshes in the Tutorial project, stones, trees and grass. (If you’re not using the tutorial files, the original meshes work too).
There’s a link to just the meshes/materials if you want to test with just those – some simple low poly Pine Trees, cut down versions included (i.e. a trunk and a top section with a pivot) – 4 stones/rocks, a medium sized plant and a grass clump.
Replace the wires going to the original SpawnMesh Nodes to the new Nodes you just created.

You can change the “Points per Square meter” in each Surface Sampler to increase the density, also – play with the Weights to set up a nice balance of each object.
In the Difference Nodes, try setting the “Density Function” to “Minimum” if you’re not seeing your rocks or grass.

Step 5. Set the GameMode, add the PCG Volume to the level and some weapon pickups
First, set the GameMode of the level to GM_Shooter.

Drag the volume from the content browser into your level. Select it, then in the details outliner select the PCG Component – set the “Generation Trigger” to “Generate at Runtime”. We need to do this as rdInst builds the instances at runtime, so any meshes instanced during edit are cleared.

Note: You may need to save now, exit the project and reload to get the PCGWorldActor to be added.
Now, in the “Variant_Shooter/Blueprints/Pickups/” folder you’ll see a Blueprint called “BP_Pickup” – add 3 to the level (close to the player start), then select one at a time, and set the “Row Name” in the “Weapon Type” to each of the weapon types, one per actor.


Step 6. Create the Falling Tree Blueprint
Now we create the Proxy Actor Blueprint – this gets swapped in when a tree is close to the player, or it’s been hit or close to a hit by a projectile. It handles two meshes, a trunk and the main section which has physics enabled – the “Mass Scale” is increased to 100 which gives a tree that doesn’t move when run into, but can be toppled with many rifle/pistol fires or a single grenade launcher fire.
Add 2 StaticMeshComponents to the new Blueprint (can be subclassed from Actor or rdActor (we use Actor here). Set the first one as the main tree section and the second one as the trunk:


If you open the meshes in the StaticMesh Editor and “Show Collision” you’ll see that both have simple cylinder collision around the trunk area (none around branches or leaves).
Right, now compile and test in your level by dragging one in and playing – you should be able to shoot it to make it topple but not topple when you run into it.
If you have multiple trees (this tutorial has two, a healthy Pine and a Dead Pine that’s lost all it’s needles) create a Blueprint for each type. (You could automate it from one BP too).
The other thing we need to do in this Blueprint is fade the toppled tree out once it’s stopped moving – for this example it’s just a small bit of code in the Tick event of the actor (tick slowed down to 5 times/second) – it checks the velocity of the physics mesh (the top section) and once it reaches a small threshold it slowly moves that mesh to below the landscape and sets that instance/proxy pair as destroyed so it doesn’t swap in again in the future.
Step 7. Set up the Proxies on the meshes.
Now we need to set up the proxy information on the mesh assets so the PCG spawning knows to add them.
On the Tree Meshes you’re spawning through the PCG graph, right-click on them (separately) in the Content Browser and select the “rdInst->Proxy Settings” – this will open the Proxy Settings window where you can set the Proxy information.

We’re going to set one as a short-distance and one as a long-distance, just to show both options.
The SM_Tree_Pine1 will be short-distance, set it up like below:

Set the second tree as a Long-Distance Proxy as below (we set the scan distance to a short distance so there’s not too many):

Step 8. Modify the Projectile Blueprint for Destruction Proxy Scanning
The final thing that needs to be done is hook up the Proxy scanning/swapping to the Projectiles OnHit event. rdInst has a function called “rdProcessImpactProxies” which finds if the current hit instance and close by instances have proxies, and swap to them if so. The routine scrapes the impact velocity from the instance, and once the proxy has been swapped in, it applies it to the new proxy actor.
The Blueprint these modifications need to be applied to is the “BP_FirstPersonProjectile” Blueprint, found in “Variant_Shooter/Blueprints/Pickups/Projectiles/”.
The first step is to add a OnDamage event in the OnPlay of the Projectile – this handles applying the impulse to the proxy that was meant for the instance.

The second bit is in the EventHit – we run the ProxyScan and store the impact details:

Step 9. Done. Play to test
