1313113abikky43a9tbpy3.jpg

  文/连程

  怪物AI怎么才能做的比较有意思。其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是不够格的。不过,在这有限的时间里边,我也多多少少的写过几个怪物。最初,很多怪物写完之后,就感觉很傻。一点意思都没有到后来的,慢慢的觉得,像是一点一点的赋予这个怪物生命一样,成就感满满。然后让我一步一步的告诉你什么是有意思的AI。

  啊~什么才是有意思的AI呢?

  从宏观上来说,大到一个人,小到一只青蛙,都是存在AI的。落实到游戏项目里呢,能跟你打一会的,都叫做AI。我们这个地方很显然是指的后边这种。仿照现实世界AI的游戏AI。让我举个例子来说明一下,我们比较常见的AI。

  LOL的人机模式,有一定的智能感觉,不过做的有点太极端了。技能的释放,简直爆表,恐怕跟机器人硬肛正面一般情况下会比较惨,因为他们对于技能释放的控制恐怕是人类远远跟不上的。不过他们的行为模式非常单一,比如说他们明明在中路占有非常大的优势,但是一旦他们发现你在推他们的塔了,他们就会放弃自己的优势去防守自己的防御塔。比如说你是血皮他也是血皮的情况下,他的反应是逃跑而不是算算伤害跟你肛正面。所以这个感觉是比较尴尬的,硬打打不过,但是套路就能套路赢。顺便一提LOL的末日模式里边中的机器人,其实单纯的AI也是比较简单的,但是他们的技能非常,所以很难打,这也是提高AI有意思程度的一种方式,笑。

  守望先锋中的机器人对战模式中,跟LOL中的机器人也是类似的模式。记得一次,我想从背后偷袭76,结果被76反手A死,我去看死亡回放的时候,发现上一秒的时候,他还是面向前方的,下一秒直接镜头一切,冲背后的我开了几枪,等我死了,就头也不回的跑了,当时就感觉整个人都不好了。

  哈哈,举了几个例子,发现,我好像是没有见过好的AI的例子。这么说吧,一个AI应该像是你朋友跟你玩游戏一样,初级的AI就像是刚开始玩;中级的就像是玩了一段时间;高级的像是比你NB的玩家一样。或许他的操作并不好,或许他在某些事情上会失误,但是他在努力的玩下去这种感觉。

  好吧,先让我来回顾一下我做的怪物吧。

  那些曾经被我编写出来的怪物

  小魔人

  AI:

  1. 如果看到玩家就靠近玩家,造成碰触伤害

  2. 没事瞎溜达或者在原地歇会

  我们的小魔人

120948cfcu59luy8fcfy5g.jpg
  这应该是我编写的第一个怪物。很简单,也很傻。这个基本上应该算是最白痴的AI了。这种一般情况下是数量比较多,让玩家来割草的。不得不承认,这个怪物的AI白痴到爆炸,但是游戏中还是需要存在这种AI来缓解一下紧张的气氛。

  大魔人

  AI:

  1. 看到玩家之后会最初几种随机攻击模式(发射距离较远的双排弹幕、发射范围非常近的的扇形弹幕、跳跃到玩家周围去、召唤救济仓)

  2. 没事的时候瞎溜达一下或者在原地休息休息

  大魔人召唤救济仓

120948nss9svna8yny8w8k.jpg
  大魔人的扇形散射弹幕

120948w2o0tooeoey58055.jpg
  大魔人的双排弹幕

120949seiqa5qsapdjaj32.jpg
  大魔人的蹦蹦跳跳

120949nkqf4zwan7ecf7kc.jpg
  这是我编写的第一个Boss怪物。这个的攻击方式可能就会变的复杂一些了。面对他的时候,你可能需要考虑一下怎么应对他的技能。比如说。如果他释放双排弹幕的话,就不要呆在原地。如果他释放了扇形弹幕那么就需要远离他。如果他跳起来了,那么就得时刻留意,他的阴影是不是出现在了自己的周围,远离那个地点。如果他选择召唤救济仓就需要打掉救济仓,免得他搞出来一些幺蛾子。或许,这个怪物已经可以让你跟他周旋一段时间了。但是他距离我心目中那种真正的Boss还差的很远。

  大魔人的狗

  略,实在是没啥好写的

  激光眼机器人

  AI:

  1. 醒了,距离你比较远了就靠近你

  2. 像是之前的大魔人类似,一堆技能(背后光柱扫射、横向光柱驱散、双手弹幕散射、激光眼、多重激光狙击、召唤狙击怪、弹幕光球)随机放

  3. 如果敌人(玩家)在他的头上的时候释放合适的技能()

  4. 如果在下面的时候释放合适的技能()

  5. 没事睡觉

  我们的激光眼机器人

