AI的真实感

​ AI的真实感一直是游戏AI程序员追求的目标,如何作出能给玩家真实感,挑战性又不会劝退玩家的AI,既须要AI程序员有必定的程序功底,还须要普遍地阅读和游戏人工智能相关的课题,好比:心理学,生物学,认知科学乃至军事战术等,在你阅读时你会不断迸发出更好的想法;还须要和团队多沟通,不管是程序员仍是策划,甚至是老板,他们有时一个好的想法就能为你设计的游戏AI加强真实性。算法

请牢记一点:游戏AI的真实感须要服务于游戏自己,其惟一目的是让玩家玩游戏以为更有趣。编程

虽然本篇博客会较少代码讲解,但更多地是但愿讲解一些学习AI过程当中遇到的或想到的方法,而后能够根据作的游戏的不一样将这些想法融入设计的游戏AI里。学习

1.让AI"不完美"--估算和假设

​ 游戏AI并不是越智能越好,由于就算是人类,有时也会犯错,因此为了让游戏AI更真实,有时须要让游戏AI犯错,才会使玩家有更愉快的游戏体验(而不是被电脑打爆)。人工智能

有两种方式诱使AI犯错:设计

  1. 先使AI“完美”,再让它变傻3d

  2. 当设计AI使用的算法时,经过假设和估算,容许悄悄混进“错误”。对象

​ 以足球AI为例,前者用一个取值为一个固定大小范围的随机值的变量做为干扰值(随机噪声),使AI每次判断踢球方向时产生小错误;后者是让AI用圆而非椭圆(估算)来描述对手的截球范围,既简化了AI算法,又实现”不完美“。固然,在不一样的游戏里如何使AI犯错就得因游戏而论了。blog

​ 而在很多FPS游戏里,在游戏AI第一次射击玩家时让其专门射偏是一个好主意,能提醒玩家有AI的出现,在未受伤前作好准备。尤为在玩家须要探索一间充满敌人的屋子时,给了玩家一个了解基本形势的机会并量力而行,不至于一进门就被集火杀死。游戏

​ 射偏还有其余好处:

  1. 好比射偏的是飞行轨迹明显或者会留下痕迹的箭,火箭等,让它故意射偏在玩家的视野范围以内会大大提升游戏的刺激感
  2. 当玩家濒临死亡时,故意让AI射击准确性下降,会让玩家有一个体验困境中躲过枪林弹雨,最后坚强获胜的惊心动魄的机会(像美国枪战大片那样),大大提升游戏的有趣性。

2 AI感知

​ 对于许多类游戏而言,想让AI看起来智能,须要AI有精确的感知模仿,并非说简单地模仿立体视觉和听力,还要其决策逻辑和其感知能力保持一致。

有些游戏不太须要这种感知模拟,一是它会占用很多的CPU和内存的资源,二是有些游戏使用这种感知模拟并不会提高游戏体验。

全能感知

1.你安静地接近一个敌人AI打算背后刺杀,结果他马上转过身一枪把你秒了(可能听到眨眼睛的声音)。

【我起了,一枪秒了,有什么好说的】

2.你潜行在黑暗处匍匐前行,旁边一个守卫明明看不到暗处,就忽然发现了你,给你来了一枪。

【是否是玩不起?AI开挂实锤】

​ 这就是典型的具备全能的感知能力的AI,这多是由于AI程序员为了轻松或没有考虑到事实和感知,这样的AI只会让玩家失去玩游戏的兴趣。所以须要将AI的视觉和听觉限制得与玩家同样,听力范围限制,没法看到黑暗里的物品,视力范围90°,不能透视等。

​ 这又牵扯出一个经典的话题:AI能够做弊吗?

​ 这里的做弊不只指的是AI使用了玩家不能使用的能力,或者单方面获取比玩家更多的信息,得到更多资源,还包括AI拥有程序员设计的完善的决策设计,当他可以战胜玩家时却放弃了那个能够获胜的决策而制造出失误的表象,也就是放水

​ 我认为是能够的。其实大部分游戏的AI都是会做弊的,除非不必,好比红警,街霸,还有很多战略游戏里面,AI都是会做弊的,由于这样能更快速有效地给玩家制造紧迫感,实现难度控制。 须要给予做弊能力的关键在于玩家和游戏AI之间天生处于不平等地位

