Data-Only Blueprints/Subclassing Blueprints

Can blueprints be subclassed? I can understand some the technical difficulties of overriding functions in new blueprints, however if it’s to be a replacement for unrealscript, it must?

I found documentation for data-only blueprints here, which would fit my needs perfectly, but I can’t figure out how to create one. I’ve tried right-clicking on my Blueprint and selecting “Create Blueprint based on this” but I always get an “Invalid class with which to make a Blueprint” message.

Hi Tom, not sure if this is an answer, but what i have tried is to create a new blueprint then search the class tree to find the base that i want and choose that.
I think that they show as data only till you add something to the Script section

but right clicking on the blueprint and then extend from when seem to be the most logical way of doing it

George,
I’ve tried doing that but my Blueprint doesn’t show up in the class tree (none of my custom blueprints do, only the base classes).

Edit: I see now. When i create a blueprint from a Script based class it’s IsDataOnly variable is True (an example is the Blueprint’/Engine/EngineDamageTypes/DmgTypeBP_Environmental.DmgTypeBP_Environmental’ blueprint)

Hey Thomas,

Data only blueprints sound like they might be a great solution for you. As of right now by default you can not derive one blueprint from another but you can enable this feature if you wish. Simply close the editor, go to Engine/Config/BaseEngine.ini and change this below to true, save and reopen the editor.

[Kismet]
AllowDerivedBlueprints=false

Let us know if this works for you.

Best Regards,
Ryan Van Enkevort

This is correct! For a little background, the reason we haven’t flipped the switch yet is because we want to get the UI for inherited components a little tighter before allowing people to go all out with creating derived components. As soon as that’s in, we’ll flip the switch for everyone.

Hey, that kinda worked. I can now easily create a blueprint from my existing blueprint. I’m assuming I’m looking at something that’s got a ways to go, but the only variables I can modify in my derived blueprint’s defaults are bools (Missing are the arrays and floats). Will these eventually be supported? Is there an alternative method I should use to access and modify the values? (note: i can access the variables in the node graphs, etc. just not in the Defaults)

There shouldn’t be any restrictions on the variables you can edit in a derived class. Whether or not you can edit it should only depend on if the variable is exposed (i.e. the “Editable” checkbox is checked in the variable properties). If you see the highlighted eye icon next to the variable name, you should see it in the properties of the derived class.

Oh! I see it now. That’s an interesting design choice. I don’t immediately see the advantage, other than less clutter. My issue with it is that I don’t want to expose those variables to the LD, as there will never be a need to change them in the level and they could make things break.

Eventually, the plan will be to make variables have three modes of exposure: private (editable only on the defining blueprint), protected (editable only on the defining blueprint and its children), and public (editable on blueprints, and any instances). That should give the granularity that you need, but unfortunately, in the meantime, it’s just a binary exposure.

Thanks for the insight. I know, I’m poking around in unfinished business, so i appreciate the support, but now I can keep going with my fancy parking-lot-maker Blueprint! :smiley:

No problem! Sorry for the inconvenience, and thanks for all your patience as we keep on building :slight_smile:

This was actually incredible helpful, as I was looking to do this exact thing. Thank you!

I cant seem to get this working in 1711197, when I click create new blueprint and then select my blueprint the class list gets reset and my blueprint is no longer there.

I haven’t been able to reproduce this, if you right click on the blueprint do you have the option to make a blueprint of that? Does that work?

Nope it says “Invalid class with which to make a Blueprint”.

Perhaps these pictures will help find the cause:

The next beta should have full support for derived blueprints turned on by default, but in the current beta that’s out there, you have to enable blueprints based on other blueprints in your engine INI file:

[Kismet]
AllowDerivedBlueprints=true

Which Engine ini is that exactly? The DefaultEngine.ini in Project/Config/ or Project/Saved/Config/Windows that keeps getting reset?

Edit: Oh nevermind, I have it in the right ini and its not working.

Engine/Config/BaseEngine.ini

Is this happening with all your blueprints, or just select ones?

Okay so I just did a test, what Im wondering is if the blueprints have to be created whilst this ini setting is true. The newly created one seemed to work just fine derived from object or actor. I might need to copy/paste what I have over to new blueprints.