Hey everyone, is there a way to manually blend animations from the AnimationPlayer without using an AnimationTree node? I dislike the process of creating, connecting and mantaining hundreds of nodes with state machines and it just getting increasingly more mangled the more animations I need to work with. I also don't understand how I could dynamically create connections on runtime, which I might need since I plan on adding a system where I can load in external character assets that could have any number of animations.

I was hoping there would be a way to just tween between the keys of the current animation and the next one calling some method, as I tell the AnimationPlayer to play them on my scripts. I see the AnimationMixer class on the documentation which sounds like what I need but I don't really get how I could use it. I don't mind having to write an extra script to handle the tweening if it means saving me from the AnimationTree workflow on future projects.

    Allicost is there a way to manually blend animations from the AnimationPlayer without using an AnimationTree node

    Yes

    Allicost state machines

    you NEED state machines

    Allicost the more animations I need to work with.

    if you use many animations you need AnimationTree

    Allicost don't understand how I could dynamically create connections on runtime

    AnimationMixer and AnimationNodeStateMahchine have methods for doing everything, Just read the docs.

    https://docs.godotengine.org/en/stable/classes/class_animationmixer.html#class-animationmixer-method-add-animation-library
    https://docs.godotengine.org/en/stable/classes/class_animationnodestatemachine.html#class-animationnodestatemachine-method-add-node

    Allicost I might need since I plan on adding a system where I can load in external character assets that could have any number of animations.

    that is another problem entirely. you should test whether it's possible to do it before working on setting up animations.
    What you CAN do is have scenes with different characters, these would have their own animationtrees/animationplayers.

    Allicost between the keys of the current animation and the next one calling some method

    AnimationPlayer can play an animation, set a next animation and change blending time, but you will essentially write your own version of state machine. I only recomend doing this if you know what you are doing and it's better than using an animationtree, because it can be a lot of code and lead to spaghetti code if you don't do it right.
    and you don't need Tweens, animationplayer does the blending on it's own, the time is up to the animation lengths. but you do have to code state machines and transitions.

    https://docs.godotengine.org/en/stable/classes/class_animationplayer.html#

    Allicost I see the AnimationMixer class on the documentation which sounds like what I need but I don't really get how I could use it. I don't mind having to write an extra script to handle the tweening if it means saving me from the AnimationTree workflow on future projects.

    all nodes in godot are inherited from other nodes. the children class has all the methods and properties of the parent class. in this case AnimationPlayer inherits from AnimationMixer. AnimationPlayer can do anything AnimationMixer can.
    The inspector shows you these in the different "categories", like Node3D which has the transforms or Node which has the process mode.

    For adding animations for characters, you can set them up as humanoid skeletons, then you do retargeting in godot.
    your file becomes an animation_library and you import these to the animation_player. then your character can play any animation.
    just like in other engines, you have to follow some rules with the number, position and naming of bones, but it works.
    This way you can share animations between different characters.

    Understood, thank you for the in-depth answer! 🙏
    I'll see how I can work with that