behavior tree is a nice and extendable solution. you can imitate a behavior tree by a couple of if-else branches in lite-c, to avoid writing a node based flexible but complex system. (selectors and sequences are just for branching, decorators are just for enabling or interrupting node running, and the final job is always executed in tasks)

you can check how behavior tree works in unreal engine 4, there are a couple of examples for shooter or zombie AI (you can see it through fast thanks to the visual editor). it was quite motivating for me when replaced my earlier state machine with a behavior tree, and it was my best decision.

you can make tasks which can take several frames, e.g. in case of a Move To task you can do first the pathfinding, then in a loop handle movement and check for arrival, or enemy moves to do repathing. you just need a few bools to check which branch is running in your behavior tree.

and yes, animation should be separated, should watch actual movement speed, and switch to or blend in animations when fighting.

for my RTS units and groups I used a struct in lite-c that included the entities managed, so you can easily have a separated pathfinding and a rendered/moving/colliding entity.


Free world editor for 3D Gamestudio: MapBuilder Editor