思维导图
文字版:
5 结构化架构:游戏AI开发的常用技巧
本章目的
-
让读者对游戏AI的全局框架有充分的了解,并针对开发问题提供思路和解决方案
-
不会说深入具体方法和技术细节,这些内容可以参考文后文献资料
定义
-
AI架构
-
实现AI评估形式并做出决策的底层代码(通常使用C++实现)
-
-
配置
-
从具体感知数据(即具体输入)映射到具体决策结果或动作(即具体输出)的一份行为规约。例如FPS中AI角色是否应该攻击,逃跑,为武器装填弹药等
-
注:AI配置可以理解为,AI感知,AI决策和AI行为三者的统称。
-
-
角色
-
把AI实际控制的事物成为角色(character)
-
决策体
-
决策体也叫推理器(reasoner)
-
一名角色会有多个决策体(decision-maker),例如选择使用哪件武器的算法,确定射击目标的算法,表达感情的算法等等。
-
注:一个决策体可以理解为单一的“决策算法”
-
-
推理器的输出结果成为选项(option)
-
推理器选定(select)选项
-
推理器取消(deselect)选项
-
注:选项可以理解为可执行的行为或行为序列。
-
-
-
常用AI架构
-
脚本(scripting)
-
有限状态机(Finite-State Machine, FSM)
-
一组状态和状态迁移的集合
-
状态表示推理器可以选定的选项,而状态迁移是从一个状态变化至另一个状态的条件。
-
-
基于规则的AI(rule-based AI)
-
包含一组有序的为此断言-选项对。
-
注:似乎就是if-else?
-
-
基于效用的AI(utility-based AI)
-
使用启发函数(heuristic function),为每个选项指定一个浮点值(即权重、优先级或效用值),然后基于这些数值选定要执行的选项。
-
选用效用值最高,或为每个选项指定权重值再加权随机等
-
-
面向目标的行动规划(GOAP)或层次化任务网络(HTN)
-
为AI的目标状态创建一组允许它们达成目标的选项序列。
-
-
行为树(behavior tree)
-
很特殊:可以嵌入其他架构的架构。
-
P71 待看:可以将几乎任意的架构应用在选择器上,使行为树本身更接近一种框架(或者元架构)而非特定的架构。
-
注:看参考资料,并思考解决”行为树元架构,兼容其他框架的解决方案“
-
-
AI架构常用技术
-
层次结构
-
AI配置复杂度高
-
AI配置随配置空间大小而增加,即AI要处理的情况越多,考虑因素就越多,需要囊括的选项也越多,复杂度越高。
-
添加新选项时,需要考虑和已有选项的影响
-
-
常见AI架构复杂度
-
n是选项数量
-
FSM:O(n^2)
-
基于效用的AI
-
对已有的启发函数进行必要的平衡性调整
-
注:应该是O(n)
-
-
基于规则的AI
-
将新定义的规则插入到已有序列中合适的位置。但数量过多时这个架构也难以驾驭
-
-
-
定义
-
对决策过程进行层次划分
-
-
优势
-
大大降低AI配置复杂度:新增选项时,需要考虑的关联选项被限制在了每个推理器的局部范围。
-
例如FSM,25个选项,复杂度是25^2=625。如果有5个推理器,各有5个选项,那么配置AI的复杂度仅仅是5*5^2=125。
-
-
-
应用
-
层次化FSM
-
HTN规划器
-
GOAP
-
命令层级
-
行为树
-
-
-
选项堆栈
-
机制
-
惯性(inertia)
-
让AI始终执行一件任务,直到有更好的理由去做别的事情
-
-
冷却
-
AI有意识地做出停止当前动作的决策后,应该无视被取消选项的惯性,而且还需要防止AI在短时间内返回之前选项的机制
-
-
选项堆栈
-
AI需要对当前的需求或机会做出及时的反应,完成后回到之前的选项继续执行。
-
也叫状态堆栈 state stack
-
-
-
目的
-
选项堆栈不是要防止AI改变自己的想法,而是保存先前的状态,使AI再做决策时能够得到更合理的结果
-
-
-
知识管理
-
两类知识
-
认知所处环境所需的知识
-
评估形式并做出决策所需的知识
-
-
黑板
-
定义
-
游戏中,黑板通常指不同AI组件用来保存其他组件使用或者自己多次使用的知识信息的一块共享内存空间
-
-
角色黑板
-
保存角色特有信息,只有角色AI可以访问
-
-
全局黑板
-
存储通用信息,对所有角色开放
-
-
用途
-
协调不同AI或同一角色的不同AI组件工作
-
-
-
场景智能
-
不能把所有知识都塞给角色AI
-
场景本身可以包含只能逻辑
-
-
-
模块化
-
角色组件系统
-
移动组件
-
动画组件
-
AI组件
-
武器组件
-
-
模块化
-
可重用/可插拔:组件代码复用,项目内或项目间
-
提高开发效率。选择合适的模块,快速实现角色原型
-
模块化,或复用的本质:把我们从细节和琐碎中解放,得以从宏观概念上思考并解决更大(例如整个AI系统和AI模块)的问题。
-
-
总结
-
层次结构
-
将AI的决策过程划分为规模合理的多个子部分,进而极大简化AI配置的创建
-
-
选项堆栈
-
允许AI对临时情况作出及时响应,并随后继续执行原有目标
-
-
知识
-
黑板共享
-
场景智能
-
-
模块化
-
代码复用
-
从宏观层面构思AI的行为配置,而不局限于代码细节
-
XMind - Trial Version