GOAP(Goal Oriented Action Planning)
1. はじめに
GOAPのQuantumコードとvisual editorはともにベータ版です。
1.1 GOAPとは
GOAP(Goal-oriented action planning)は、2つの部分からなるAIの手法です。
- S現在の状況に応じて、指定されたゴールのセットから最も適したゴールを選択。
ゴール(願望ともいう)には次のようなものがある。ターゲットを倒す、回復する、敵の旗を盗む、
敵から逃げる、など。 - 指定されたアクションプールから、このゴールを満たすアクションのセット(プラン)を見つける。
アクションには次のようなものがある。オブジェクトを見つける、ターゲットを見つける、オブジェクトを拾う
(例:銃、敵の旗、ヘルスパック)、ポジションに行く、戦闘範囲に行く、撃つ
1.2 他のBotSDKのAIアプローチとの比較
強み
AIの動作が自明でない場合、プレイヤーが求めない限りパターンを発見することはより困難になります。
効用/関連性/コストを計算するAIのように、多くの値が考慮されるので、同じような状況でもAIは少し異なる行動をとる可能性があります。
弱み
2. Quantum GOAP コーディング
2.1 実装
2.2 GOAPエージェントの作成と更新
2.3 GOAP 状態
また、プランが見つからず(現在の状況では有効でない行動もある)、異なるゴールを選択する必要がある場合にも重要です。_
IsFinished がtrueであるか、エージェントのGOAP状態がゴールの Target State を含むとき、ゴールは満たされます。
これらの状態は、エージェントの目的を達成する方法でゲームの状態を変更するゴールを選択する計画プロセスで使用されます。
この小さな緑色の円をクリックすると、Negativeに変更することができます。その場合、円の色は赤になります。
訪問ノード数が多すぎる場合(例えば、単純なAIで100以上)、アクションの設計が正しくない可能性が高いです。
よくある問題は、アクションの条件や効果が曖昧すぎるため、プランナーが多くの選択肢を検討し、そのほとんどが有効な結果にならないことです。
もう一つ気をつけなければならないのは、行動の「コスト」です。Aはプランニングの過程で、コストを使って最適なアクションの順序を決定します。
そのため、アクションのコストが正しく設定されていないと、プランナーは正しい分岐に戻る前に多くの行き止まりを経験することになります。
ベストなのは、コストをアクションにかかる時間を秒数で考えることですが、現実的にアクションにかかる時間が短くても長くても、
ある程度の範囲(例えば0.5〜5、ほとんどのアクションは1前後)にして、アクション間のコストに大きな差が出ないようにすることです。