​ 大部分AI还未能实现自我学习的能力,都是靠经验丰富的游戏AI程序员花费大量时间去模拟玩家实现接近玩家的AI,并且目前费了好大劲实现的自主学习的AI又其实与会做弊的AI(指的是做弊得恰到好处的)给予玩家的游戏体验的差异并不大,厂商为了游戏体验和成本,街机厅的老板为了恰饭,因此才会选择了给予做弊。

​ 在《可汗:战争之王2》(一款即时战略游戏)中,有两个巧妙的做弊:

  1. 在探索地图时,每30秒左右给AI一个随机的机会做弊,若是有机会做弊,就让AI去探索有些好东西的区域,这能够帮助咱们避免AI不幸碰巧没找到任何附近的资源的情况发生。
  2. 在一个区域内保持和对手的实力相近,这使得咱们可以分配合理的兵力去进攻和防守,以免兵力部署的徒劳无功。

​ 归根结底,当且仅当AI做弊能提升玩家体验时,就应该让AI做弊。但记得一点:让你的AI做弊得不易被发现,不然就是另外一种情况了。

图为《可汗:战争之王2》

图为《可汗:战争之王2》

特定感受无知

​ 1.你和精英怪单挑,一套下去发现打不过,濒临死亡被逼到角落阴暗处,精英怪丢失了目标再也不攻击,回到本来看守的地方,你莫名其妙活下来了。

​ 2.你刺杀了一位守卫,他临死前叫了一声,一群守卫马上赶来,你来不及隐藏尸体就躲进衣柜,紧张地准备着守卫发现尸体后搜索房间时的一场恶战,结果他们从尸体上踩了过去,仿佛没看到尸体。

​ 这些状况是由于AI感知得太少,也说明了为了让AI更真实,须要一种机制让AI模仿人类的短时间记忆。

​ 在我博客所参考的那本书里举了个很生动的例子:

​ 当一名AI遇到两名玩家,他的视野里有两名与他距离不一样的分别位于左右的玩家,两条线表示视野

在这里插入图片描述

​ 当他判断左边那个玩家离他更近,对他威胁程度更大时,他往左边转准备攻击左边玩家,这时他一左转右边玩家丢失在他视野以外(AI也就不会再警戒右边玩家)

在这里插入图片描述

​ 而后那名玩家(丢失在右边视野的)直接走到AI右边将其杀死

在这里插入图片描述

​ 这个例子就很形象说明了AI须要短时间记忆,否则若游戏里面发生上面所举这个例子,玩家会强烈地感受到: 我上当了!他不是人!

​ 至于如何实现短时间记忆,视你所指望的游戏效果而自由改变,通常是以一个值做为可记忆时间,用最后敌人出现的位置做为记录,增长相应的决策判断,并在下次发现该对象时更新记忆系统相关信息,当超过记忆时间或决策判断不会对自身产生影响则将其移除于记忆系统。


3 AI的个性

​ 不一样的AI若是有不一样的角色设计,就须要在其AI行为方面表现其个性,就算没有角色设计,也应该尽可能避免全部的AI的思考方式是一致的(容易让玩家感觉到虚假感),以产生有随机个性的AI。

​ 简单来讲,由于AI的行为决策系统计算不一样行为的指望值分数都被限制在同一范围内(如 0~1),那咱们能够经过对每一个分数乘以其所需个性趋向的一个偏移常量,就能轻松生成有不一样个性特色的AI。好比FPS游戏里,胆小的人永远会把本身的生存放在第一位而较为谨慎,因此将其对药品和防具的寻找行为的指望值偏量设为1.5,而暴躁好斗的人会更趋向于进攻,因此将其攻击目标的行为指望值偏量设为1.5。

​ 若是你的游戏设计要求一个角色的个性在该游戏中保持不变,那你就须要为每一个具备个性的角色创建单独的脚本文件,用来存放其全部特性数据。若是你的游戏设计没有什么角色个性设计,那么你也能够在决策系统中计算指望值分数时加入一个固定大小范围的随机个性偏移量,以生成不一样行为趋向的角色。

