Download

Pack skills into blueprint? What's the best practice?

I’m working on indie game and it has no classes, but a lot of skills,that could be gained by player while he play. Hundrends of skills(they are easy to make,thanks to unreal). My idea was to pack the cast of skill(its action) to blueprint,and then proceduraly summon that blueprint with all needed animation,particles and logic. When duration of skill is done, BP instance gonna be destroyed. Is it possible by the mean of resources/speed on runtime? Is it suitible for multiplayer? How UE caches those blueprints? Is 100 of skills possible to handle without changes to the engine?

Aside from animation, I think it’s pretty doable. Why not animation you say? Because it’s a different beast on it’s own and I’m not confident enough to say “yes, it’s doable”.(if you search you will see how many people struggle to replicate animation in multiplayer games.)
It is true that you can always make the state branch goes to somewhere(cast skill) and play a animation reference that was given to you by a BP via event dispatcher, but detail you probably needs to experiement yourself.

Logic hook up is also a bit tricky, but just follow what a projectile would do and you should be fine.

UE has it’s own garbage collection, so once a object is de-referenced, so if it’s pick up type of skills, then just spawn it on level and let unreal do it’s job. BUT, keep the shape loaded and reference them somewhere(gamemode), and move it outside of view so you don’t get the loading lag while trying to spawn a skill’s shape that you no longer have a cache in memory. And you can use mesh instance if you keep those shapes somewhere, and increase rendering efficiency even further.

Spawning a blueprint that then calls on animations, timelines, etc(everything that has anything to do with a skill), should be pretty easy and performant. If you want to call on hundreds of them at the same exact time, or get crazy with physics and destructible meshes, then that could be an issue. But if there are hundreds of skills, and you are only using a few of them at a time, it should work fine. The logic portion should be seamless, and apart from correct execution on your part, not a concern for performance. I think your performance will depend on the number and quality of animations and actor meshes flying about at any one time.