Blueprint prefabs

Let’s say I have a number of things that are similar, and share similar behavior.
This could be a number of different handguns.
Or a number of different butterflies.
Or a number of different spells.

95% of the functionality is the same. However, each handgun/butterfly/spell may use a different mesh, particle system, sound, or some other config variables (like “Ammo Capacity” or “Time in Air Before Landing” or “Mana Cost” or whatever)

Now, I’d like to build a single blueprint which is the default butterfly/handgun/spell. Then I’d like to be able to create a number of variants/prefabs of this blueprint, where the only difference is the default variable names.
Thus, I could have an “Orange Butterflies” blueprint, and a “Blue Butterflies” blueprint, and where I want an orange butterfly in the world, I drop that in; where I want a blue butterfly in the world, I drop that in.

Unfortunately, it seems I can’t actually do this. There are two ways I’d like to be able to go about this, neither of which currently works:

  1. I could create a subclass of the “base butterfly” and change the default values of each of the properties. Unfortunately, Blueprints don’t allow me to change the default values of superclass variables in a subclass – fixing this would be swell!

  2. I could create a “blueprint prefab” – this is something that references blueprint, and contains the configuration information for that blueprint. Inserting this into a level would reference both the base blueprint, and the prefab values. In the simplest case, it just sets the configurable values once, on insertion. This would be okay, but even better would be to insert a link to the settings object such that in-world instances update if I change the prefab values.

It seems to me that both of those would be pretty easy to implement with the current object model and current UI system that already exists in the editor, so perhaps this could make it for 4.10? It would significantly improve the workflow, make things possible that currently aren’t possible, and as a bonus, it would demo really nicely in a tutorial video or conference presentation :wink:

How Is that different from child?

That’s exactly the way you would do this and there’s nothing stopping you from doing it. In 4.9 there was a bug introduced which makes editing variables of the parent no longer possible, but just click on the “Class Defaults” at the top, there you can still edit the variables.

But you seem to use UE4 for a much longer time than 4.9, so I wonder why you think this new bug would be a missing feature?

Because I didn’t run into this use case before now, so I never had reason to try it in a previous version.
Keeping tons of different particles/meshes/whatever in folders and dragging into level has always worked, and was enough for me for a long time. But now I’m building scenery with behavior.

It would still be nice with prefabs without having to subclass, though.

Anyway, John, Thank you! This works, for now, although it would be much nicer if the defaults could be edited in the Details pane while selecting the class in the browser, rather than having to open it in the editor and clicking “Class Defaults” to be able to edit them.
So this turns into a “improve usability” feature request. At least I’m glad this wasn’t actually a big hole in the editor :slight_smile:

The bug is already fixed in the master branch, but Epic can’t add it to 4.9 as a hotfix so it will only be fixed in 4.10 unfortunately.

Whats the problem with creating a child blueprint of the parent? How could it be done easier?

Guys is this “class default” issue related to new feature with same name or actual blueprint class default values for child blueprints?

This ended up being “how can we make editing class defaults for child blueprints much more easily than the current workflow?”
The current workflow was convoluted enough that I initially missed how to do it at all.
This has nothing to do with the runtime “get class defaults” node.

Let’s say I have “Spell” as a superclass, and “Fireball” as a subclass.
Now, when I click “Fireball” in the content browser (not double-click to open – just click the blueprint icon) then it’d be great if the “Details” pane in the editor showed the default values for the class, and let me edit those.

So it’s just about having to click once instead of twice? :wink:

im making spell system and i have no issues with having master class and firebal, heal childs
only one problem, to be able to overwrite function and left it dock in function panel i forsed to add fake return.

Actually, it’s more than twice, because I also have to move the mouse to the toolbar and click “class defaults” and then editing blueprints in a separate window where I don’t see the main scene window.
Now, it’s nice that I can do this at all – initially, I missed that it was possible (it seemed like I couldn’t edit the defaults for inherited variables) which was what spawned the post. Now, it’s just a workflow improvement suggestion.
And if you think workflow improvements aren’t worth making, then I suggest you try writing a game in Notepad and XML files sometime :wink: