游戏中的人工智能(27张)课件

PPT
  • 阅读 193 次
  • 下载 0 次
  • 页数 28 页
  • 大小 2.985 MB
  • 2022-11-15 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档10.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
游戏中的人工智能(27张)课件
可在后台配置第一页与第二页中间广告代码
游戏中的人工智能(27张)课件
可在后台配置第二页与第三页中间广告代码
游戏中的人工智能(27张)课件
可在后台配置第三页与第四页中间广告代码
游戏中的人工智能(27张)课件
游戏中的人工智能(27张)课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 28
  • 收藏
  • 违规举报
  • © 版权认领
下载文档10.00 元 加入VIP免费下载
文本内容

【文档说明】游戏中的人工智能(27张)课件.ppt,共(28)页,2.985 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-13154.html

以下为本文档部分文字说明:

小组成员:xx游戏中的人工智能——群聚什么是群聚呢?•群聚,就是多个非玩家角色一起行动,而不是个别行动。比如说:你看到的是一群大雁,它们的飞行是有一定的规律,而且你完全可以看出来它们会排成一字或者人字,不会是乱糟糟的飞行。那么,我们在游戏中,诸如巡逻小队之类的移动又是什么样

的呢?•1987年,CraigReynolds发表了一篇名为《Flocks,HerdsandSchools:ADistributedBehavialModel》的论文,在这篇论文中,他提出了基本的群聚算法模型,甚至可以这样说,后续的一系列群聚算法都有这篇论文的Rey

nolds基本群聚算法核心群体行为的核心是基本的群聚算法。“单位”(unit)指代组成群体的个别实体。•凝聚:每个单位都往其临近单位的平均位置行动。•对齐:每个单位行动时,都要把自己对齐在其临近单位的平均方向上。•分隔:每个单位行动时,要避免撞上其临Reynolds基本群

聚算法是没有领导核心的;就某种意义而言,它们都跟着整个群体移动。每个单位都必须有行进的能力;每个单位都必须知道其局部周围的情况,即邻近单位位置、方向以及群体中与自身最靠近的单位之间的距离。在仿真物理环境中可以对仿真中的单位施加转

向力使其改变方向;在砖块环境中可以采用视线方•为了分析我们这个群聚系统,我们需要理解一些基本的概念:•1,单位的视野,我们以r为单位的视野半径,以θ为视野角度,落在这个圆弧内的所有物体都是可见的。•2,避开规则(Avoidancerule),单位不会被彼此撞上。•3,

凝聚规则,单位离得太远就应该靠近一点,这个规则和避开规则合在一起,从而形成了群聚。砖块环境中的移动模式•非确定性方法(加入随机因素):1、初始化路径数组,移动数组2、用Bresenham线段算法计算不同的移动模式3、将模式标准化4、设定前进速率,按照设定好的移动模式移动,当到达线段的端点时

检查移动数组,以确定移动方向。•到目前为止,我们讨论的群聚规给大家留下了深刻印象。然而,像这样的群聚行为如果在游戏中,这些单位以群体形态移动式,还能避免撞上游戏世界里的物体,那就更实用了。•实际上加入避开障碍物的行为其实相当简单,我们所要做的就是提供某种机制给那些单位使用,让他

们看到前方,再施加适当的转向力,使其避开路径中的障碍物。•首先,我们运算向量a,这只是该单位和障碍物位置间的差值,接着,取a和v的内积,将a投射到v上,由此可得向量p,把向量p减去向量a,可得向量b,现在要测试v是否和圆的某处相交,得测试两种情况。1.p的数值追

随领头者•对基本群聚算法的修改不必只限于避开障碍物。因为来自于各种规则的转向力都在同一变量中累加,然后一次施加,以控制该单位的方向,所以,我们还可以在考虑过的规则之上在叠加其他许多有效的规则。•其中一条有趣的外加规则,就是跟随领头者规则。如前所述,我们讨论的群聚规则是没

有领头者的,然而,如果我们把基本群聚算法和某些领头者AI结合起来,就可以在游戏中使用群聚功能时,开启许多新的可能效果。•如果我们在其中加入领头者,就能让群体的移动更有目的性,或者看起来比较有智能。我们来看看一个实际例子:另一种群聚方法——简化集群技术•Reynolds的群聚算

法已经被很好地证明了,而且在生成若干组智能体的逼真动作效果非常好。但是,该算法在计算上的开销大,尤其是在有大量智能体或者有复杂场景需要探测的时候。因此,他们有时候不适合实时的应用程序,比如电视游戏。•所以我们有必要对集群技术进一步的进行简化。•群聚算法在模拟少量或中等数量的生物的自然行

为时是完美的,尤其当这些生物的运动(而不是生物和生物之间的影响、以及生物和场景之间的互动)是主要的关注焦点的游戏中(例如任天堂的Pikmin)。•但是,随着生物个数的增加,传统的群聚算法开销越来越大。在群聚中每个智能体必须

检查其他所有智能体以确定是否因距离太近而产生影响,在这种情况下,如果存在n个智能体的场景,需要计算1/2(n²)次独立的距离计算(给出中间的结果储存在交互的数组里)。那么分离规则,队列规则和聚合规则必须对每个智能体计算它附近的每个智能体。另一方面

,因为影响是那么如何对集群技术进行简化呢?•以下将对如何对集群技术进行简化给出两点方法:•1.从群体初始化方面入手。•2.从群体运动方面入手。•参考资料:•《人工智能游戏编程真言--清华大学出版社》•《游戏开发中

的人工智能--东南大学出版社》•《游戏设计概论—清华大学出版社》•参考网站:•http://wenku.baidu.com/view/df809645be1e650e52ea998d.html•http://blog.csdn.net/nightelve/article

/details/8982647初始化•初始化智能体最简单的方法就是把它们从幕后搬出来。•让集群智能体从天花板上落到玩家头上,让它们从墙上漩涡式地钻出来,或者大群智能体生物从深谷裂口中瀑布般地涌出来(最好是在玩家占领的地盘上)都是最大限度利用集群生物出场的方法

。集群生物也可以用“爆炸”的方式进入场景的某个区域,当某个容器被破坏(如笼子)或者被打开(如棺材)。返回运动•对每一个活动的智能体保存其当前的位置,根据其速度和运动方向更新x,z坐标,并且根据重力增加下落速度时修改其y坐标。计算智能体的位置

和目标对象的位置之间的差异,给出x,y和z坐标的增量。再算出从目标对象到智能体的相对夹角(angle)(atan(dz,dx)-agent->yrot)。如果智能体是逃离目标对象(因为它的定时器timer大于某个特定值),angle取负值。如果玩家

