AI是游戏的灵魂,是人物的智商,是让玩家觉得游戏是否幼稚的重要判断功能,下面我将介绍国外流行,国内不行的,ai算法。

主要介绍  Flocking  和 Reciprocal Velocity Obstacles。

 序言:历史

大家都知道 寻路算法,这些年,自从  XX大神 网上 发布了 A*算法 之后,国内 大白小白 ,只要是个人 都开始 使用他,

一时间,A* 寻路 是 做游戏 的 标准,也是面试 最常问的 话题。

A* 寻路  也是有发展历史的,最早是 Dijkstra算法,

后来 发明了启发式 搜索,BFS,他效率最快

但启发式搜索也有 智障的时候

然后 1968年,大神 把 常用算法和启发式算法 结合起来,发明 了A*算法。

好像是 时间的停止,又好像是 国人的 愚昧无知,A*算法被国人定义为 最终的 寻路方案,但历史的脚步不会停止。

之后的 几十年,国外对A*算法做了深入的加强

迭代深化、动态衡量、带宽搜索、动态A*与终身计划A*

今天我将推开历史的进程,寻找A*的未来

A* 算法之后,是动态A*寻路。大家都会对动态A*寻路提出各种想法,

有些人说,我可以让 运动物体 碰撞时候 再次 A*。但如果多个运动物体,碰撞太多,是否效率会影响

还有人说,遇到 动态 碰撞物体,我让A* 只做 一定 距离的 寻路,那我又问,如果短距离范围 会让运动物体不能合理指向 最终位置,那就是事与愿违。

所以此时 XX大神提出了 Flocking。

运动物体好比就是一辆辆 行驶在 马路上的汽车,他们都有GPS导航仪 进行路径设定。

但突然 有车辆 发生车祸,那么车祸会造成 汽车 失去控制,偏离轨道,这个时候,运动的指挥权 不再是 方向盘。

而是 其他车辆 碰撞后 产生的 轨迹。等碰撞结束后,汽车会继续 打开GPS 导航仪,开始寻路。

这个过程 我们发现,在多车 撞击的时候,汽车并没有在 这个时候 寻路,他会头昏,是的,他只做 物理运动,一阵晕眩后,他恢复神智,重新寻路。

这样的 过程,A*次数 开销会很小。

提出Flocking思想后,聪明可爱的 程序员(这里只单指 外国人),发现,他们可以用来做 群体寻路。

XX大神 提出Reciprocal Velocity Obstacles算法,有一个运动物体来进行A*寻路,其他物体跟着他,称为 领导者模式。

因为他们之间不会重叠,用来做即时战略游戏非常棒。(帝国时代,星际争霸 )等一系列的 策略类型游戏相继推出受到了广大玩家的青睐。

正文:开启

unity 的A*starPathfindingProject插件,就集成了Reciprocal Velocity Obstacles,我们简称RVO.

可能是版权问题,3.51后,作者自己重新编写了RVO的代码,大家不需要改动。

这是作者在文档上提出的

Note
The local avoidance system was previously disabled because of licensing issues. This is no longer the case as the whole system has been rewritten in a new way. The exposed APIs for the previous system and the new one are almost identical.
国人有些人喜欢 以讹传讹搬弄是非,我就不想说他们了,永远是小白的命!

简单的使用下RVO的功能。

新建一个GameObject,选择菜单

这个是说,我同意 使用 RVO这个功能了。。

按照上图 选择 RVONavmesh。说明,他可以 穿透 范围数据内的 物体,为啥要穿透物体。

因为有时候,在相互撞车的时候,会发生死路的可能,我们不能让他卡死在那吧,所以,有必要让他造假一下,当然这种情况很少,也是情非得已。

接下来,我们做一个运动物体,让他加载  插件 第一个RVOController。

这个意思是所,我可以 不要 碰撞盒子,我不需要重力影响,我也可以碰撞了。当然移动按照这个类的方法来执行。

RVOController的参数和使用方法,以及优化,我下一节来说。大家可以先看看我做的demo来感受下。

分享一个 国外 制作的 案例,我研究的方向 和他是 一样的,大家可以看这个demo

具体代码,我整合到 框架中。

