How are you guys handling enemy variation?

In unity i usually have an enemy script for many enemies.
I change the mesh and material and create another prefab. so 1 class for many enemies.
I thought about attaching at runtime skeletal mesh etc at runtime but i prefer to know before hand what it looks like.
also i know there are child classes but thats kind of the same of just creating another blueprint class with each variation … seems like a waste.

So how are you guys handling same enemy type with visual variations?

So in a recent project, I referenced most assets as variables - montages/animations/sound cues/ animbp/skeletal mesh/etc
Then created a ChildBP for each enemy that just overrides those assets…

This supported pretty significant enemy variation while not being a bunch of work.

but isnt that the same as duplicating an enemy class and then just changing the mesh ect?
i mean because you are creating a new child class for each character isnt that the same thing?

I am using a UPrimaryDataAsset derived data asset to define the skeletal animation meshes, physics asset, etc that the character blueprint uses to intiialize their aesthetics. Even with this sort of system, you can initialize the visuals of the instance from the data asset like the PostInitializeComponents so you can see what it looks like in-editor.

No - because you can still apply changes to the base and have them apply to all enemies.

Duplicated blueprints no longer have any relation to the original.

This definitely works as well. I have used a similar approach for customization in other projects. Works very well for large number of variations of perfect clones.

On the other hand, the child BP does allow for overriding specific behavior if needed.