Goal-oriented behavior is a well-documented approach to behavior in Artificial Intelligence and emulates the competing desires of an intelligent actor. It is also often referred to as utility-based AI. The major components of this approach are goals and tasks. Behavior is the result of their interactionsX.
Goals serve as statements about the desired state of the world for an AI. To satisfy these goals you can add tasks, actions the AI can perform, that affect the satisfaction of these goals. For example, you could assign “Hunger” as a goal and “Eat” as a task. Each time the AI performed the “Eat” task it would help to satisfy the “Hunger” goal. Goals and tasks do not need to have a one-to-one correspondence. Tasks often impact multiple goals, and selecting a task to execute depends on the task’s impact across all goals collectively. The task chosen will be the one that has the most positive impact for the AI for the current state of the world.
A good description of Goal Oriented Behavior can be found in Artificial Intelligence for Games by Ian Millington. For more resources online, read
In RAIN{one}, goal-oriented behavior is fully integrated into behavior trees. Goal-oriented behavior has its own GOB node, which organizes Goal and Task nodes. Task nodes can contain other behavior tree nodes as part of their execution.
In this way, behavior trees and Goal/Task sets can be layered upon each other to create complex behavior. In the example below, a behavior tree has several GOB nodes at different levels in its heirarchy:
Personality traits give different AI the ability to modify their behavior while still using the same goal-oriented behavior tree. Traits are defined on the RAINAgent component, in the Personality Traits property. The affect those traits have on behavior is set on each Goal node in the Personality Influences section.