在距离智能体某个范围之内(用适当的距离检查,或者用简单的盒式冲突检测来节省时如果智能体不是下落的,那么它的操纵方式和运动方向根据它在内层区域或外层区域分别按如下进行修正:•外层区域:如果未到速度的最大值就增加智能体速度。每个智能体的最大速度应该不同。

如果智能体的运动方向大致是正确的,给这个智能体的y-rotation一个小小的扰动否则就马上改变y-rotation,指向正确方向。•内层区域:按照智能体的速度改变它的y-rotation,并且按照它的angle改变它的速返回Bresenham直线算法•B

resenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在n维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最先发展出来的算法。返回凝聚•凝聚意指我们想让所有单位都待在同一群体中,我们不要

每个单位和群体分开,各走走的路。为了满足这项规则,每个单位都应该朝其邻近单位之平均位置前进。•邻近单位的平均位置很容易计算,只要找出邻近单位后,其平均位置就是其各个位置的向量总和,再除以总邻近单位数。Pave+=units[j].vPosition;这一行将所有邻近单位的位

置向量相加。Pave和vPosition是Vectort类的变量,此overloadedoperator(重载运算符)会替我们做向量加法。DoUnitAI()找出邻近单位并收集信息后,就可以使用群聚规则了。此段程序第一件事是检查邻近单位数量是否大于0.如果是,我们就能继续计算邻近单位

的平均位置。做法是以所有邻近单位位置的向量总和Pave除以邻近单位数量N。最后一行就是实际计算满足凝聚规则的转向力。凝聚•基本上,累加在FS.X的转向力是当前单位的方向,以及其邻近单位平均位置向量间的角度的线性函数,也就是说,如果

角度大,则转向力也会相对较大;如果角度小,则转向力也会相对较小。这正是我们想要的。如果当前单位的方向和邻近单位的平均位置的方向相距很远,我们会想让他做大幅度的转弯。如果其方向和邻近单位平均位置的方向不太远,我们只想对其方向做小范围的修正。返回对齐•对齐意指我们想让群聚中的所有单位都大致朝相

同方向前进。为了满足这条规则,每个单位都应该在行进时,试着以等同其邻近单位平均方向的方向来前进。中间以粗线表示单位是沿着和其相连的粗箭头方向进行的。另外和其相连的虚线箭头则代表其邻近单位的平均方向。因此,就此而言,以

粗线表示的单位必须朝右侧行进。我们可以利用每个单位的速度向量求出其方向。把每个单位的速度向量,换算成单位向量,就可以得出其方位向量。上面收集邻近单位方向数据的过程,那一行Vave+=Units[j].vVelocity;会把每个邻近单位的速度向量累加在

Vave中,其做法类似于Pave累加位置过程。这段代码计算了每个单位的对齐转向力。代码几乎和上面聚集差聚集规则一样。此处不再处理邻近单位的平均位置,而是把Vave除以邻近单位数量N,先求出当前单位邻近单位的平均方向。所得结果储存在u中,并换算成单位向量,则为平均向量。返回就此例而言,转向

力是当前单位方向,及其邻近单位平均方向间角度的线性函数。同意的,只要当前单位的方向,和其邻近单位的平均方向很接近,则只需稍微作调整。分隔•分隔意指我们想让每个单位彼此间保持最小距离,即使根据凝聚和对齐规则,他们会试着靠近一点。我们不想让那些单位撞在一起,或者更糟的是,在某个巧合地点重合在一起。因此

,我们要采用分隔手段,让每个单位和其视野内的邻近单位保持某一预定的最小分隔距离•处理分隔的程序和处理凝聚及对齐的只有一点不同,因为就分隔而言,求算适当的转向力校正值时,我们必须逐一检视每个邻近单位,而不是使用所有邻近单位的某个

平均值。返回•1、不是井里没有水,而是你挖的不够深。不是成功来得慢,而是你努力的不够多。•2、孤单一人的时间使自己变得优秀,给来的人一个惊喜,也给自己一个好的交代。•3、命运给你一个比别人低的起点是想告诉你,让你用你的

一生去奋斗出一个绝地反击的故事,所以有什么理由不努力!•4、心中没有过分的贪求,自然苦就少。口里不说多余的话,自然祸就少。腹内的食物能减少,自然病就少。思绪中没有过分欲,自然忧就少。大悲是无泪的,同样大悟无言

。缘来尽量要惜,缘尽就放。人生本来就空,对人家笑笑,对自己笑笑,笑着看天下,看日出日落,花谢花开,岂不自在,哪里来的尘埃!•5、心情就像衣服,脏了就拿去洗洗,晒晒,阳光自然就会蔓延开来。阳光那么好,何必自寻烦恼

,过好每一个当下,一万个美丽的未来抵不过一个温暖的现在。•6、无论你正遭遇着什么,你都要从落魄中站起来重振旗鼓,要继续保持热忱,要继续保持微笑,就像从未受伤过一样。•7、生命的美丽,永远展现在她的进取之中;就像大树的美丽,是展现在它负势向

上高耸入云的蓬勃生机中;像雄鹰的美丽,是展现在它搏风击雨如苍天之魂的翱翔中;像江河的美丽,是展现在它波涛汹涌一泻千里的奔流中。•8、有些事,不可避免地发生,阴晴圆缺皆有规律,我们只能坦然地接受;有些事,只要你愿意努力,矢志不渝地付出,就能慢慢改变它的轨迹。•9、与其埋怨世界,

不如改变自己。管好自己的心,做好自己的事,比什么都强。人生无完美,曲折亦风景。别把失去看得过重,放弃是另一种拥有;不要经常艳羡他人,人做到了,心悟到了,相信属于你的风景就在下一个拐弯处。•10、有些事想开了,你就会明白,在世上,你就是

你,你痛痛你自己,你累累你自己,就算有人同情你,那又怎样,最后收拾残局的还是要靠你自己。•11、人生的某些障碍,你是逃不掉的。与其费尽周折绕过去,不如勇敢地攀登,或许这会铸就你人生的高点。•12、有些压力

总是得自己扛过去,说出来就成了充满负能量的抱怨。寻求安慰也无济于事,还徒增了别人的烦恼。•13、认识到我们的所见所闻都是假象,认识到此生都是虚幻,我们才能真正认识到佛法的真相。钱多了会压死你,你承受得了吗?带,带不走,放,放不下。时时刻刻发悲心,饶益众生为他人。•14、梦

想总是跑在我的前面。努力追寻它们,为了那一瞬间的同步,这就是动人的生命奇迹。•15、懒惰不会让你一下子跌倒,但会在不知不觉中减少你的收获;勤奋也不会让你一夜成功,但会在不知不觉中积累你的成果。人生需要挑

战,更需要坚持和勤奋!•16、人生在世:可以缺钱,但不能缺德;可以失言,但不能失信;可以倒下,但不能跪下;可以求名,但不能盗名;可以低落,但不能堕落;可以放松,但不能放纵;可以虚荣,但不能虚伪;可以平凡,但不能平庸;可以浪漫,但不能浪荡;可以生气,但不能生事。•17、人生

没有笔直路,当你感到迷茫、失落时,找几部这种充满正能量的电影,坐下来静静欣赏,去发现生命中真正重要的东西。•18、在人生的舞台上,当有人愿意在台下陪你度过无数个没有未来的夜时,你就更想展现精彩绝伦的自己。但愿每个被努力支

撑的灵魂能吸引更多的人同行。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?