昨日登陆66RPG论坛时发现了柳柳的公告,“论坛调整中”.而今天一看,确实做不小的改动,如果各位看了柳柳的调整公告会更明白些.我对公告内容没什么更多的评价,即使有也不可能在这帖中废话,然而它对我发帖毕竟带来了一大苦恼:由于论坛更换了服务器IP,现在登陆论坛非常缓慢,而且经常出现”该页无法显示”的错误信息.而正巧我这个人不爱在发帖前保存副本,呼,祈祷好运.

昨天没有发帖继续有两个原因:1,如上所说,66RPG论坛更新中无法登陆,2:和我一起游戏制作的三位朋友因为利益关系要离开,这令我相当伤心,最后大家一起出去喝酒,而不胜酒力的我自然是酩酊大醉而归,终究没有写下.而今日时间较多,我将继续补回昨天遗漏的任务.

废话已多,切入正题.


#游戏AI设计

##AI的定义

首先我们需要明白AI是什么,AI全称是Actificial Intelligence人工智能.其实这一词汇并非为游戏制作而产生,对于它的研究是广而且深的,它包含着机器视觉到专家系统等一大系列,当然我们没必要去细细了解它,我们仅仅需要了解的就是它对游戏制作有关的着一部分.

在前面的帖子中,我们已经知道游戏规则分为三大部分,规则对象,规则事件和相应规则.而我们所述说的对象主要是玩家控制的角色,当然非控制角色也有着自己的规则和事件,这时就需要我们赋予它们以类似于人类的智能.所以我们可以简化为一句话:让游戏中的NPC获得分析,判断的能力,并进行相应行为的设计,我们称之为游戏AI设计.

##图灵系统

这个知识其实多少有些多余,大家可以做为一种附加了解来看看.未必对我们游戏制作有什么支持和影响.

1950年,英国数学家A.W.Turing发表了一份<计算机和智能>的论坛,开辟了现代人工智能的篇幅,而之后,计算机界进行人工智能测试时均以”图灵系统”做为一台计算机是否拥有同等级智能的衡量标准

判断一台计算机是否满足图灵测试系统,需要具备以下几方面能力:

  1. 自然语言处理能力: 可以以某种语言进行通讯
  2. 知识表示: 在询问之前或询问过程中存储信息
  3. 自动推理: 根据存储的信息回答问题并得到新的结论
  4. 机器学习: 适应新的环境并发现或增加新的模式.

而实际上,人工智能领域的专家一直在根据这几条标准进行着相关研究,日本和美国现阶段在这一领域比较先进,更多的东西大家可以自行网上查阅,不再赘述.

##游戏中AI设计的目的

首先我们可以看一个GDC(Game Development Conference)上对游戏业界中AI技术的调查

年份   游戏公司中拥有专门负责AI小组的公司百分比  游戏中用于AI运算的CPU资源

1997                          24%                   5%
1998                          46%                   10%
2000                          80%                   25%

从中可见,游戏中AI发展十分迅猛,游戏的AI更加受到各个游戏制作公司的重视.而它为什么这么受到亲睐和重视呢?AI对游戏起到了什么作用呢?

#####增加玩家的挑战性

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

对玩家来说,对付复杂AI的敌人需要更高的技巧,挑战性有一定程度的增加.

#####创造更真实的虚拟世界

不清楚大家是否玩过原版的CS,其实原本CS中的NPC还是比较愚蠢的,他们只会走相对固定的路线,对突发事件的反应能力也相对较差,通常只要我们在背后游戏了某一NPC,即使你枪法较差,它们也很难有存活的机会,或许,它们根本就不会回头.而经过一系列的发展修正后,现在CS中MPC不再那么好对付了,他们在背后受到攻击后,会很快时间内做出回头攻击的行为,甚至还会”说话”发出信息告诉其他NPC请求援军,这更类似于玩家的行为.

