The technology for video games is becoming more and more complex. Crysis (2007) is 100 times more complex in rendering than Far Cry (2004). So the motivation is growing complexity.
The AI has to keep up with this growing complexity. If player gets more graphics realism, he also expect more realistic AI.
New approaches on how AI works must:
Condition Checks will run an expression using the agent knowledge to see if we can select this node:
We will stop at the first leaf node that pass the condition check
Game starts: tree is updated and runs the Action: Patrol, since rest of nodes were rejected
Player sneaks behind the agent, but it manages to hear the player! The agent will go to melee node
Game designer asks us to add a new behavior "wounded" that will drop the NPC to the ground
Now game designers asks us to add new "captain" NPC: It will give orders in and out of combat
Coordination: Synchronized behavior change between 2 or more agents while the game context makes sense, from now on "tactic"
We will need a manager that will monitor behavior tree activity. Each tactic just have a name and minimum - maximum number of candidates:
Example: Tactic "Flank". Based on design requirements, we decide that we will need at least two candidates (one to distract while the other flanks) and a maximum of 3 (one distracts, two others flank)
We will place hooks on certain nodes that will be in charge of identifying an agents as a good candidate
Following the previous example, we consider that agents ready to fire are good candidates for flanking
If an agent happens to visit the Flank node and pass the initial condition, he will be remembered as a good candidate but rejected from Flanking
When we detect that we have enough candidates to start the tactic, we will "open" the access to the tactic and re-evaluate candidate's trees
Note: For group coordinating there are 2 sync modes available, 'end' and 'task', by default this is set to 'task' which means the different participants will wait at each other during execution of the group coordination. 'end' means they will run independently and sync when their tasks are done