​ 而除了随机个性偏移量,有些时候还会由角色设计而增长更多个性化的选择趋向,如武器方面,说话方式,甚至塑造人物精神,增长牺牲自我,保护队友的决策。

​ 在使命召唤中我印象最深的是格里戈斯上士 ,临危之际不忘把队友"肥皂" 拖向掩体!而后本身却与敌人继续交火,献出了本身的生命,当时玩的时候感受很是的感动,肯定是塑造了一位有血有肉的有伟大精神的真实角色形象。

在这里插入图片描述

图右一为格里戈斯上士


4 AI的预判

​ 首先是一些游戏不太须要AI具备预判性,好比:说galgame,剧情解密类;而一些游戏就须要具备预判性的AI,好比说:策略类游戏,棋类游戏。具备必定的预判性的AI会给玩家带来惊喜,真实感与挑战性(不要盲目加强,若是整个阿尔法狗出来就直接劝退玩家了)。

​ 简单的预判好比说:

​ 当地图上的某些特定的物件即将重生时,好比说LOL里面的野区资源,又或者说是守望先锋里面固定点从新刷新的医疗包,出色的玩家会提早准备好前往目标处以保证抢先占有它,那就可让游戏AI用算法提早预计最近的即将再生或未被夺取的资源点,并规划路径前往。

在这里插入图片描述

图为lol里盖伦预判敌人路过补视野草丛埋伏

​ 又或者是在攻击和追逐敌人时计算移动目标位置时加入敌人的速度及运动方向,预判其下个时间的位置进行追逐或攻击。

​ 复杂的预判好比说:

​ 在FPS游戏中,出色的老兵在打伤了敌人后,会提早到距离受伤敌人最近的医疗包处进行埋伏,当敌人到来时给予致命一击。那么游戏AI也能够模仿这种预判思惟,在攻击成功判断后添加一个搜索并前往离受伤者最后出现的地方最近的医疗包处进行埋伏的决策,能够想象到玩家若是遇到这种会预判的电脑时的惊讶,并激起其挑战欲望。

​ 固然,预判总会有失策的时候,人类有时不也是如此,好比有些玩家不去找医疗包,或者摸清AI的习惯(只会埋伏最近那个医疗点)等状况,那么就提醒你,不能全部AI都是具备一样的预判思想(能够经过AI个性来生成不一样思考方式的AI),甚至就如一个玩笑:我预判到你预判到我会预判,因而我不预判了。没有预判的AI也许就是具备最强预判性的AI呢?滑稽.jpg


5 AI的智能等级

​ 正如一本书中写道:老谋深算的AI应该跟它的寿命成正比。假若设计一个采用了前沿技术,具备复杂思考系统的AI,但若是它在游戏中仅仅被指望活几秒钟的话,那将毫无心义。

​ 并且AI的智能程度也须要与其设计的角色的智能等级相匹配。好比说一个战争策略游戏里,不一样的士兵有不一样的军衔,好比 上尉、中尉、少尉 等,越高军衔的军官通常会有越高的智能等级,因此须要相应地提升其智能程度,好比加入较为复杂的战略决策。

在这里插入图片描述

​ 而拿简单的举例:假如你在游戏里潜行时不当心发出声响,那么普通守卫只是过来看了看周围,没发现什么人就又回到原来的岗位,而精英守卫就能够加入更为精明或谨慎的行为:先往发出声响的地方(如草场)扫射一下,若没发现异常才将状态改成正常守卫,返回其守卫处,或者加入杀个回马枪的决策。这些有趣的谨慎行为也会让玩家更不敢把AI当成是傻瓜,甚至感觉到乐趣。不过仍是记住设计AI的原则,不要让AI过于谨慎致使玩家丧失乐趣。


​ 虽然追求AI能给人带来真实感,但玩家其实也有必定的宽容能力,具备瑕疵的AI他们也会自行脑补:毕竟它终究是个AI。因此没必要过度追求真实,又不能轻视AI真实感对于游戏体验的提高的重要性,仍是牢记最重要的一点,也是追求AI的真实感的惟一目的:让游戏更有趣!

参考学习自《游戏人工智能编程案例精粹》《游戏人工智能》

转载标明出处:做者AMzz 博客: https://www.cnblogs.com/AMzz/

相关文章
相关标签/搜索