120950862826t8rrtzn0rx.jpg
  机器人召唤狙击怪

1209500v2colcbvnb0v2vo.jpg
  机器人双手发射弹幕

120950ss7i00lszsssv3m9.jpg
  机器人背后激光扫射

121136mz86609u9n6qrur9.jpg
  机器人激光狙击

121137ouymoqowo11u1uyj.jpg
  机器人激光逼退敌人

121137iw00coyoykizfogk.jpg
  机器人发射球形弹幕

12113731dz7wddcc1zd1we.jpg
  我在写这个怪物的时候觉得这个怪物碉堡了,自己拥有7、8个技能在手里边,肯定会把玩家吓尿的,结果自己在尝试的时候,就遇到了类似于LOL的AI尴尬。如果吧技能调整的伤害很强,会觉得这个怪物没法打,自己动不动就死了。但是技能伤害太弱的时候就会发现这个怪物真是太弱B了。随便打打就死了,最后为了增加他的寿命,所以增加了他的血量。我觉得这个结果是我不想看到的但是有没什么办法,这已经是最好的方式了。

  小精灵

  AI:

  1. 进入战斗的时候冲着玩家吐个弹幕

  2. 距离玩家很近的时候会逃跑

  3. 距离玩家太原的时候会尝试靠近

  4. 玩家不见了会跑到最近一次玩家出现过的地方尝试找找玩家

  5. 没事瞎溜达

  我们的小精灵

121138cuma2q6yh5geqnuz.jpg
  Piu 精灵弹幕

121138y6iy62iixtjf86jf.jpg
  太近了我要逃跑

1211398o766qblm83cbv34.jpg
  太远了,让我来追击一下吧

121139jblcfb7xsafbm975.jpg
  根据印象追击敌人

121139ysxqc4xsyqqzcbdx.jpg
  其实这个怪物也很简单,跟前面提到的小魔人是同一个属性的,都是属于没啥攻击性,被人割草类型的,不过,这个怪物却比小魔人给人的感觉更好。因为小魔人太容易被套路了,你距离他远一点,就可以随便搞他。但是这个怪物,他可以跟你周旋一段时间,虽然他没有啥攻击性。偶尔只是冲你发一个弹幕。但是他却可以保持跟在你周围,并且距离你相对来说距离适中。避免了近战伤害,同时他的攻击能够攻击到你。所以就可玩性来说这个逼小魔人好太多了

  刺客

  AI:

  1. 距离在攻击范围内的时候,会直接发动伤害非常大的伤害

  2. 如果没有被人发现的时候伪装成一颗洋葱

  3. 距离玩家比较远并且在玩家正面的时候尝试Z字走法靠近玩家

  4. 距离玩家比较远并且在玩家背面的是后快速突进到玩家背面

  5. 没事瞎溜达

  我们的刺客像洋葱

121140o3too63aqqa1o5fz.jpg
  平时的刺客

121140qe6qv1jqj1enojve.jpg
  刺客的Z字强突

121141c3gbtvs1dzshne3e.jpg
  刺客的十字斩

1211410fpzco7hh7idtzhl.jpg
  这个怪物应该算是比较厉害的怪物了,也是我比较满意的怪物之一。他的血量非常少,最低级的枪也能两枪打死。他的伤害非常高,一次攻击就能让玩家血量损失过半。通常这个怪物出现的时候,我都会觉得,要死了要死了要死了,搞死他的时候会获得莫大的挤压情绪释放的赶脚。或许他没有非常高的血量,没有花样繁多的技能。不过他能够靠着自己仅有的一个技能让你感觉精神紧张。

  综述

  一个好的AI,应该能在合适的时候做出合适的选择。比如,怪物本身并不能进行近战攻击,那么他冲到人的周围这就是傻的行为。如果他能保持一定的距离,这个距离保证他能够打到玩家,但是玩家的某些攻击打不到他。那么他的行为就是合适的。如果一只怪物他只有近战攻击,那么他就应该努力的尝试去靠近你,然后从背后给你一刀,这也是合适的。如果你的攻击手段攻击距离比较近,但是玩家距离你比较远的话,这个时候你做出这个攻击就并不合适。一个好的AI其实就是作者在操作的一个角色,跟玩家对战。其实这就是一种感觉,要想想成这是你与玩家的对决。或许你可以操作的怪物能力非常有限。血量不高、伤害不高、行动不快,但是每一个怪物都有他存在的意义,都能够为你跟玩家对战的时候贡献自己的力量。这样一个AI才能算是做的比较有意思。

  恐怕我我写的出来的部分只能是一小部分。就像是这样

121141rylmryakawy1vusz.jpg
  但是呢实际上这个课题可能真正的内容量确实这样

121142g224g01g4mmmk30g.jpg
锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