AgentType & Capabilities
In the GOAP system, the concepts of AgentTypes
and Capabilities
play a crucial role in defining the behavior and abilities of agents within the environment. These concepts allow for a modular and flexible approach to designing agent behaviors, making it easier to create, manage, and extend the functionality of agents.
AgentTypes
An AgentType
represents a classification or category of agents within the GOAP system. It acts as a container for a set of Capabilities
that define what the agent can do. Each agent is associated with an AgentType
, and all agents of the same type share the same set of capabilities. This means that any goals, actions, and sensors defined within the AgentType
are available to all agents of that type.
Key Features of AgentTypes:
Shared Behavior: Since all agents of the same
AgentType
share the same capabilities, they inherently share similar behaviors and abilities. This makes it easier to manage and update the behavior of multiple agents at once.Modularity:
AgentTypes
allow for the modular design of agent behaviors. By defining different types of agents, developers can easily create diverse ecosystems with varied agent behaviors.Flexibility: New
AgentTypes
can be created to introduce new kinds of agents into the system, providing flexibility in expanding the behavior space of the application.
Capabilities
A Capability
is a collection of goals, actions, and sensors that define a specific set of behaviors an agent can perform. Capabilities are used to modularize and reuse behavior definitions across different AgentTypes
. Each Capability
focuses on a particular aspect of behavior, such as navigation, combat, or resource gathering, and can be combined with other capabilities to form complex agent behaviors.
Key Features of Capabilities:
Reusability: Capabilities can be reused across different
AgentTypes
, allowing for the efficient creation of complex behaviors by combining existing capabilities.Modularity: By breaking down behaviors into smaller, focused capabilities, the system promotes a modular approach to behavior design. This makes it easier to manage, update, and extend agent behaviors.
Flexibility: Developers can create new capabilities to introduce new behaviors into the system, enhancing the flexibility and adaptability of agents.
Implementing Capabilities:
Capabilities can be implemented in two ways:
Code: This approach offers flexibility and allows developers to create custom setup systems and use generics. It is suitable for projects that require a high degree of customization and programmability.
ScriptableObjects: This approach is more visual and allows developers to set up the system in the Unity Editor. It is ideal for projects that benefit from a more graphical configuration and setup process.
Last updated