Goals

In the GOAP system, Goals represent the desired outcomes or objectives that an agent aims to achieve. They serve as the starting points for the Planner, guiding it in determining the most suitable Action to take in order to fulfill a particular Goal.

Goal Config

The GoalConfig provides the necessary settings to define and shape a Goal. It encompasses several properties:

1. Class Type

Description: This property specifies the exact type or category of the Goal. It helps in identifying and categorizing different goals within the system.

2. Conditions

Description: Conditions are a set of criteria based on WorldKeys that must be met for the Goal to be considered achieved. These conditions guide the Planner in its decision-making process, helping it select the best Action that aligns with the desired outcome.

For instance, if a Goal is to "Stay Safe", conditions might include WorldKeys like "IsHealthHigh" or "IsInSafeZone".

Goal Class

The Goal class serves as the blueprint for creating specific goals. Key points about the Goal class:

  • Inheritance: Every Goal class is derived from the foundational GoalBase class. This ensures that all goals share some basic properties and behaviors.

  • Statelessness: A Goal class doesn't maintain any internal state. Its primary role is to provide criteria to the Planner, which then uses this information to decide on the most appropriate Action to execute.

By understanding and configuring Goals appropriately, game developers can guide agents towards desired behaviors, ensuring they act in ways that enhance the gameplay experience.

Example

FixHungerGoal.cs
using CrashKonijn.Goap.Behaviours;

namespace Demos.Goals
{
    public class FixHungerGoal : GoalBase
    {
    }
}

Last updated