游戏开发中的人工智能(一):游戏人工智能简介
本系列文章对《游戏开发中的人工智能》David M.Bourg / Glenn Seemann 一书进行解读。这本书谈了很多游戏软件 AI 的主题,内容深度适合初涉开发人员。所以,无论你是游戏开发新手还是资深游戏开发人员,如果需要尽快掌握 AI 技术,比如有限状态机、模糊逻辑、神经网络以及其他议题,这本书都非常适合。针对游戏软件 AI 的初学者,假定你没有任何 AI 背景知识,但是假定你知道怎么用
本系列文章对《游戏开发中的人工智能》David M.Bourg / Glenn Seemann 一书进行解读。
这本书谈了很多游戏软件 AI 的主题,内容深度适合初涉开发人员。所以,无论你是游戏开发新手还是资深游戏开发人员,如果需要尽快掌握 AI 技术,比如有限状态机、模糊逻辑、神经网络以及其他议题,这本书都非常适合。
针对游戏软件 AI 的初学者,假定你没有任何 AI 背景知识,但是假定你知道怎么用 C/C++ 写程序,也假定你懂得基本向量数学在游戏中的应用。
章节概要:
第一章 游戏人工智能简介
定义何谓“游戏AI ”,讨论当前 AI 技术的发展,以及 AI 技术的未来。
第二章 追逐和闪躲
讨论基本的追逐和闪躲技术,以及进级的拦截技术。我们也谈及这些技术在砖块环境和连续环境中的变化。
第三章 移动模式
许多游戏中经常出现固定模式的移动,比如守卫的巡逻行为,宇宙飞船的降落等。开发者可以将移动模式技术应用于特定行为的程序的编写中。
第四章 群聚
群居方法是 A-life 算法的实例。 A-life 算法除了可以做出效果很好的群聚行为外,也是高级群体运动的基础。
第五章 以势函数实现移动
靠势能移动在游戏 AI 程序中还算相当新颖。这个方法的最优越的地方在于可以同时处理追逐、闪躲、成群结队和避免碰撞等行为。
第六章 基本路径寻找及航点应用
游戏开发人员使用很多技术在游戏环境中寻找路径。本章要谈几种方法,包括航点应用。
第七章 A* 路径寻找方法
路径寻找算法的主力——A* 路径寻找方法。
第八章 描述式 AI 及描述引擎
程序员通常只写描述引擎,而由设计者使用工具创建内容和定义 AI。本章探讨一些开发人员把描述系统应用在游戏中的技巧,以及他们所得到的益处。
第九章 有限状态机
有限状态机是游戏软件 AI 的基本要素。本章探讨有限状态机的基础,以及如何予以实现。
第十章 模糊逻辑
开发人员把模糊逻辑和有限状态机结合起来使用,甚至取代有限状态机。本章将会学到模糊逻辑为什么优于传统的逻辑技术。
第十一章 规则式 AI
技术上而言,有限状态机和模糊逻辑都落在基于规则的方法这个大伞之下。本章将谈这些方法,以及其他变化的方法。
第十二章 概率概论
游戏开发人员时常使用简单的概率,使游戏较难预测。这种简单的不可预测性让游戏开发人员可以拥有对游戏的实质性控制。本章要谈这种用途的基本概率,顺便作为更高级方法的基石。
第十三章 不确定状态下的决策:贝叶斯技术
贝叶斯技术是概率技术,本章解释如何运用,以便在游戏中做决策并适应游戏。
第十四章 神经网络
“神经网络”技术让游戏具有学习和适应的能力。事实上,从决策判断到预测玩家的行为,都可以应用。我们会详谈最广泛使用的神经网络结构。
第十五章 遗传算法
遗传算法提供游戏软件 AI 演化的可能。虽然遗传算法不是经常被应用于游戏中,但是它们在某些特定应用方面的潜力是值得令人期待的,尤其是结合其他方法使用的时候。
游戏人工智能介绍
游戏 AI 的定义相当宽广而且灵活性很大。无论采取何种手段,只要能给人以某种智能程度的“错觉”,让游戏更能令人沉迷于其中,更具有挑战性,最重要的就是要更好玩,那才能看做是游戏 AI。
定性与非定性 AI
游戏 AI 通常分成两种,定性和非定性。
定性
定性即行为或表现是特定的,而且可以预测的,没有不确定性。具体实例可以是简单的追逐算法。比如说塑造一个怪物角色,沿着 XY 坐标轴前进,往某目标点移动,直到该角色的 XY 坐标和目标点的坐标重叠。
非定性
与定性行为相反,非定位行为有某种程度的不确定性,有点不可预测(不确定到什么程度与人们对所采用的的 AI 的方法的理解的难易程度有关)。具体实例是让非玩家角色学习到适应玩家的作战战术。这样的学习能力可以利用神经网络、贝叶斯技术或遗传算法得到。
定性 AI 技术是游戏 AI 的基础。定性 AI 技术的结果是可预测的,效率高,易实现、理解、测试和调试。虽然定性方法有很多,但是预先考虑各种场景以及明确写出所有行为的重担都会落在开发者的肩上。而且定性方法无法帮助NPC 学习并进化,玩家只要认真观察一下,就可以预测出 NPC 的定性行为。我们可以这么说,使用定性行为,会限制游戏软件的“寿命”。
非定性技术可以让 NPC 自己学习,并进化出新的行为,比如说突现行为(没有明确指示而出现的行为),让玩家在玩游戏时难以预测,增加游戏可玩性。开发者也无需事先预先所有可能的场景,写下所有明确的行为。
尽管非定性技术可以增加游戏的可玩性,但是长久以来,开发者对非定性 AI 保持距离(但现在已逐渐得到改变)。由于无法预测,就很难测试和调试(因为没有办法测试玩家所有可能的行动,以确保游戏软件不会出 Bug)。而且游戏开发人员面对的是不断缩短的开发周期,使得开发者难以全部了解最新的 AI 技术。
另一因素也限制了非定性技术的发展,最近开始,开发者把他们的注意力更多的放在图画的质量上(因为玩家都喜欢美的东西)。结果为了做出更好更快的图画技术,就没有时间开发更好的游戏 AI 了。
现有的游戏 AI 技术
有限状态机(finite state machine,FSM)是到处可见的游戏 AI 技术。第九章的时候我们会详细学习这部分,有限状态机的基本概念是列举出计算机控制的角色的一连串动作或状态,再利用 if-then 条件语句检查各类情况和满足条件,再根据判断结果执行动作或更新角色状态,或者在动作和状态之间做转换。
开发者时常会在模糊状态机(fuzzy state machine)中用到模糊逻辑,让最后执行的动作难以预测,减少必须以 if-then 语句大量列举条件的重担。在有限状态机中,你可能有“if 距离值为10且健康值为100,then 攻击”这样的规则,但是模糊逻辑与此不同,它允许你用不太精确的条件设计规则。比如“if 靠近而且足够健康,then 强力攻击”。模糊状态机将在第十章时详细介绍。
在各类游戏中,非玩家角色的基本任务是必须找出有效地路径。在战争模拟游戏中,非玩家角色的军队必须能够通过各种地形,避开障碍物,抵达敌军所在地。第一人称射击游戏中的生物,必须能通过地牢或者建筑物以便和玩家相遇或逃离玩家视线。这种场景是数不胜数的。毋庸置疑,AI 开发人员会很关注路径寻找。第六章中我们会谈一般的路径寻找技巧,到了第七章才会谈重要的 A* 算法。
上述的一些技术,只是现有游戏 AI 技术的少数几种而已,其他还有以规则为主的描述性系统以及某些人工声明技术,种类繁多。人工生命系统是一种人造系统,可以展现出符合人性的行为。这些行为属于突现行为,其发展是结合各种低层次算法运作后的结果。后面我们会讨论人工生命的实例以及其他技术。
游戏 AI 的未来
游戏 AI 的下一件大事就是“学习”。游戏上市后,所有非玩家角色的行为,不再事先安排,游戏玩的越久,游戏就会更多地演化和学习,更具适应性。这样的游戏会跟玩家一起成长,玩家也难以预测游戏行为,因此能扩展游戏的生命周期。游戏会学习并演化,造成了游戏本身无法预测的特性。
“学习”与“角色行为反应”技术,属于上文提到过的非定性 AI 的范围,所以有相当大的难度。明确的说,这种非定性的“学习”AI 技术,要花更长的时间开发和测试。再者,要了解 AI 究竟会做什么也更加困难,这也使得调试变得更困难。这些因素是“学习”AI 技术得以广泛应用的巨大障碍。不过,这一切都在改变之中。
几个主流游戏都用了非定性 AI 技术,比如“Creatures”、“Black & White”、“Battlecruiser 3000AD”、“Dirt Track Racing”、“Fields of Battle”以及“Heavy Gear”。这些游戏的成功,重新点燃了人们对“学习”AI 技术的兴趣,诸如决策树、神经网络、遗传算法以及概率方法。
这些成功的游戏软件,运用非定性方法时也搭配使用了传统的定性方法,只要在最适合并且需要的地方才使用非定性方法。神经网络不是仙丹,无法解决游戏软件中所有的 AI 问题,然而你可以在混合的 AI 系统中,解决特定的 AI 任务,借此获得令人印象深刻的结果。这样的话,你可以把 AI 中不可预测而且难以开发、调试和测试的部分隔离出来,同时又能让你的 AI 系统的大部分,都保持传统的形式。
更多推荐
所有评论(0)