《三国无双》 这个系列是我的机器上仅次于WE的用来和同学同乐的游戏。游戏越来越雷同,名目繁多的衍生作品也越来越多。虽然有点小小的失望这个系列后来的进化程度,但我最后还是买一个巨大的限定盒回来收藏。 不过之所以要重点说他,还是因为这个游戏引发的我对是游戏机处理视野范围之外的AI单位的方式的思考。 这个问题起源于,怎么才能避免自己在前方杀人时主将莫名其妙的死掉.天天抢我游戏机的同学问我,我也没有认真注意过这回事情,我就随口说了一句你快骑马回去救就是了.这一来又给他们带来了2天的Unlock马的快乐,可随后他们又来告诉我,那些死掉的孙坚啊刘备啊曹操啊,每次去救都是满血,而且你看着他们,根本不会马上被击败,就是人一离开就被击破了.
难道玩家是主将的白日梦对象,精神动力?一会儿看不见就不行了? 我答应去找点功略,解释一下. 答案让我很是不爽,电脑在背后玩猫腻.
我当时首先就想到了3D游戏的画面问题.游戏机上定镜头的3D游戏画面普遍好过全自由旋转镜头的3D游戏.所谓大场面难描绘,机能有限.你控制主人公在一个房间里面活动,你通过电视看到了只是面前的一部分,如果正好面前有个大书架,那后面的一个宝箱你就看不到了,你背后可能有一个巨大的金鱼缸,很费特效的那种,什么顶点着色,环境贴图,可惜你也看不到.问题是 CPU/GPU能看到这些东西么?我猜能,大多数的3D引擎一定是在计算当前活动空间内每一个对象的情况,最后加上镜头现实其中一部分.所以你才能用R3来控制视角.但这么一来多边形都被消耗到没有实际用处的对象上去了,在你看来,每时每刻能看到的画面都没有用上足够的多边形.而定镜头的游戏则可以把钢用在刀刃上,你看到的,就是机器能算出来的全部了.但这么一来,探索就显得比较假,你永远不会知道对面那个大石头后面是不是有草药,因为游戏世界里面根本没有"大石头后面"这个概念.是不是有个"隐面消除"技术,能部分的解决这个问题,z轴缓冲计算后,只渲染最靠前的,也就是说呢,无论定不定镜头,在你看不到的地方,电脑多多少少在打马虎眼,程度不同而以,好在不会对游戏效果产生明显的影响.Doom3你走路到不同地方,随着你面对的场景不同,帧数明显在变化,看来程序没有认认真真算完每一个角落,而是看多少算多少,我一头冲到一个最黑暗的角落,屏幕一片漆黑,帧数狂高,结果我截图show给同学看,我的机器可以很流畅的玩这个游戏,没人信,因为画面上除了帧数那几个字就是黑的一片.看来这个程序挺聪明的,游戏世界其实很虚无,只有我们在的地方,它才存在,离我们一定距离之外,什么都没有.
那AI呢?三国无双一个地图有上千人在打架,你当然只能看见面前几十个而以,连小地图都看不全,因为还有你背后的.你面前的小兵们都在卖力的一刀一刀的砍,问题是,其它地方的小兵在干吗?你看不见的时候,他们在打么?
他们都坐下来,开始玩豪斯,决定谁输了牌,谁就和气的退场.
事实上KOEI就是这么编游戏的,残酷的事实:(
任何不在你视线内的Unit,都是在根据各自的士气值做计算,每秒死几个兵,将军损几滴血.要知道,主将真的打起来是很强的,所以你每次去救的时候,看着他们,CPU就开始认认真真的计算主将的每一个动作,砍小兵,补血,发无双......敌人的卒子也只能按照自己的实力,慢慢啃.这样你会发现更本没有救援的必要,完蛋的一定是敌人.但是,你一旦离开,这场战斗在CPU那里就不存在了,大家握手言和,开始比士气,不巧的是,你的主将只有2颗星,对手6颗,完了,一切都完了,曹操刘备都是有劲用不上,只能看着电脑用一个极其简单的算式,一步一步的算出自己死亡的时间.所以这个世界真的很小,小到只有你视线所及的一块地皮.所有之外的,都是在按照另一个规则运作.对于三国无双,这就是一个我个人感觉非常假的AI方式.简化是必要的,但这个简化产生了和正常规则不相符合的结果,所以每次你去救主将都是很迷惑.网上还提到了这样的一个证明:敌军的伏兵从某个地方赶来,不巧的是你记得那里应该放满了木刺栅栏,你一定很气愤,他们是怎么飞过来的!当然你可以小小的处罚他们一下:走到那里,选准时机,当敌将"飞"到栅栏上的那一刻,你走一步,把敌将移入你的视线范围:看吧,报应,敌将大叫一声从马上掉了下来,吊在了木刺上,卡住了:)你会不会疑惑,刚才你不很牛的么?怎么我一看就不行了?原因很简单,所有视线之外的单位,CPU都不计算他们的碰撞,一旦你看到了,CPU就老老实实的算了,上述场景又是一个非常规的场景,CPU从来没面对过,于是,Bug出现了.想象一下在你跋山涉水,翻山越岭的时候,屏幕以外的战场都发生了什么,你的同伴和敌人根本没有战争,都在静坐,等着CPU宣判,你过去看看,他们才站起来打打做样子,你一走,他们又躺下玩了.而如果真的他们想换个地方,他们都走直线,飞过水,穿过山,无视一切地形.我在南蛮那关,每次我把姜唯引出来,打下马,他跑回去,居然又骑马过来了?!
我再打,他跑,又骑马回来了??,天理啊~~~就这样我的面前不一会堆满了马.但,很明显,他不可能在你看着他的情况下,变出一个马来,要变,也得躲着干.这同样的,因为,一旦主将移出视线,CPU就忘了发生的事情,又初始化了,这真是黑箱操作啊,太黑了.也许你可以原谅姜唯,因为毕竟可以理解他也许带了一群马来战斗,但要是你看到被打下赤兔的吕布跑到你视线之外转一圈又骑了一个赤兔回来,你是不是要晕倒了?同样的还有你的护卫兵,你辛辛苦苦甩了他们半个地图,站定转头一看,他们怎么从另一个方向也跑过来了?比我还快!这又是个电脑的猫腻,护卫兵在视线之外也遵守那一套简化的规则,无视碰撞,走直线(注意,根本不是最近的实际存在路线).事实上你也许想可不可以用第三者观察一下这个奇迹?好在KOEI没有如此的笨,你开启2P游戏,跟着1P的护卫兵,他们就不会再放肆的穿山而过了,这下,你可以看到他们老老实实的走最近的路线,也许还会在什么角落里面卡壳.电脑在你看不见的地方,不光简化又简化图形的计算,连NPC行动的规则都会发生质的变化。
那是我第一次去细细的思考游戏背后的机制。我以为我疯了,可是小心翼翼地说出来之后却发现论坛上的朋友们还是蛮喜欢的,从此我多了这个坏习惯。 |
|