4.27 - Blueprint (Prefab) with 893 actors kills my FPS

I didn’t think there was any overhead to converting a level into a blueprint actor, but it seems like there is. It’s a church building, and when I walk through the level itself I get 120FPS consistently. I thought it would be easier (for adjusting the position etc.) if I converted it into a blueprint, but now I get less than 20fps.

I created the BP by selecting all of the actors in an empty environment and chose Blueprint - Convert Selection to BP Class and then chose Harvest Components. I then turned off tick in the defaults and for every component as someone on Reddit suggested, but it made no difference.

Is there a limit on how many actors can be in a Blueprint? I thought 4.27 automatically instanced meshes. There’s no real difference between the level and the BP so why the sudden drop in FPS?

Hi TorQueMoD,

It can slow you FPS to have a lot of components, and when you harvest like that, it’s creating a component for each of those meshes.

I’ve got some tools one the marketplace that expand on the engines “Convert Selection to BP” - they can convert those components into fast instanced static meshes and then take it a step further and “assimilate” all child blueprints and their instances too to create a tight, fast single Blueprint of your Prefab. They can also randomize any objects within ranges to create variety.

Check out:

1 Like

Cool. Thanks for sharing.

It does seem strange to me that it would cause a performance issue though because they’re all separate components when they’re placed in the editor, so why would adding them to a BP suddenly cause a performance drop? Also, as I said I thought 4.27 is automatically instancing now?

1 Like

Yes I don’t know the ins and outs but components attached to an actor will be slower than individual actors. I noticed many documents recommend to keep them to a minimum.

Regarding the auto-instancing - I’m still to see that ever working - apparently it can create instances for simple, identical static mesh actors placed directly in the level.

Perhaps it is working for you, and by converting to a Blueprint it’s stopping that from happening? That would be interesting to find out.

If that is the case, it can still be handy to have your buildings contained in prefabs, and then just convert them to static meshes when you’re finished editing/moving/copying them…

Edit: I just ran a few tests, the first was to try auto-instancing again, and again it failed:

Then I tested the frame-rate using just 800 actors - 120FPS(capped) - converted to harvested BP - down to 78FPS - then tried with rdBPtools and rdInst - 120FPS(capped).

1 Like