游戏AI技术 2
【Unity3D人工智能编程精粹 2】
1、跟随领队行为。
用靠近(Seek)或追逐(Pursuit)实现跟随领队行为并不好。在Seek中,AI角色会被推向领队,最终与领队占据相同位置。而Pursuit也是一样的问题。
在跟随领队中,目标是接近领队,但稍微落后。当角色距离 领队较远时,可能会较快地移动,当距离 领队较近时,会减慢速度。
1)跟随点可以设置为领队身后一段距离。针对跟随点,应用Arrive。
2)当AI角色挡住领队前方路径时,需要逃离(Evade)。
2、排除通过狭窄的通道。
SteeringForCollisionAvoidanceQueue:只躲避通道两侧的墙。
SteeringForQueue:如果前方有AI,并且速度比自己慢,则降速。
3、创建基于单元的导航图。
4、可视点导航、导航网络。
可视点导航图的缺点。首先,当场景很大时,手工放置路径点是很繁的,也很容易出错。其次,角色只能沿着边走,当起点、终点不在点、边上时,需要先走到最后的路径点,然后再寻路。
5、导航网格。
由于在同一网格内任意两点都是直接可达的,非常的高效。另外,每一个网格的面积可以无限大,使得搜索效率更加高效,并且占用内存更小。导航网格可以自动生成,无需手动生成。
可以动态增加障碍物,但无法动态移除障碍物,无法处理移动的障碍物。
6、考虑安全性、隐蔽性的寻路。
实现躲避火力的一种计算方法:
7、常见的寻路问题:
1)当前点到单个目标点的寻路。
2)当前点到多个目标点的寻路。
3)战术寻路(如躲避火力)。
4)分层寻路,如1楼到2楼。
5)小队寻路。选择一个AI领队,其他成员跟随。另一种方法是,为每一个目标单位的目的地添加一个偏移,这样全队组员到达目标点时就不会堆叠在一起。同样的思路可以实现小队包围敌人。
下面是动态偏移目标点的算法,让每一个目标点绑上 Destination.cs,然后在 Cohesion、Seperation作用下,自动扩散,慢慢达到动态平衡。
8、一个AI角色可能有多个感知器。例如,战术感知器,用来扫描埋伏点和好的地方;环境感知器,检测墙和障碍;动态感知器,用于检测动态物体。
9、视觉系统除了要考虑可见范围,还需要考虑:
1)遮挡因素。目标虽然在视线范围内,但是否被其它物体遮挡。这需要使用 Line-Of-Sight(LOS视线测试)。
2)光线因素。目标虽然在视频范围内,也没被遮挡,但处于黑暗地带导致不可见,当其头顶路灯突然亮起时,目标突然可见。
10、感知系统分为 Trigger、Sensor。
11、触觉感知。通常可使用Unity自带的物理系统。
12、记忆感知。例如,即使暂时看不到玩家,只要还能记住玩家最后出现的位置,就会朝该位置追逐或射击。
13、一个行为树的实例。
14、行为树中条件结点(Condition)可以理解为 if 条件测试。玩家是否在20米之内?是否能看到玩家?如果条件测试结果为真,那么向你结点返回 success,否则 返回failure。
15、选择节点(Selector)。从左到右依次执行所有子结点,只要子节点返回failure,就继续执行后续子结点,直到有一个节点返回success或running为止,这时它会停止后续子节点的执行,向父节点返回success或running。若所有子节点都返回failure,那么它向父节点返回failure。
当子结点返回running时,选择结点会记住这个子节点,下个迭代会直接从该节点开始执行。
考虑一个试图躲避枪击的AI角色,它可以通过寻找隐藏点,离开危险区域,或寻找援助等方式实现这个目标。
选择节点其实是一种优化级节点,左边的结点具有高优先级,右边的结点具有低优先级。
16、顺序节点(sequence)。从左到右依次执行所有子结点,只要子节点返回success,就继续执行后续子结点,直到一个节点返回failure或running为止,这时它会停止后续节点的执行,向父结点返回failure或running。
17、随机选择结点。
18、修饰结点(Decorator)。以某种方式改变子结点的行为。
例如,循环执行子结点,直到子结点失败。
修饰结点包括 Until Failure、Until Success。
Timer:等待一段时间才执行小结点。
TimeLimit:指定某个节点的最长执行时间。
Invert:对返回值取反。
19、并行结点(Parallel)。同时执行所有子结点,直到其中一个返回failure或全部返回success。
当并行结点有一个条件结点时,意思是持续检查某一个条件,如果条件不满足,就停止执行。
20、状态机可以轮循,也可以事件通知。而行为树,只能轮循,即通过 Parallel + Until - If。
21、一个行为树的示例。将状态切分为优先级,每次先Check优化级最高的状态。
22、一棵战斗的行为树示例。
23、
24、
25、
游戏AI技术 2的更多相关文章
- 游戏AI技术
[Unity3D人工智能编程精粹] 1.运动层.决策层.战略层. 运动层.决策层包含的算法是针对单个角色的,战略层是针对小队乃至更大规模群体的. 导航和寻路是运行层的主要任务. 决策层决定角色下一时间 ...
- 常见的游戏AI技术对比(FSM,HFSM,BT,GOAP,HTN,Utilitay,机器学习)
最近研究的内容,比较懒还没写文章,先占个坑,过几天补
- 游戏AI之初步介绍(0)
目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...
- 游戏AI之路径规划(3)
目录 使用路径点(Way Point)作为节点 洪水填充算法创建路径点 使用导航网(Navigation Mesh)作为节点 区域分割 预计算 路径查询表 路径成本查询表 寻路的改进 平均帧运算 路径 ...
- 游戏AI之决策结构—有限状态机/行为树(2)
目录 有限状态机 行为树 控制节点 条件节点 行为节点 装饰节点 总结 额外/细节/优化 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行 ...
- IBM沃森会成为第一个被抛弃的AI技术吗?
作者|William Vorhies 译者|姚佳灵 编辑|Debra 导读:IBM 的沃森问答机(Question Answering Machine,简称 QAM),因 2011 年参加综艺节目&l ...
- 游戏AI玩伴,是“神队友”还是“猪队友”?
“一代英豪”暴雪迎来了自己的暴风雪. 2月13日,动视暴雪公布了2018年全年财报.财报显示,暴雪第四季度营业收入仅为28.4亿美元,低于华尔街分析师预期的30.4亿美元.在公布了财报业绩后,该公司又 ...
- 王亮:游戏AI探索之旅——从alphago到moba游戏
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云加社区技术沙龙 发表于云+社区专栏 演讲嘉宾:王亮,腾讯AI高级研究员.2013年加入腾讯,从事大数据预测以及游戏AI研发工作.目前 ...
- 游戏AI的生命力源自哪里?为你揭开MOBA AI的秘密!
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由wataloo发表在专栏wataloo的试验田 1 设计概要 1.1 设计原则和目的 英雄AI的目的主要有: 1.新手过渡局,让玩家刚 ...
随机推荐
- python协程的使用
1.Python对协程的支持是通过generator(生成器 yield)实现的.协程执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行. 2.调用生成器运行的过程中 ...
- JVM Tools
Java VisualVm 提供可视化界面展示运行在JVM上应用的信息.这些信息可用于诊断剖析应用. Jconsole Jconsole是基于JMX监视工具.Jconsole使用内置的JMX在java ...
- Maven传递依懒
A依赖B,B依赖C.B是A的直接依赖,C是A的传递依赖. 1.Maven自己调解原则 先定义者优级先原则,谁先定义就用谁的传递依赖. 路径近者优级先原则,直接依赖级别高高于传递依赖. 2.排除依懒 & ...
- 35. Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
一.原因分析 你安装oracle的时候是连网的,那么listener.ora文件里的HOST=网络给你分配的IP地址,而在你断网的时候就会出现这样的情况. 三.解决办法 方法一:监听器 通过liste ...
- View Stack容器,按钮选择子容器
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- ARP 欺骗攻击与防御
<一> ARP攻防 理论 和 工具 工具: 01: Wireshark ( 抓包软件 ) 02: P2P终结者 ( ARP欺骗工具 ) 03: cain & abel ( ...
- python内置函数使用
print(abs(1)) #绝对值,正数就是自己 ",''])) #计算可迭代对象中是否为真,其中一个为假,就显示为假 print(all('')) # If the iterable i ...
- 浅析USB HID ReportDesc (HID报告描述符)
在USB中,USB Host是通过各种描述符来识别识别设备的,一般在设备枚举的过程将会获取有设备描述符/配置描述符/接口描述符/端点描述符/字符串描述符等 现在我们来介绍一下HID ReportDes ...
- awk的用法
awk是什么 awk是一种优良的文本处理工具,同时也是一种脚本语言.awk的三位作者者已将它正式定义为“样式扫描和处理语言”.awk脚本允许您创建简短的程序,这些程序读取输入文件.为数据排序.处理数据 ...
- 深度学习原理与框架-RNN网络框架-LSTM框架 1.控制门单元 2.遗忘门单元 3.记忆门单元 4.控制门单元更新 5.输出门单元 6.LSTM网络结构
LSTM网络是有LSTM每个单元所串接而成的, 从下面可以看出RNN与LSTM网络的差异, LSTM主要有控制门单元和输出门单元组成 控制门单元又是由遗忘门单元和记忆门单元的加和组成. 1.控制门单元 ...