I've been working on my own game for quite some time with many restarts to get to know the engine. I think I figured out many great things about Godot, but one was always a bit of an eyesore to me.
When I first tried to add animations to my game I used an Animation player which worked fine. When I moved to a top-down approach like Secret of Mana I started using an AnimationTree with a state machine and sub state machines instead to make implementing view directions with my sprite easier.
As one example, I have a move state but inside it there is a walk and a run state. This works fine, but now I wanted to code more complex behavior like attacks.
Because of the bigger complexity I added a coded state machine to my project, which is called during the _process() step, but now I see that I am effectively re-implementing the state machine I create within my AnimationTree with my own coded solution.
I have seen guides on how to implement your own state machine or how to use an AnimationTree but not both combined.
Therefore I ask whether there are any best practices on this topic.
I know there may not be a best solution on this, but any idea is appreciated.