Coming near the end of the outlined development phase I have had to kick everything up a notch and really push hard to implement my designed behaviour tree (for local AI).
I am still working on the Game Director Behaviour Tree AI which is requiring extensive planning.
The more of this project I do, the more ambitious it becomes. For example, just the declaration of a small portion of one branch requires a significant amount of focus and planning.
Above, is a small part of the tree, where the agent can see an enemy, has health equal to or greater than 75% (of its max health), and less than 50% courage. At the top is a selector which will choose randomly between two further sub-selectors (these sub-selectors may be whole sub-trees later), which then filters down to the actions like attack, pursue or charge.
Just the initialisation of the nodes is quite a difficult task (remembering the above snippet is only for that small part of the tree). Using the indentation has been really useful when figuring out what nodes are children of which other nodes. I then have to write the private function for each action node or sequence which will take a lot of time itself. Hopefully, after the first stint of programming, I will be able to implement the sub-trees that encapsulate a significant portion of code to then be reused wherever required.
At the moment, I am not sure that this behaviour tree is the only one I need. As some parts require further decision making from above the local AI of the agents, such as the general strategy from the group, or super strategy, tasks and goals from the Game Director. Lots to do, little time to implement. Best keep working!