Unity AI Game Programming – Second Edition Review(Unity AI游戏编程-第二版)

发表于2017-03-16
评论0 3.7k浏览

在前一阵子的 FREE LEARNING – FREE TECHNOLOGY EBOOKS 活动中,免费取得了这本 Unity AI Game Programming – Second Edition,于是花费了约四天将这本书给吸收完毕,透过这次的文章,纪录自己对于这本书的理解、分析及评论。

 

Chapter1 – The Basics of AI in Games

这个章节简单介绍了 AI 在游戏中的定位为何,从有限状态机、感测器、路径移动、寻路演算、Navigation、群聚效应、行为树到最后的模糊逻辑都初步介绍了一遍。


 


Chapter2 – Finite State Machines and You


书中这边所指的 Finite State Machine 是 Unity 所内建的 Mecanim Animation System,藉由 Mecanim 系统去设定 Parameters、States、Transition…等,再配合继承了 StateMachineBehaviour 的脚本就可以详细编辑每一个状态的细节变化以及传递条件。


与一般提到的有限状态机 Finite State Machine 差异是,Mecanim 系统不只包含了状态机的逻辑处理部分还附带处理了 Unity 动画部分,并结合可视化编辑呈现出状态转移的条件及状态图,让非程式人员也能够享受到编辑状态机的过程。

 

Chapter3 – Implementing Sensors


感测器在人工智慧中是应用范围相当广泛的一个项目,一般提到的感知都会第一时间联想到人的五官,其中包含了听觉、视觉、触觉、嗅觉、味觉,这些感觉都可以经过感测器实作来加以实现,像是视觉感测可以透过基本的视线范围去进行射线侦测。但是这个章节中却只实作了透过碰撞器去侦测物体是否在感测器中 OnTriggerEnter 的应用,并没有针对某种感觉来做相对应感测器的实作,这部分算是相对可惜。


 


Chapter4 – Finding Your Way


这本书中篇幅最大的一个章节,主要在围绕在路径跟随、简易障碍物避免、寻路演算以及 Unity Navigation 的实作。


值得一提的是障碍物避免的处理方式,书中先透过射线来判断移动物体是否会碰撞障碍物,如果碰撞成立就会在移动物体上附加一个额外的移动向量使移动物体产生移动偏移,透过这个方式就可以很简单的使移动物体绕过障碍物,但是会在某些状况下产生 Bug ,而书中也没有提到这一部份。


寻路演算部分,完整的介绍了 A* 演算法的原理、实作过程以及最后实作成果,另外也可以搭配我自己撰写的 A* 演算法系列文一起服用,可以更加理解 A* 寻路演算法的完整理论。


Navigation 则是 Unity 所提供的寻路功能,在这个段落中完整介绍了 Navigation 的设定方式,包含了 Baking、NavMeshAgent 以及 Mesh Links。

 

Chapter5 – Flocks and Crowds


说明了群聚效应的三个核心概念,分离、对齐以及凝聚。

分离:透过与其他物件保持一定距离,来避免物件群之间的碰撞。

对齐:与其他物件保持相同的移动方向及速度。

凝聚:与物件群中心保持一定距离。


透过这三个核心概念,就能够模拟出群体移动的行为,也可以常常在 RTS 类游戏中看到这个效果的运用,像是红色警戒、世纪帝国、星海争霸…等

经典作品。

 

Chapter6 – Behaviour Trees


这个章节说明并实作了行为树 Behaviour Tree

的运作方式,而行为树的核心概念为节点(Node),搭配节点状态以及执行条件,就可以透过不同的行为树状分支逻辑组合出自己想要的 AI 心智图。


一般情况下,会将节点状态分为:成功(Success)、失败(Failure)及执行中(Running),而节点执行条件则分为:序列(Sequence)及选择(Selector)。


序列:只要有一子节点状态失败,则节点状态失败。

选择:只要有一子节点状态成功,则节点状态成功。


而在接触游戏人工智慧 AI 时,最常听到的三个名词包含了,有限状态机(FSM)、分层有限状态机(HFSM) 以及行为树(Behaviour Tree),这三种名词都是用来处理游戏 AI 的运作逻辑。但书中并没有介绍到分层状态机,所以这边先跳过分层状态机,将有限状态机与行为树做一个简单的比较。


有限状态机,由複数状态所组合成的运作机制,透过事件触发来引起状态之间的切换,是一种事件触发型 AI。

行为树,由树状图的根做为起点,由各个节点中的节点状态以及节点执行条件来进行逻辑检测,判断是否要往分支继续执行,是一种轮询型 AI。


 


Chapter7 – Using Fuzzy Logic to Make Your AI Seem Alive


模糊逻辑 Fuzzy Logic,一般我们在处理逻辑问题时,往往是非零即一,在这种状况之下会导致 AI 的行为相当容易被玩家看穿,这时候就可以运用模糊逻辑,透过模糊逻辑的应用,就可以打造出更活灵活现的 NPC 及怪物。而书中灵活的运用了一个名为 Bob 的巫师角色来说明模糊逻辑的实际运用情况,藉由模糊逻辑来判断巫师目前的生命值情况,但这个章节也只是简单的介绍了模糊逻辑的概念以及基本的实作,并没有针对这个议题做更深入的研究。

 

Chapter8 – How It All Comes Together


最后的章节结合了前面所学的东西,做出了一个可玩游戏,算是将书中所提到一部分要素做了结合,这部分需要特别研究的议题,就是一个很简单的概念应用后衍生出的小游戏。


 


结语


整体来说,这本 Unity AI Game Programming 算是一本中规中矩的 Unity 相关书籍,透过循序渐进的介绍及实作,让读者可以获取关于人工智慧的相关知识,不过却往往在一些关键的部分点到为止,没有做更进一步的议题探讨、说明及应用,这部分的表现就没这麽理想。


对于想要专研人工智慧的开发者来说,这本书可以归类成有空閒时间在快速阅读的书,但是对于在 Unity 上已经有一定的使用经验且对 AI 人工智慧有兴趣想要尝试入门的开发者,还是推荐抽空阅读,可以一次性的获得人工智慧开发上所需要累积的知识。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引