GOAPについて
GOAPの概要
GOAPは、ゲームAIを作る手法の一つ。
エージェント(ゲームAI)はまず初めに実行可能なアクションの集合と達成すべき目標(ゴール)を与えられる。
それぞれのアクションにはPre ConditionとPost Conditionという項目が設定されていて、それぞれのConditionはアクションをするために必要な状態と、アクションをした結果どのような状況が生まれるかというものを定義している。
AIの行動はアクションを並べることによって定義され、あるアクションのPre Condition は一つあとのアクションのPost Conditionと一致していなければならない。
ゴールもConditionで定義され、あるアクションを起こした時に、Post ConditionがゴールのConditionに一致すればそのエージェントは目標達成となる。
GOAPの実装
Action: Precondition, Actionの中身, Post Condition
Planner: 与えられたworld state、actionの集合、ゴールからアクションのQueueを返すクラス
Agent: アクションを実行するゲームAI。
WorldStates: WorldのConditionを表したクラス。
この4つのクラスが必要最小限。
Agentが与えられたActionの集合とPlannerを使ってゴールするために必要なActionの経路を探索し、それを実行する。
Tips
Actionはなるだけシリアライズ可能な値のみで定義できるようにした方がいい。そうすればそれぞれのアクションをScriptable Objectで量産できるようになるし、アクションが他のクラスにあまり依存しなくなるためクリーンになる。
Agentも、ゴールとアクションの集合によってのみ定義できるようにした方が綺麗で楽。