GameUnity 2.0 文档(五) 人工智能之---------------Flocking算法 (聚集,分散,列队 )的更多相关文章

  1. GameUnity 2.0 文档(三) 纸片人八方向

    DirectSprite类 有别于 上篇文档出现的 AnimationSprite类 (从头播放到尾) 这个类根据 path的图,如果是 8*8 64个图 八方向,可以设置长宽和 角度 角度 代表 8 ...

  2. GameUnity 2.0 文档(二) 纸片人系统

    本想快速的 把 之前写的类库,一股脑的 给大家 ,但又觉得,如 msdn那样的 文档,并不能给 初学者 所能接受. 因为 大部分人 对 api 还是比较陌生,也不愿意 去研究和组合. 那么 今天我选用 ...

  3. GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测

    在写之前,必须对 前一篇文档补充一下. Camera2DAngle类是 摄像机旋转 2d人物360度,PlayerMove是人物移动. 这两个类 都可以 360 °  场景旋转人物也跟着旋转. 但不能 ...

  4. GameUnity 2.0 文档(一) 事件机制

    新版本和旧版本一样,有socket事件和内部事件.区别在于,你只要一个监听就可以 消息协议规则: 用类名标记协议的好处是什么? 是利用反射机制来处理每个消息. 程序启动的时候,会读取所有类名,并字典保 ...

  5. 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

    朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 [下载文本PDF进行阅读] 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助 ...

  6. Beautiful Soup 4.2.0 文档

    Beautiful Soup 4.2.0 文档 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方 ...

  7. vue mand-mobile按2.0文档默认安装的是1.6.8版本

    vue mand-mobile按2.0文档默认安装的是1.6.8版本 npm list mand-mobilebigbullmobile@1.0.0 E:\webcode\bigbullmobile` ...

  8. css2.0文档查阅及字体样式

    css2.0文档查阅下载     网址:http://soft.hao123.com/soft/appid/9517.html <html xmlns="http://www.w3.o ...

  9. Django2.0文档

    第四章 模板 1.标签 (1)if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% e ...

随机推荐

  1. HashMap解惑

    HashMap中有一些我们容易忽视的点 1. 关于key的hash和equals public V put(K key, V value) { if (table == EMPTY_TABLE) { ...

  2. jsonp原来是这么回事,豁然开朗

    什么是JSONP 先说说JSONP是怎么产生的: 其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题, ...

  3. Excel教程(8) - 财务函数

    ACCRINT 用途:返回定期付息有价证券的应计利息. 语法:ACCRINT(issue,first_interest, settlement, rate,par,frequency, basis) ...

  4. 手机下的ev.pageX无效

      把  ev.pageX  换成  e.originalEvent.targetTouches[0].pageX;   例子: var start_x, start_y, end_x, end_y, ...

  5. vultr vps发布多用户管理功能

    中国用户购买海外vps,有一个麻烦之处是付款环节,可能你没有visa信用卡,vultr和digitalocean和linode这类vps不支持支付宝,给一些朋友带来不便.由此产生的vps代购行业,其实 ...

  6. CALayer的隐式动画和显式动画

    隐式事务 任何对于CALayer属性的修改,都是隐式事务,都会有动画效果.这样的事务会在run-loop中被提交. - (void)viewDidLoad { //初始化一个layer,添加到主视图 ...

  7. CentOS中文件夹基本操作命令

    摘自:http://www.centoscn.com/CentOS/help/2013/1024/1967.html 文件(夹)查看类命令 ls--显示指定目录下内容 说明:ls 显示结果以不同的颜色 ...

  8. 移动端touch事件获取clientX, clientY

    目有个交互需要实现手指滑动的交互,pc端使用mousedown,mousemove,mouseup监听实现. 但在ios设备上mousemove是不好监听的,同类的方法是touchstart,touc ...

  9. mycat 配置全局表

    在已配置全局序列号的基础上 1.schema.xml <table name="hf_ctrlorder_split_config" primaryKey="HF_ ...

  10. YaHoo Web优化的14条法则

    Web应用性能优化黄金法则:先优化前端程序(front-end)的性能,因为这是80%或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP请求次数 80%的最终用户响应时间花在前端程序上,而其 ...