— AI分享站

Archive
Tag "人工智能"

游戏AI和游戏设计紧密相关,我也经常说,一个好的游戏AI,不在于算法的艰深和行为的完全拟真,而在于和整体游戏性的契合,在平时工作中,也是和游戏设计师打交道的最多,有这样一句话,一个好的AI程序员相当于半个游戏设计师 :) ,所以这次就来谈谈关于AI难度的设计问题。

谈到游戏设计,有些人觉得可能是灵光乍现的东西,只可意会不可言传,我以前也是这么认为的,但去年以AI程序员身份参加了一个为期两周的设计培训课程,感到收获颇丰,原来游戏设计通过总结前人对于游戏设计的实践,是可以形成一系列科学有效的方法的,好的游戏都有一些共性在里面,所以像《愤怒的小鸟》,《植物大战僵尸》这种游戏的成功,也绝不是偶然的。虽然在分工上,设计大部分都是游戏设计师的职责,但作为AI程序员,有时需要给出一些技术上的建议,并能提供一些技术上的支持。这次提到的关于AI难度的设计,也是我最近遇到的一个问题,我想如果运用一些科学的方法,就可以在设计时明确AI的方向和做法,这样对开发是有相当的益处的。

先假设一个场景,如下图所示(P代表玩家,E代表敌人,黑色的块代表障碍,黄色的圈代表目标),这是一个潜行类的游戏,游戏目的是控制游戏内的主人公拿到敌人基地内的情报图,而敌人会在基地内不停的巡逻,如果被发现就会Game Over。假设我们要做成关卡类的游戏,每一关都会比前一关难一点,关卡中的AI行为也要有难易之分。那作为AI程序员,自然就要去思考如何来AI的难度变化,来符合游戏设计人员的需要。

DifficultyOfAIs

当我们设计敌人的AI的时候,会先考察有多少因素会影响到敌人的AI难度,这些因素也是我们可以提供给关卡设计师的,值得说明的是,我们只考量AI层面的难度,不考察由关卡本身带来的难度,因为显而易见的一些因素,诸如敌人数量,敌人出生位置,障碍的位置等等,也是可以增加或者减少关卡难度的,虽然说我们在这里不考虑这些因素,但这些因素也是可以用我接下去的设计方法来设计的。

好,继续我们的AI难度设计,我们仔细分析问题之后,会列出如下可能影响到AI难度的因素

  • 巡逻方式:静止的,可预判的,不可预判的
  • 巡逻范围(用巡逻路线长度衡量):0,4米,8米,12米,无穷
  • 视野角度:0度,30度,60度,90度,120度,360度
  • 视野范围:0米,1米,3米,5米,7米,无穷
  • 移动速度:0米/秒,2米/秒,4米/秒,6米/秒,10米/秒
  • 声音感知范围:0米,1米,3米,5米,无穷

上面的这些因素后面的取值,都是由简单至难依次递增的,特别值得注意的一点是,每一个因素的第一个值都是最简单的情况,可以称之为“空值”,最后一个值是最不可能的情况,一般称之为“无穷值”,在空值和无穷值之间的值,是根据需求,按经验定义的,一般情况下(除巡逻方式外),我们不会取空值和无穷值。就拿“视野角度”这个因素来说,它的空值就是0度,表示这个敌人没有视野,它的无穷值是360度,表示这个敌人能看到周围所有的东西,在这之间的值都是比较合理的视野角度,可以任意取用。

有了这些因素,我们就可以用一张二维的表格来定义各种难度下的AI设置了,如下面这个表格

  巡逻方式 巡逻范围 视野角度 视野范围 移动速度 声音感知范围
AI1(新手) 静止 4米 30度 1米 2米/秒 1米
AI2(简单) 可预判 8米 60度 3米 2米/秒 1米
AI3(中等) 可预判 8米 90度 5米 4米/秒 3米
AI4(困难) 可预判 8米 120度 7米 6米/秒 3米
AI5(超神) 不可预判 12米 120度 7米 6米/秒 5米

这里我们通过设置不同的因素值,定义出了5种难度的AI设置,当把这些AI放入关卡中后,就会对关卡的难度产生影响,也帮助了关卡设计师来更好的设计和调整关卡的难度。

当然,作为AI程序员,可能我们并不需要参与到最后的关卡难度设计,但这样的设计方式,我觉得,是值得我们学习的,也可以帮助我们在实现AI的过程中,辅助游戏设计师,定义出可控的参数来,做到参数化的AI控制。我在现在的项目中,经常听到玩家的一些抱怨,什么AI太难啦,AI太简单啦什么的,而且有时游戏测试人员也需要一种“傻AI”模式来帮助他们测试,所以,如果我们能在实现AI初期,就把一些能够控制AI难度的因素定义出来,那也可以更好的来使我们的AI行为更可控,何乐而不为呢?

