呆呆星人 发表于 2011-6-24 19:11:44

初级游戏AI设计(ZT)

本帖最后由 呆呆星人 于 2011-6-24 19:15 编辑


(一)AI的定义
首先我们需要明白AI是什么,AI全称是ActificialIntelligence人工智能.其实这一词汇并非为游戏制作而产生,对于它的研究是广而且深的,它包含着机器视觉到专家系统等一大系列,当然我们没必要去细细了解它,我们仅仅需要了解的就是它对游戏制作有关的着一部分.
在前面的帖子中,我们已经知道游戏规则分为三大部分,规则对象,规则事件和相应规则.而我们所述说的对象主要是玩家控制的角色,当然非控制角色也有着自己的规则和事件,这时就需要我们赋予它们以类似于人类的智能.所以我们可以简化为一句话:让游戏中的NPC获得分析,判断的能力,并进行相应行为的设计,我们称之为游戏AI设计.

(二)图灵系统
这个知识其实多少有些多余,大家可以做为一种附加了解来看看.未必对我们游戏制作有什么支持和影响.
1950年,英国数学家A.W.Turing发表了一份<计算机和智能>的论坛,开辟了现代人工智能的篇幅,而之后,计算机界进行人工智能测试时均以"图灵系统"做为一台计算机是否拥有同等级智能的衡量标准
判断一台计算机是否满足图灵测试系统,需要具备以下几方面能力:
(1)自然语言处理能力:可以以某种语言进行通讯
(2)知识表示:在询问之前或询问过程中存储信息
(3)自动推理:根据存储的信息回答问题并得到新的结论
(4)机器学习:适应新的环境并发现或增加新的模式.
而实际上,人工智能领域的专家一直在根据这几条标准进行着相关研究,日本和美国现阶段在这一领域比较先进,更多的东西大家可以自行网上查阅,不再赘述.

(三)游戏中AI设计的目的
首先我们可以看一个GDC(Game Development Conference)上对游戏业界中AI技术的调查
年份游戏公司中拥有专门负责AI小组的公司百分比游戏中用于AI运算的CPU资源
199724%                                     5%
199846%                                     10%
200080%                                     25%
从中可见,游戏中AI发展十分迅猛,游戏的AI更加受到各个游戏制作公司的重视.而它为什么这么受到亲睐和重视呢?AI对游戏起到了什么作用呢?

1:增加玩家的挑战性
在许多以前的老游戏中,大家可以发现其中并没有很多的AI痕迹.例如<超级玛丽>吧,里面的怪物出现种类,顺序,行走方式丝毫没有受到玩家的行为改变而做出相应的改变,大家若是能花一定的时间去熟悉这款游戏,了解了其中的怪物的出现点,出现时间,游戏将很容易通关.(当然游戏设计者为避免这样的情况,设计了极其精巧的地图来弥补AI的不足).而现在很多游戏中,敌人NPC并非一成不变的按照已定的路线进行移动,他们根据玩家的行为做出相应的判断并且行动,在更大的范围内他们拥有着一定的"自主性".例如CS中的NPC.
对玩家来说,对付复杂AI的敌人需要更高的技巧,挑战性有一定程度的增加.

2:创造更真实的虚拟世界
不清楚大家是否玩过原版的CS,其实原本CS中的NPC还是比较愚蠢的,他们只会走相对固定的路线,对突发事件的反应能力也相对较差,通常只要我们在背后游戏了某一NPC,即使你枪法较差,它们也很难有存活的机会,或许,它们根本就不会回头.而经过一系列的发展修正后,现在CS中MPC不再那么好对付了,他们在背后受到攻击后,会很快时间内做出回头攻击的行为,甚至还会"说话"发出信息告诉其他NPC请求援军,这更类似于玩家的行为.
我们在翻以前的游戏时或许能想起某些游戏中,NPC角色会被卡在一块石头或树木前,傻傻的撞着树走,而不会饶个圈子走过去,这将使玩家看低这款游戏,"太假了,无聊"我们可能会发出这样的感叹而宣告这款游戏的卸载.在现在游戏则很少见到这种情况,多种"寻路法"的计算已是游戏程序员们最基本的一种要求.

3:增加游戏的可玩性
为什么CS,魔兽争霸等游戏,人们更喜欢上游戏平台,战网与人对战,因为与人对战有更多的风格,有更多的不可预料性,玩家在追求这种未知的结果.如果一部电影在开始时我们就已知其中结局,我们对它的热情就会丧失,我们游戏也是一样的.
使NPC更加具有AI,更模拟人类的思维,行为,可以使玩家拥有更多的不可预料性,给玩家一种惊奇感,新鲜感.而实际上我们的做法是给NPC的一定的AI套路选择,例如:根据自身HP的多少,来进行"勇猛直前,边战边退,逃命要紧"等各类的AI算法的选择,将使玩家无法准确的推测NPC的行动,可玩性得到了发挥.

4:辅助其他功能.
举个例子:假若我们玩一款游戏,控制角色进入了一个城市,而发现这里的敌人和其他地方的敌人AI截然不同,他们即使HP很少也会努力冲锋攻击着玩家,我们玩家会产生一种疑问,到底是什么驱使他们如此疯狂?这容易以另一种手法来激发出我们的好奇心,之后再以其他信息来告诉玩家这个村子之前遭受过外族攻击屠戮,所以人们都变的仇视侵略,勇于牺牲等,我们玩家也更加容易接受.AI设计间接的对剧情做出了介绍.
又如<三国志>系列,人物分为勇猛,果断,冷静等特性,在平时,这将影响他们的忠诚度变化,在战斗时将影响它们自动战斗的风格,当然也根据他们的AI不同,玩家进行某种举措时,武将也将给予不同的反映,客观上又体现了角色的特性.


