第二章《状态机设计》。对于任何状态下都有可能转移到的状态,可以将判断放在GlobalState全局状态中,避免在其他状态中复制相同的代码。同时有限状态机可用于游戏状态管理,菜单状态,暂停状态等等
第三章 《操控行为,组行为》。有些计算是利用照距离正比/反比,避障算法主要用到了空间坐标转换,再产生一个牵制力和纵向力避障
第四章《足球体育案例》,学习分层状态机。一个Team有一个状态机,Team里的每个Player也有状态机,且Team在一定程度上会影响Player个体。每个实体的状态机中有个状态是全局状态
第五章 《游戏中的图》学习。图在游戏中有导航图,依赖图,状态图,邻接表。搜索算法有BFS,DFS,最短路径树,dijkstra,A*搜索寻路。其中dijkstra通过边松弛,A*基于BFS和估价函数进行搜索
第六章 《游戏脚本》学习。通过编写lua脚本实现AI的决策逻辑,避免反复编译浪费时间,对于对性能要求比较高的代码片段,使用C++更好
学习第七章《游戏中的触发器》。通过触发管理器更新,注册,删除触发器,AI还可以有短暂记忆,有些功能实时性不太高的可以隔几帧运行一次。目前在堆积AI知识的量,看完这本书后计划 研究UE4行为树的源码,工作流。
学习第八章《AI路径规划》。①对于到达某个点的路径,用A*寻路;对于到达某个Item,用Dijkstra。要记录路径所有的边,采用边路径而不是点路径,这样可以通过给边加变量,当AI要走这条边的时候切换状态,例如要过河切换游泳模式的情况。②对于路径平滑,相邻两条边,第一条起点和第二条终点若无障碍,则可以合并。③性能优化:若游戏环境是静态的,先预处理出所有点出发的dijkstra最短路结果,空间换时间。如果是动态,可以用在PathManager里时间片轮转所有AI寻路请求,或者使用分层路径
第九章《目标驱动》。HTN分层任务网络,将一个大的任务划分成原子任务的组合,有点像行为树的一个个任务节点
第十章《模糊逻辑》。在临界数据data1上下改变,可能会导致AI决策突变,可以依赖随机做一些判定。模糊逻辑通过对于环境的潜在输入定义隶属度,输出是确定的,能够更加逼真一些