游戏AI技术
【Unity3D人工智能编程精粹】
1、运动层、决策层、战略层。
运动层、决策层包含的算法是针对单个角色的,战略层是针对小队乃至更大规模群体的。
导航和寻路是运行层的主要任务。
决策层决定角色下一时间步该做什么。
感知(Sense)-> 思考(Think)-> 行动(Act)。
2、通过产生一定大小、方向的操控力,使角色以某种方工运动。Unity3d提供的开源库 UnitySteer 可以快捷地实现操控行为。
3、如果游戏的决策系统不是很复杂,只要利用 FSM 就可以实现。在处理大规模的问题时,FSM很难复用、维护、调试。行为树层次清晰,易于模块化,简洁高效。
4、每一个物体拥有 position、mass、velocity、orientation。以及 max_force、max_speed。
这个物体位置的计算方法:
1)确定每一帧的当前操作力(最大不超过max_force)。
2)除以交通工具的质量mass,可以确定一个加速度。
3)将这个加速度与原来的速度相加,得到新的速度(最大不超过max_speed)。
4)根据速度和这一帧时间,计算出位置的变化 。
5)与原来的位置相加,得到新位置。
5、Vehicle类。一个物体可以受到多个操作力。,每个操作力有各自的weight。
注意 steering_force 是一个向量:
分别有以下类型的个体操作行为:
6、AILocomotion 中速度的计算。注意 moveDistance是向量。
通过 slerp 防止方向大幅抖动。
7、操作向量是预期速度与当前速度的差。
8、1)SteeringForSeek。
9、2)SteeringForFlee。与Seek相比,多了fearDistance,另外DesiredVelocity速度相反。
10、3)SteeringForAttrive。以Target为中心,圆外径直冲向Target,圆内减速。
注意:以下代码,应当对 desiredVelocity进行限速。
11、4)SteeringForPersuit。目标不再是静态物体,而是会移动的物体。
当距离很近时,直接冲向目标。当距离较远时,需要预测在哪个postion,可能追上Target。
注意:不是追逐Target下一帧的位置,而是追逐预测的相遇点的位置。
12、5)SteeringForEvade。预测目标将在哪个positon追上自己,然后给一个相反方向的力。
注意:以下 lookaheadTime 代表的是最快可能追上的时间。
13、6)SteeringForWander。
随机瞎逛,一种通常的做法是,每隔几秒随机一个目标位置,让角色奔向这个位置。这种做法存在角色突然调头的问题,体验不是很好。
14、7)SteeringForPath(路径跟随)。路点半径,当角色距离目标点多远时认为已经达到,从而继续向下一个路点前进。
15、8)SteeringForAvoidance。只躲避最近的障碍物。
avoidance_force = ahead - obstacle_center。
注意:下面代码使用 Physics.Raycast 进行碰撞检测,并未使用 Half Ahead方法。
16、群体行为。
17、SteeringForSeparation.cs
18、SteeringForAlighment。
19、SteeringForCohesion。
游戏AI技术的更多相关文章
- 游戏AI技术 2
[Unity3D人工智能编程精粹 2] 1.跟随领队行为. 用靠近(Seek)或追逐(Pursuit)实现跟随领队行为并不好.在Seek中,AI角色会被推向领队,最终与领队占据相同位置.而Pursui ...
- 常见的游戏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.新手过渡局,让玩家刚 ...
随机推荐
- Linux7.3系统 升级python到3.6使用ping主机脚本
Linux7.3默认的python系统是2.7.5,然后想着升级使用python3.6.6 1 下载 2 解压 tar fx Python-3.6.6.tgz 3 configure --pref ...
- 常见天气api
1. 心知天气API1.1 免费版:400次/小时,也就是9600次/天.国内城市数据,天气实况,3天预报,6项生活指数.这个API的免费版已经提供了很多年了,应该算最长寿稳定的那批API了……1.2 ...
- getent passwd 不能访问到 ldap 的用户
getent passwd 不能访问到 ldap 的用户,搞了一整个下午! 依然没搞定, 一开始是不知道nslcd 需要启动,另外getent passwd 域, 无有用结果, 换个方式搜索 get ...
- 零配置使用springboot
1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- 13. 字符串转为json对象或json数组
##########1.json字符串转json数组########### var str="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30 ...
- Tomcat相关的配置和设置
1.Tomcat环境配置方法见百度文库.略. 2.查看. webapps:所有课执行的WEB项目都放在次目录中 work:此文件保存了所有临时文件,当开发中发现一个程序无法正确执行的时候,就可以考虑将 ...
- java中的byte
8 bit (位) = 1 Byte (字节) java中的byte就是Byte 1024 Byte = 1KB 1024 KB = 1MB 1:“字节”是byte,“位”是bit : 2: 1 by ...
- eclipse中jdk源码调试步骤
分析源码是学习一项技术内幕最有效的手段.由于正常的引入JAr包源码没法进行对源码打断点,想要深入了解源码不方便.下面就开始介绍源码调试的步骤. 1.在eclipse新建一个JAVA项目compare_ ...
- 20165304《JAVA程序设计》第四周学习总结
教材内容总结 第五章 子类与继承 1.子类声明中通常用关键字extend来定义一个子类(class 子类名 extend 父类名{}) 2.子类和父类在同一包中的继承性,继承的成员变量或方法的访问权限 ...
- table布局与div布局
DIV与TABLE本身并不存在什么优缺点,所谓web标准只是推荐的是正确的使用标签,好比说:DIV用于布局,而TABLE则本来就是转二维数据的.让TABLE做该做的事,并不是说页面里不出现TABL ...