[REQUEST] Archetypes

Hey Epic, I know you replaced Archetypes and Kismet with Blueprints, but I was wondering if maybe you could bring back a version of archetypes that are just an instance of a blueprint that you can place into the level wherever without having to switch default values to the values you want for the new asset. Basically, this would be useful in cases where you make a blueprint that is very generic/easily modifiable, and then you could use the same logic to create a different version of the asset. It’s mainly for convenience and saving lots of time duplicating blueprints, but I think it would be really useful!

Thanks!

PS: This is coming from someone who has used Blueprints since beta; you guys have done so many good things with them, and this would just be EPIC (pun definitely intended)!

Doesn’t that still apply with Blueprints? I’m not sure what Archetypes would offer that right clicking an existing Blueprint and going to “Create Blueprint based on this”.

What I am asking for is the ability to create an instance of the blueprint that merely holds a pre-defined set of values for that blueprint. This isn’t to allow adding functionality, but rather to allow me to create a different “version” of my blueprint and place it as a preset. To be clear, this would basically just contain the properties, like Archetypes did in UE3; there would be no event graphs of any kind and it wouldn’t allow you to add or change existing components. This is really hard to explain, and I fear that I am not getting the point across clearly.

Why not just create a new blueprint with your other one as a parent then just change the default values? You don’t have to add functionality to it.

Because that would consume additional memory and performance (however small it may be), and it’s just cleaner to do it with an Archetype.

Have you even tested that theory? Creating a Blueprint based on another doesn’t make a copy, it derives the base Blueprint. If all you’re doing is changing defaults then it should literally be the same as an Archetype.

I understand what you’re saying fragfest and actually feel the same. We used and still use archetypes extensively in all our projects on UE3, we have/had between 100 to 300 of them in every single project so even a bit of simplifying would pay off rather quickly.

On that note having a details page alone for making these huge set of properties would be much simpler and also easier to manage/create. However people who haven’t used archetypes much before wouldn’t really understand the benefits of such simple system.

That being said though, unfortunately I don’t think Epic would do it anytime soon, maybe even ever. We have to either keep using it as is or add it to the engine ourselves at some point.

I think that only need a way to lock Components and graph in edit blueprints options. You can hide categories and those look very similar to Archetypes…

This might very well be a shot in the dark but I thought I may as well post this as it seems like it might be a light solution for you.

Lets take a Blueprint enemy and you want to pre set its attributes like you would in an instanced Archetype. Say Health, Armour, Damage, DisplayMesh, PointValue (score for player when unit is destroyed). What if you create a Blueprint of this enemy and have these values (and any others set as a named variable (don’t hard code any of it.) Then create an Enum list of the following:

Standard
Sargent
BOSS
etc…

Then in the main blueprint create a reference to the Enum you created earlier and make it public(viewable in editor) Then in your construction script for the enemy set the default values for enemy based on what you select in the editor from the list on the properties of the ingame instance of the blueprint. That is have some condition checks If enum == BOSS then (set all your values accordingly). That way you have 1 place (in your construction script on the blueprint for the enemy) that you go to change your default values for each enemy type and every instance in the game that is set to “Standard” enemy type will take on those traits, or all the BOSS types will etc. This should give you your archtypes style but in a more compact method. When you want to create a new variant of an enemy then just add the name of the variant to the Enum list and then go into the Enemy’s Blueprint contruction script and add a new set of values for that selection. You can then be tricky and even change that enum selection for that enemy print at runtime to mix up your game play a bit and randomise your enemy types.

Hope that helped. Just writing it out gave me some ideas :slight_smile:

**EDIT: I know this means your construction script could get messy especially if you start to have many variants of enemy types but it should do the job if you only have a few varients of each enemy - if you have different AI types or types of other actors then separate BPs for them would be better so you can differentiate between them in the editor.

I appreciate the suggestion Chrustec, but that is not what I am talking about and is actually a worse solution than just making another blueprint; that solution would end up wasting lots of processing time. What Farshad said makes a lot of sense: you have to use Archetypes to understand why they were so great. You can do essentially the same thing as an archetype by just creating another blueprint, but it would be cluttered by the event graph and components section, which it just simply doesn’t need.

What I would REALLY appreciate is for an Epic developer to give me some feedback on why they didn’t choose to implement something like archetypes or if there is a way to do something similar.

PS: hit it right on the head with that image and short description: that is what archetypes should be.

This is another example of power of Archetypes:

The base blueprint:

&stc=1

Changes parameters:

&stc=1

I like can save the parametres without create a new blueprint

This is a topic that’s come up a few times from seasoned UE3 users and it sounds like Epic are listening.

There’s a ‘Prefab’ section under ‘Blueprints’ in the Roadmap Trello board. Vote for that (it’s already popular) and let’s hope we see something soon.

This is not a prefab, Archetypes only save minimal changed parametres. BTW prefabs and Archetypes are a level desinger important tool on any GameEngine.

Ah, sorry, your initial post sounded like it was talking about the Prefabs. Although the names ‘Prefabs’ and ‘Archetypes’ are irrelevant, they’re labels for different types of functionality.

I’m due to look into creating Pickups in a similar fashion to what you’ve got listed above, but Epic recommend the parent / child Blueprint method. So I would create a Parent generic pickup with an enum that lists all the types it could be (extra health, extra armour, extra ammo of type) as well as default value for that pickup type and an empty mesh slot for that pickup type.

Then I would create child Blueprints of each variant I need, set the enum type, the appropriate value and a mesh in the Blueprint. Then drag and drop the children into the level. Is that not possible?

Hi,

I touched archetypes only briefly in my time with UDK, but wouldnt the concept of archetypes be analogous to the concept of materials and material instances?
The latter cannot be modified (functionally) but represent a parameterized variation of the (base) material.

What I would love to see would be the possibility to make blueprint a component of another blueprint.
This seems not to be possible, or have I missed something?

What I mean is: Having

  • a blueprint of a floor lamp with mesh and trigger volumes.
    -a blueprint with a refrigerator mesh and trigger volumes and events to open/close the door
  • a blueprint of a bulb mesh and some events for turning the light on and off.

Now I would like to add the bulb as a component to the refrigerator and the lamp, both using it accordingly.
the fridge blueprint would turn it on when its door gets opened, whilethe lamps trigger volume would operate the bulb…

Is something like that possible?

Cheers,
Klaus

If you create a Blueprint and only modify the default properties, it is considered a ‘data-only’ Blueprint and uses a fast path for execution. These are essentially archetypes from UE3. These used to open in a simplified editor that just showed the properties. Is that really what you are asking for here? Functionality-wise it seems like most everything else is already there.

Saving an instance to a new child Blueprint while keeping the properties intact might be nice as well.

Sounds like you want to use Child Actor Components.

It does feel like we could do with a more indepth tutorial on Child Blueprint Actors from Epic, such as a Weapon Parent that has slots for custom Anims, Meshes & FX. You could easily tie this to Epic’s blue character.

yes, it work, but you don’t need the enum. Create the childs and change the values.

99.99%

Really o_O, but the documentacion is soo litte https://docs.unrealengine.com/latest/INT/Engine/Blueprints/UserGuide/Types/ClassBlueprint/index.html#data-onlyblueprint How you get that? I want get double click and open the simplified editor. How about right click -> Create a Blueprint data only based in this blueprint.

, I think this is the beginning of a beautiful friendship. [Fog and sound of aeroplane engines]

I think it was removed to keep the experience of editing a Blueprint consistent.