(四)AI设计的类型
1:FSM(Finite State Machine)有限状态机.这是最简单也最古老的AI技术,如果懂得程序的人员,可以将其简单的理解为一套if,else或者 switch,case构成的条件判断.
我这里依旧拿原先的例子来说:
例:角色种类:熊类
case1:当与玩家距离50Pixel范围内,警戒(警戒当然是种状态,属于行为规则)
case2:当与玩家距离10Pixel范围内,主动攻击最近者
case3:当受到攻击,立即攻击攻击者
case4:攻击过程中,优先攻击对方队伍中最少HP人员
case5:当攻击目标消失或死亡,则攻击10Pixel范围内最近者

case6:当与攻击目标距离10Pixel内,追随攻击
case7:当与攻击目标距离10Pixel外,警戒
case8:当与攻击目标距离50Pixel外,返回初始点,在一定范围内随机移动
这可以说是比较典型的FSM设计,无论玩家做出什么行为,都有一套AI规则进行判断和行为,而且,仅仅是一套.不会有一种行为对应两套规则的可能.当然,这样即使加入更多的判断可能,我们也很容易觉得单调,因为确定性太强了,这就需要我们更多的引入随机性,即我们下面说的

2:FuSM(Fuzzy State Machine)模糊状态机.对于它的名词解释或许会很复杂饶口,而我们没必要去关系那些,我们可以最简单的理解其真意:就是在FSM中加入随机特性.
随机特性很早就在D&D中有过体现,在原先的帖子中有朋友评论说我举例不当,D&D不仅仅只有一个世界设定,我想他说的是正确的,D&D的最大特色还有一个就是骰子系统,这个系统我更愿意说成是随机系统.在FSM中加入随机系统,将减少了其规范性,而加大了游戏的不确定性.我这里拿上面的例子加以补充,
case2:当与玩家距离10Pixel范围内,80%几率主动攻击最近者,20%几率逃跑至玩家反方向10Pixel并警戒,
当然可以加入更多的百分比判断可能,我这里仅做出最简单的FuSM设计,
你可能觉得这并没什么,不就是多加入一个判断么?
然而扩展的来想,假如一个NPC是90%几率攻击,那么我们可以确定它为勇猛的(可设置老虎),若是60%几率逃跑,那么我们可以确定它是狡猾的或者怯懦的(可设置狐狸兔子),这样将更大程度上突出NPC的特点.
当然,我们可以再加入新的判断,当HP低于30%时,有60%几率放弃战斗逃跑,当HP低于10%时,将有90%几率放弃战斗逃跑,这也将大大加大游戏的可玩性.
细心的朋友会发现,我上面无论是逃跑还是攻击,都是给定的一个百分比,而实际上我们可以采取更模糊的方法,就是使用随机数,大部分游戏设计中都会使用一个函数"Random",无论是C++,JAVA,Ruby我们都有这个系统函数,它将生成一个一定范围内的数,我们用它来控制NPC的行为几率的话,更会有更大的不确定性.
而且使用FuSM还有一个最大的好处,它将简化我们的策划工作.
没错,是简化,我们没有必要去专门为每一类的NPC设置各自不同的规范了,我们需要做的仅仅是调整其随机数的范围,调整其百分比就可以获得性格种类迥异的NPC了.

3:可扩展性AI.这个概念可能会很大程度上引起的兴趣,而实际上它并非那么神秘,我们RM使用者实际上一直在接触着它.看这帖子的朋友里我相信有相当一部门并不懂得编程,而实际上,程序员们不关心游戏中的平衡问题,他们需要做的仅仅是实现游戏的功能,至于以如何使用百分比来控制游戏进程,他们一点也不管.那么我们开始罗嗦了这么久的FSM,FuSM是给谁看的?呵呵,是给策划看的,是给我们自己看的.是的,这样做仅仅是方便我们的调整和逻辑判断.通常,程序员们会制作一套工具来让我们进行设置和测试,而这套工具就是可扩展性AI.
当然,我们RM整个工具,我们可以说是引擎,而它若拥有了关于NPC行为规定的百分比摸版的话,那么那部分就是可扩展性AI.然而就我对RM的理解来说,在不修改RGSS的原则下,我们纯靠事件来制作FuSM设计是比较困难的,更期待Ruby高手能够加入相应的支持.

4:神经元网络.它是生理学上的真实人脑神经网络的结构和功能,以及若干基本特性的某种理论抽象、简化和模拟而构成的一种信息处理系统 .从我的理解上来说,它偏靠程序方面的东西实在太多,误差反传训练算法,BP算法,RFNN都非三言两语能够说明的,我在此依旧不再赘述,有兴趣的朋友可以上网自行查找.

(五)AI流程图说明
我们是说策划文档的,当然就这方面要多说一些.
通常,我们做AI部分的设计说明时,很少象我这样使用条目型的文字说明,因为它过于浪费时间,而且条理性不足,我们更多的使用的流程图,这也是开始我要求大家尽可能的使用Visio的原因.当然,大家也可以使用Word来制作流程图,但个人认为过于复杂,不如Visio好用.
由于本人电脑中毒,Visio暂时无法使用,只能用Word制作一个简单的流程图,大家可以简单看看就好,因为时间关系,也没有慢慢处理.

关于游戏AI设计的书籍有很多,大家可以去网上查找,相信会比我讲述的详细,系统的多.我的介绍就先写到这里了.欢迎您的指正和补充.

AndyCheung 发表于 2011-6-27 15:56:02

{:3_135:}支持支持

pandalegend 发表于 2011-11-11 16:37:56

看帖回帖是一种美德{:3_139:}
页: [1]
查看完整版本: 初级游戏AI设计(ZT)