我们在翻以前的游戏时或许能想起某些游戏中,NPC角色会被卡在一块石头或树木前,傻傻的撞着树走,而不会饶个圈子走过去,这将使玩家看低这款游戏,“太假了,无聊”我们可能会发出这样的感叹而宣告这款游戏的卸载.在现在游戏则很少见到这种情况,多种”寻路法”的计算已是游戏程序员们最基本的一种要求.

#####增加游戏的可玩性

为什么CS,魔兽争霸等游戏,人们更喜欢上游戏平台,战网与人对战,因为与人对战有更多的风格,有更多的不可预料性,玩家在追求这种未知的结果.如果一部电影在开始时我们就已知其中结局,我们对它的热情就会丧失,我们游戏也是一样的.

使NPC更加具有AI,更模拟人类的思维,行为,可以使玩家拥有更多的不可预料性,给玩家一种惊奇感,新鲜感.而实际上我们的做法是给NPC的一定的AI套路选择,例如:根据自身HP的多少,来进行”勇猛直前,边战边退,逃命要紧”等各类的AI算法的选择,将使玩家无法准确的推测NPC的行动,可玩性得到了发挥.

#####辅助其他功能

举个例子:假若我们玩一款游戏,控制角色进入了一个城市,而发现这里的敌人和其他地方的敌人AI截然不同,他们即使HP很少也会努力冲锋攻击着玩家,我们玩家会产生一种疑问,到底是什么驱使他们如此疯狂?这容易以另一种手法来激发出我们的好奇心,之后再以其他信息来告诉玩家这个村子之前遭受过外族攻击屠戮,所以人们都变的仇视侵略,勇于牺牲等,我们玩家也更加容易接受.AI设计间接的对剧情做出了介绍.

又如<三国志>系列,人物分为勇猛,果断,冷静等特性,在平时,这将影响他们的忠诚度变化,在战斗时将影响它们自动战斗的风格,当然也根据他们的AI不同,玩家进行某种举措时,武将也将给予不同的反映,客观上又体现了角色的特性.

##AI设计的类型

#####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规则进行判断和行为,而且,仅仅是一套.不会有一种行为对应两套规则的可能.当然,这样即使加入更多的判断可能,我们也很容易觉得单调,因为确定性太强了,这就需要我们更多的引入随机性,即我们下面说的

#####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了.

#####可扩展性AI.

这个概念可能会很大程度上引起的兴趣,而实际上它并非那么神秘,我们RM使用者实际上一直在接触着它.看这帖子的朋友里我相信有相当一部门并不懂得编程,而实际上,程序员们不关心游戏中的平衡问题,他们需要做的仅仅是实现游戏的功能,至于以如何使用百分比来控制游戏进程,他们一点也不管.那么我们开始罗嗦了这么久的FSM,FuSM是给谁看的?呵呵,是给策划看的,是给我们自己看的.是的,这样做仅仅是方便我们的调整和逻辑判断.通常,程序员们会制作一套工具来让我们进行设置和测试,而这套工具就是可扩展性AI.

当然,我们RM整个工具,我们可以说是引擎,而它若拥有了关于NPC行为规定的百分比摸版的话,那么那部分就是可扩展性AI.然而就我对RM的理解来说,在不修改RGSS的原则下,我们纯靠事件来制作FuSM设计是比较困难的,更期待Ruby高手能够加入相应的支持.

#####神经元网络.

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

##AI流程图说明

我们是说策划文档的,当然就这方面要多说一些.

通常,我们做AI部分的设计说明时,很少象我这样使用条目型的文字说明,因为它过于浪费时间,而且条理性不足,我们更多的使用的流程图,这也是开始我要求大家尽可能的使用Visio的原因.当然,大家也可以使用Word来制作流程图,但个人认为过于复杂,不如Visio好用.

由于本人电脑中毒,Visio暂时无法使用,只能用Word制作一个简单的流程图,大家可以简单看看就好,因为时间关系,也没有慢慢处理.

例图如下:

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


最后的最后,很好奇问一句.论坛到底换了什么服务器IP?北京网通发帖接连失败三次,>_<是偶人品不好还是..