1 游戏人工智能发展
- 硬编码(早期)
- Pong(游戏中最早使用)
- 格斗类游戏(推动了游戏AI的发展,预判玩家位置和行动)
- 策略类游戏(极大推动)
- 强化学习
2 游戏AI技术的分类
- 确定型:基于固定领域知识,模拟简单的固定行为
- 行为型:基于行为模式来模拟智能行为
- 策略型:策略模拟
确定型AI算法
预先编入代码当中的可预测的行为(例如:物体的运动轨迹)
跟踪追逐:在每一帧中,智能体计算其到目标的前进方向,并根据其速度,前进一段距离
逃避算法:与前面的chasing算法基本相同,唯一区别是智能体沿着远离物体的方向移动
行为型AI算法
例如:吃豆人
3 智能体agent与基本感官系统
智能体需要对其周围的事件、环境、玩家控制角色及其他智能体做出反应。
Agent基本感官系统
该图片来源:页游www.laoshoucun.com页游
智能体感官系统组成
- 所在队伍
- 感觉(视觉、触觉。。。)
视觉:基于光线投射实现(缺点:并不是对视觉过程准确建模)
视锥:检测游戏对象与视锥是否重叠;从视野中心区到视野周边区域,游戏对象被检测到的可能性降低。
触觉:使用碰撞器检测
智能体感官系统设计
创新性组合(例如设计一个能感知魔法但没有视觉的NPC)
4 路径规划
路点法
物体移动路径事先确定
简单,是复杂寻路算法的基础。
使用该方法更容易微调AI智能体的行为
应用广泛(如TD类,祖玛)
A*启发搜索
该图片来源:页游www.laoshoucun.com页游
总结
- 将起始位置添加到Open表.
- 重复做以下步骤:
a) 将Open表中具有F最小值的节点设为当前节点.
b) 将该节点从Open表中移至Closed表.
c) 对于当前节点的八个相邻节点:
如果相邻节点为不可走区域或已经在Closed表中,对这些节点不做任何操作. 否则作如下操作:
1)如果相邻节点没在Open表中,则添加入Open表。并将新加入Open表中的节点的父节点设为当前节点,并计算F、G、H值。
2)如果相邻节点已经在Open表中, 比较新路径到该节点的G’与原G的大小:如果G’<G,则更改该相邻节点的G值为G’,重新计算F,并设其父节点为当前节点.
d) 程序终止条件为:
当目标节点被添加到Closed节点(标志路径已经被找到),或
没有找到路径,并且开放列表已为空。 - 保存路径。 从目标节点开始,遍历所有父节点,直到起点为止。
NavMesh
- 设置静态导航Navigation Static
- 烘焙导航网格
- 为玩家控制角色或NPC添加导航网格代理组件NavMesh agent
- 通过脚本设置目的地
5 有限状态机(FSM)
自定义有限状态机行为
- 为状态添加行为脚本
- 行为脚本的事件函数
总结
- 状态规模很大时,设计非常复杂。
- 有限状态机一旦设计完成,难于动态变化。
- 应用于游戏当中的可预测行为。
6 群体行为的模拟
核心:群聚算法
三条规则:
- 凝聚:个体都在其邻近个体的平均位置上运动。
- 对齐:个体按其邻近个体的平均方向移动。
- 分割:个体都要避免与其邻近个体发生碰撞。
7 模糊逻辑
模糊逻辑起源
1965年,美国著名控制论专家Lotfi Zadeh教授----模糊数学
基础为:模糊集合论
模糊逻辑的运算符
模糊逻辑的应用
- 决策
- 行为选择
使用模糊逻辑帮你的人工智能角色做出模糊的判断。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。