Thank you for your input and links everyone!

Composition wise, I will be continuing with splitting an AI into different entities working together like you guys said.

Currently, Im working on the pathfinding entity. Its only task is to get to a position in the world, however it can. It can go in a straight line or A*, or it could do A* then a straight line immediately after. The reason why is because I want the decision making entity to only need to give a target position to the pathfinding entity, and not worry about actually doing the path loop.


Im intrigued by the goal/behavior tree option! How would you guys handle the sequence of tasks in Lite-C? Fill an array with a series of tasks, and if one task is successful, move onto the next array position and execute it's task?