PCG stamping/unlinking re-uses external actor ID's when previous actors in the scene are unloaded.

I have a question regarding PCG unlinking, an issue present in Unreal 5.3 and 5.4.
(I’ve not tested this in 5.5 yet)

I have a setup where I generate static mesh instance actors using PCG into grids for WP loading grids. I then unlink/stamp the resulting grids of instances to keep them in the map and have a widget that will find, rename and replace the previous instance grids with the same name/tag.

Its a way to regenerate my instances without needing to keep Live PCG around in the scene.
However, I have noticed a bug with stamping.

Normally, new PCG stamps will be assigned unique external actor IDs.
These don’t conflict with the existing actors previously generated.

But if any previously stamped actors are not loaded due to, for example it’s WP region not being loaded. Then newly stamped Actors generated by PCG can actually be assigned a random external actor ID from one of these unloaded actors!

In this image you can see how newly created grid is loaded. It has not yet been renamed, so its called PCGStamp_19.

But due to the ID conflict, another unloaded actor is also marked as altered and want to be saved. The unloaded actor in question is unrelated except that they were both created by the same PCG Blueprint actor type. ( not per-say the same Blueprint actor as I tend to delete them after I’m done with them ).

This causes the new actor to unable to be saved, as both actors can’t be loaded simultaneously.

Is this a known issue with PCG stamping and are there any workarounds ?

The only workaround I’ve found thus far is to ensure all previously stamped actors from this PCG function that exist in the level, are loaded when stamping new ones.

1 Like