Best way to define a per-subclass list of standard animations without overriding functions?

So, here’s the idea. I’m making a platformer fighter, and I plan to have all of my individual characters inheret from a main player class. I have a function that will do state logic (think MUGEN) every gameplay tick (not Tick, but an internal 60 per second timer run by the game state itself). This function will be overridden to perform each individual character’s unique state logic. To make things simpler for me, I made a function called DefaultStateLogic, which would perform state logic universal to most characters. For example, if the state passed to it is “landing” and the current animation has ended, it changes the state to “stance” and sets the animation to the character’s fighting pose. However, I can’t really figure out how to change what skeletal animation this references per subclass, because Unreal Blueprints don’t allow making variables out of animation assets, and I can’t even reference them as a node. Is there a better way to have this work in the way I want it to without having to override DefaultStateLogic in all subclasses of the player class?

By the way, I’m talking about classes, not instances. So, for example, a blueprint called FighterCait which inherits from BaseFighter which inherits from Character.

I thought Animation Blueprints were strictly for blending animations together and aim offsets? I don’t want to do that, I want to be able to set what state the character is in internally while setting the animation it uses. For example, I want to change StateID to “stance” and then play the character’s idle animation. This way, in the object blueprint I can say, “I am in the ‘stance’ state currently, this means I don’t put any hitboxes out, and I can dash, jump, neutral attack, forward tilt attack, up tilt attack, go into crouch, forward smash, up smash, down smash, all specials, etc.” I can’t feed state ID into an animation blueprint, and I can’t get the duration of the current state out of one either.

Additionally, I don’t care about the timer not ticking on every frame. I don’t handle checking the players’ controllers during that, I simply use the InputAction events and store their current state in variables. This allows me to get controller input the moment it happens, then keep track of it until the state handler runs, says “I am in the stance state, hey, the player just pressed A, I should go into the neutral attack state”. Also, locking the state handler to the game’s frame rate means I can’t slow the game timescale down without causing choppy visuals, and when I do multiplayer I would like to do what Sm4sh does and have the game wait to sync a few frames of player input before processing character states. (I am NOT using prediction-based networking for a fighting game, that’s extremely unfair.)

Okay, I looked at animation blueprints. In order to make an animation blueprint that will play all the required animations, I would have to create an enumerator for every character that lists every single state that character can possibly be in. That’s 37 standard/default states plus a state for every single attack each character can do (the simplest character in the roster has over 40 attack animations). I would have to make 26 separate enums with 77 entries each. I have to type, triple click the next entry, and type again literally 2,002 times. Animation blueprints are absolutely not the way to go.

Ok maybe i misunderstood something. Btw “Unreal Blueprints don’t allow making variables out of animation assets” all assets are refrencable, you just need to know there class name, which one do you want to use? or you referencing to something inside other asset?

Animations are not referenceable. Try putting a Play Animation node in a blueprint right now and right click the Animation to Play and try to promote to variable.

Ok so lets go this way as you want to refrence those animations to do your thing. I checked AnimationAsset class, it a abstract class and it seems it is indeed not valid blueprint type. But it is still just a abstract class not functional asset class, if you look on API refrence:

Based of it theres other animation asset types and UAnimationAsset class as abstract class only functions as common interface for them. I checked those asset classes and they are all valid blueprint types which you can make variable of. Thats why i asked you want asset class you want to reference and this class is what you should use. Insted on reling on “Promote to variable” make variable manually with animation asset object you operate with, hover over the animation asset and check asset type name in there and use it. Things might be complicated if you use 2 different type of assets, but thats a lot easier to work around.

If you ask me lack of BlueprintType on UAnimationAsset might be actually a bug.