————————————————————————
作者:Finney
Blog:AI分享站(http://www.aisharing.com/)
Email:finneytang@gmail.com
本文欢迎转载和引用,请保留本说明并注明出处
————————————————————————

Read More

前段日子,和以前大学的同窗们聚会,很多人都是好久未见,有些人也是难得从国外回来一次,大家相聊甚欢,说说近况如何云云。

正巧,有个人现在在美国某著名大学读PHD,而且主要研究的是人工智能相关,那我作为一个AI程序员,对她研究的东西自然也就要打听一番。聊了一点之后,发现学术的东西还真是学术,和我现在在做的非常的不同,不仅偏向于理论,而且门类非常的窄。虽然,这也是在我的预料之中的,虽然,我在游戏行业里对AI技术摸爬滚打了几年,但还是不得不感叹:此AI非彼AI。

游戏中用到的AI技术,不管从架构还是实现上,较之于学术上的AI研究来说,都是相当简单的东西了。当然,不是说游戏AI不追求前沿,这也是有原因的,首先游戏AI技术的发展,和其他游戏技术一样,也是依赖于硬件的发展,在红白机时代,受硬件所限很难处理复杂的AI逻辑,所以看以前的游戏,AI大多是简单的if-else逻辑,或者简单的脚本化的逻辑为主。随着游戏硬件的处理速度越来越快,AI才可以越来越多的用到一些稍稍复杂或者高级的技术。

其次就是游戏对于处理速度的要求是相当之追求的,如果一个60帧的游戏,那一帧的处理时间就是16毫秒左右,在这之中分给AI的时间一般也就是6~8毫秒(视具体要求和如何划分AI而定)。所以游戏的AI很难选用一些,虽然很强劲,但很费时的算法,而我们知道,学术上的一些人工智能的研究,它的一些算法是很费时间的,这也就导致了很多学术上的研究并不能直接给游戏AI所用。

还有,就是可控性和灵活性。人工智能的极致就是极度的拟真,让人感觉不出这个是由程序算出来的结果,对于学术研究来说,这个是他们所最求的目标,但游戏的AI不同,拟真只是一个方面,游戏的AI是为游戏服务的,拥有一个拟真的AI的游戏,并不一定是一个好玩的游戏。所以有时,游戏的AI会作假,会不断的根据设计的要求调整,所以,游戏AI技术一般是注重于模块化的,灵活的架构,而不是拟真的算法。就拿神经网络来说,20世纪40年代就提出了神经网络的基本概念和雏形,做为一种学习型的算法和结构,可以说非常吸引人。但直到现在,我还是很少看到游戏中用神经网络作为主要的AI架构的,归根结底,就是它并不符合我提到的可控性和灵活性的要求。作为一个游戏的AI架构来说,太难以掌控和调式了。在游戏中,我所看到的一些运用到神经网络的地方,还是在一些语音识别的处理上。当然,可能以后会有更多的发展和运用,但就我现在的感觉来说,游戏AI还是需要具备可控性和灵活性的特点。

当然,不少游戏AI技术,也是取自于从学术研究。比如现在很多游戏用到的HTN(Hierarchical task network),中文翻译应该叫“层次化的任务网络”,就是一种实时的做计划(Plan)的系统,类似的学术研究其实从20世纪70年代就开始了,现在经过各种发展,慢慢的也应用到了游戏中了,而且不管从性能,还是最后的效果来看,还是很不错的。随便说一句,类Planner的AI系统,这也是我将来会重点学习和研究的地方。

游戏AI和游戏中的3D技术很不一样,3D技术经常是能把一些最新的研究带入进来,呈现出极其真实的画面,但游戏AI,就像我前面所说的那样,一方面要考虑的计算量的问题,更重要的是,它是为游戏服务的,所以好的游戏AI可能被学院派所不屑(因为并没有艰深的理论和算法),但它确实常常能表现出极佳的游戏性,这不是正是我们做游戏的人来说,最追求的吗? :)

所以,此AI非彼AI,不过多接触和了解一些前沿的AI研究,对于拓宽思路还是很有益的,最后,推荐一本书,《人工智能的未来》,记得当初读的时候,是通宵读完的,而且兴奋的满脑子都是里面的字句。真是非常有意思的书,我想,大家看完也会有种豁然和不一样的感觉。

————————————————————————
作者:Finney
Blog:AI分享站(http://www.aisharing.com/)
Email:finneytang@gmail.com
本文欢迎转载和引用,请保留本说明并注明出处
————————————————————————

Read More