前言
- 本着学习一下游戏AI开发的目的看了书,总体来说本书涉及的技术比较浅显,但是胜在面面俱到,很适合没有做过AI开发的同学。
- 但是本书关于模糊逻辑部分非常坑,令人发指。
概要内容
FSM
有限状态机算是最简单的一种AI的实现,它的核心是状态,逻辑运算的结果表现为状态的变化。主要包含三个要点:
- 转换:状态间的关系
- 规则:触发某一状态转换
- 事件:触发规则检查
关于FSM我之前有写过,包括网上也有很多教程。
感知系统
重要概念:
- Entity:包含玩家主体对象和环境对象
- Aspect:标记卡。这个用于让AI判断检测到的物体是不是搜索的目标。
- Sense
Sense:字面翻译过来就是个感知,它包含了视觉、听觉、触觉、嗅觉和超自然的感知(忽悠人的^_^)。
实现:以下罗列出unity引擎中的实现
- 视觉:通常用于表达AI是否看到,unity用可以使用多条射线来制作。在视觉中也有FOV的概念,这个在制作射线的时候可以作为因素考虑进去。
- 听觉、触觉、嗅觉:球体实现。触觉用碰撞体其实是比较好理解,听觉和嗅觉有点抽象,但是本质还是不同的碰撞体检测不同的layer。
- 超自然的感知:直接通过获取系统数据来实现感知,作弊的行为。
寻路
- 寻路是游戏中很重要的AI行为,书中提到了A star,也用到了unity的NavMesh组件,在这里就不具体说了。
集群行为
三个基本的概念:
- 分离性:个体之间保持固定距离
- 排列的整齐性:整体间相同的方向和速度
- 内聚性:个体与集群中心位置进保持最小距离
书中实现了多个不同的算法,也利用unity引擎的一些内置功能俩实现。
行为树
行为树体现为任务节点。在行为树中有很多功能不同的节点,有完成基础任务的叶子节点,也有用于逻辑的复合节点和修饰节点。
节点的状态一般分为三种:成功、失败、运行状态(等待)
复合节点
- 序列(Sequence):逐个执行node,当出现失败时返回失败;否则一直执行完。node之间是and关系。
- 选择器(Selector):只要一个node成功就返回成功,如果运行完了都没有成功的则为false。node之间是or关系。
- 注意,节点之间的and、or的关系是可以自己控制的。
修饰节点
定义:
- 修饰节点只包含一个子节点,接受子节点返回的状态。
- 可以自由组合使用
- 根据自身的参数估算子节点结果,可以根据设置重新得到一个子节点结果(反相器)或者设置子节点频率(重复器、限制器)。
反相器:NOT标识符,接受与其子节点返回状态相反的结果。
重复器:重复估算子节点特定的次数,直至满足修饰节点定义的条件。
限制器:限制子节点估算次数。
模糊逻辑
在以往的二元逻辑中,基本只有true和false。但是在模糊逻辑中,数值是
[0,1]
,在这个区间内的值代表着一种模糊的状态。三个步骤
- 模糊化:根据隶属度函数从具体的输入得到对模糊集隶属度的过程。
- 推理方法:从模糊规则和输入对相关模糊集的隶属度得到模糊结论的方法。
- 去模糊化:将模糊结论转化为具体的、精确的输出的过程。
这部分的内容请移步游戏开发中的人工智能(十):模糊逻辑 。 本书模糊逻辑部分根本就是不完整的,内容质量非常的差。