GOAP原理:
GOAP(面向目标的行动规划,Goal - Oriented Action Planning) 旨在让智能体通过选择一系列行动来达成特定目标。它基于对世界状态的理解,每个行动都有前提条件和效果。智能体通过分析当前世界状态与目标状态的差异,选择能缩小这种差异的行动,直到实现目标。
关键组件:
世界状态(World State):用一组属性 - 值对来描述游戏世界的当前情况。例如,“playerHasAxe” 为true表示玩家拥有斧头,“woodCollected” 为0表示收集的木材数量为 0。世界状态会随着行动的执行而改变。
行动(Action):每个行动都包含前提条件(preconditions)和效果(effects)。前提条件是行动能够执行所必须满足的世界状态,效果则是行动执行后对世界状态的改变。比如 “砍树” 行动,前提条件可能是 “playerHasAxe” 为true,效果是 “woodCollected” 增加,“treeCount” 减少。
目标(Goal):也是用一组世界状态来定义,代表智能体期望达到的最终状态。例如,目标可能是 “woodCollected>= 10” 且 “hasShelter” 为true。
规划器(Planner):负责搜索一系列行动以实现目标。常用的方法是 A* 算法的变体,通过评估不同行动序列的成本来找到最优解。成本通常基于行动的执行代价以及该行动对接近目标的贡献程度。
代码实现:
测试Demo实现:
参考书籍和链接:
《AI FOR GAMES》
Hybrid GOAP AI in Unity (Package Overview) (youtube.com)
Better AI in Unity - GOAP (Goal Oriented Action Planning) (youtube.com)
Goal-Oriented Action Planning Part 1 (youtube.com)
面向目标的 AI 行动计划 |Envato Tuts+ (tutsplus.com)