泓泰

当年星际争霸1的寻路系统为何做得如此粗糙?

admin
当年星际争霸1的寻路系统为何做得如此粗糙?-第1张-游戏相关-泓泰

咱们新一期的《星际【jì】争霸十【shí】万个为什么》又【yòu】和大【dà】家【jiā】见面啦!停【tíng】更了好多天,今天就来【lái】和大家说点不为人知【zhī】的游【yóu】戏中星【xīng】际争霸的硬核知识哈哈【hā】。

大家在玩星际争霸1的【de】时候一【yī】定有这【zhè】么一【yī】种感觉,游戏【xì】中单【dān】位的【de】AI为何【hé】会【huì】如此【cǐ】低效,总是时【shí】不时的会在【zài】原【yuán】地发呆,或【huò】者被卡在【zài】一【yī】个【gè】地方来回摩擦。如果玩过魔兽争霸3或者星际【jì】2的话就会对星际1那粗【cū】糙的单位寻路系统【tǒng】更加嗤之【zhī】以【yǐ】鼻,那【nà】么是什么样的原【yuán】因导致了【le】星际1的寻路系统如此糟【zāo】糕呢?大【dà】麦在【zài】外网挖【wā】掘出了曾经星际1的首席程序员 Patrick Wyatt的回【huí】忆录,讲述了当年星际1在开发过程【chéng】中的趣事,今天就来和大家【jiā】讲【jiǎng】讲吧【ba】~

Patrick Wyatt

不合适的游戏引擎

当时星际争霸在立项的时【shí】候仅仅是【shì】定位为一个中小【xiǎo】型的RTS游戏,说白了【le】其本【běn】质玩【wán】法就和魔兽争霸1、2基本【běn】一样。因此【cǐ】暴雪的员【yuán】工们就【jiù】决定【dìng】继续使用魔兽争霸2的【de】游【yóu】戏引擎来开【kāi】发星际争霸。

然【rán】而没【méi】想到的是,由于【yú】暗黑破坏神的【de】成功令【lìng】暴【bào】雪公【gōng】司【sī】的规模【mó】快速扩张,因此【cǐ】高层临时决定扩大星际争霸的开发规模,为游戏增添更多【duō】的新【xīn】元【yuán】素,并且还要将游【yóu】戏视角【jiǎo】改成当时最流行的等【děng】角投影视角。

可能有玩家不太【tài】清楚什么【me】是等角投【tóu】影视角,我举【jǔ】个例【lì】子大家就能了解,比如暗黑破坏神、奇迹【jì】、传奇、这种【zhǒng】游戏【xì】的视角就是等【děng】角投影视角,也【yě】就是我们国【guó】内玩家俗【sú】称的2.5D视【shì】角。

但当时【shí】星【xīng】际争霸所使用的是魔【mó】兽【shòu】争霸2的游戏引擎,这【zhè】里我还得需要先和大家说【shuō】一下【xià】魔兽争霸2的游戏引擎是【shì】如何绘制【zhì】和优化地图的。魔兽争霸2是一种俯视视【shì】角的游【yóu】戏,游戏引擎会将整个【gè】地【dì】图【tú】分成均【jun1】匀密布的32*32像素的小方【fāng】块,然后这【zhè】些小方块又会【huì】被分【fèn】成16个8*8像素的更小的【de】方块。

读【dú】图的时候,把地【dì】图分成若【ruò】干【gàn】个相【xiàng】对较小的区域(平均每【měi】个区域大【dà】概10×10个32×32的图块【kuài】大),这些区域互【hù】相挨着,而且内部没有大个的障碍物。区域内部的寻路可以用A*算法来搞【gǎo】定,撞到障碍的几【jǐ】率很小【xiǎo】。同时在【zài】读图【tú】时系统还会【huì】创建一个高【gāo】层的地【dì】图用来储存【cún】区域间的邻接关系。区域是不【bú】规则形【xíng】状的,所以这个高层地图相当于一个【gè】节点图,而不是【shì】图块地图。区【qū】域间的【de】寻路,在高层【céng】地图【tú】上用A*算法实现。当单位移动时【shí】,对它们【men】占【zhàn】领的小方块【kuài】进行【háng】标【biāo】记,然后【hòu】用【yòng】一大堆特殊逻【luó】辑【jí】,包括各种【zhǒng】极端情况、单位行为、敌军vs友军,来遍历这些被占的小方块,这些特殊【shū】逻辑还包【bāo】括一个状【zhuàng】态机,大概有40个不同【tóng】状【zhuàng】态【tài】。

如果不太理解的话可以看看【kàn】下图,就知道将【jiāng】地图分解为【wéi】图块【kuài】是怎么【me】回事了。

后来星际争霸【bà】改成【chéng】了等角投影本来应该【gāi】用菱形的【de】图块来绘【huì】制地图会更为方【fāng】便,但是由【yóu】于星际1在【zài】开发时【shí】使【shǐ】用的是魔兽2的游戏引【yǐn】擎,再加【jiā】上发售日期将【jiāng】近,于【yú】是【shì】程【chéng】序员们就只是改【gǎi】了游戏的【de】外【wài】观却没有修改底层架构,这才导致了后来的寻路问题接踵而至【zhì】。

混乱的底层架构

首【shǒu】先为了保证寻路功【gōng】能的正常运行【háng】,因【yīn】此地图的分辨率就【jiù】必【bì】须得增加,原来【lái】只是32*32像素的格子来标记单位是否能【néng】通过,现在这些格子中【zhōng】每一个8*8像素【sù】的小【xiǎo】格【gé】子都要来进【jìn】行判定标【biāo】记【jì】。这【zhè】样系统的【de】运算量就需要足足提【tí】升16倍【bèi】,对于【yú】电脑的硬件是个不小【xiǎo】的考验【yàn】,因此当时【shí】星际1刚出的时候对于【yú】电脑配【pèi】置的要求算是比较高的!

配置要求提高【gāo】还是【shì】一方面【miàn】,另一个主要问题就【jiù】是游【yóu】戏中【zhōng】斜向的【de】地图和碍口是【shì】个巨大的麻【má】烦,因为斜着【zhe】的【de】边缘将正【zhèng】方【fāng】形小格子给切割得乱七八糟,系统需要判定这些小格子哪些能走【zǒu】哪【nǎ】些不能【néng】走,而这些工作全都得交给【gěi】程序【xù】员来进行,也因此星际争霸【bà】1的【de】地图编辑器极其【qí】难写,用户也极难使【shǐ】用【yòng】。

因此大【dà】家一定发现了,星【xīng】际1的第三方【fāng】地图数【shù】量【liàng】稀少【shǎo】,而且bug非常多。反观魔兽争【zhēng】霸3他强【qiáng】大的【de】地【dì】图编辑【jí】器【qì】诞生了非常多经典的游戏,比如dota,澄海3c这些超级经典的RPG地图【tú】。

所以玩家在【zài】玩【wán】游【yóu】戏的时候有【yǒu】时候会发现,如果是一队龙骑士在通【tōng】过一些比较【jiào】狭小的【de】路口时【shí】就会【huì】发【fā】生超级大堵车。你在前线【xiàn】正打得火热呢【ne】,回过头来【lái】可能就【jiù】会突然发现七八个龙【lóng】骑士正【zhèng】堵【dǔ】在一【yī】个路【lù】口【kǒu】下不来,所以【yǐ】这时【shí】候就需要玩家手动去一个一个操作这些龙骑士让他们按顺序走下来。

除了这些问题以外【wài】还有【yǒu】一个东西一【yī】直困【kùn】扰【rǎo】了暴雪的程序员【yuán】们好久【jiǔ】,就是农民采矿时的拥堵。星际中【zhōng】每一个单【dān】位都是有碰【pèng】撞体积【jī】的【de】,当十几个农民【mín】在一起采矿【kuàng】时就难【nán】免会发生碰撞,然后【hòu】慢慢的就会挤成一团动弹不得。这个问题直到游戏发【fā】售【shòu】都没有【yǒu】被【bèi】解决,最终还是【shì】用【yòng】了简单粗暴的方式取消农民在采【cǎi】矿时的碰撞体积,才终于【yú】能让【ràng】采矿工作【zuò】平稳运行。

有【yǒu】趣的是【shì】,我们现在了解【jiě】到的【de】星【xīng】际争霸中的这些【xiē】程序BUG却成为【wéi】了星际争霸【bà】这款游戏中【zhōng】的闪【shǎn】光点。比如这些智障的寻【xún】路功能【néng】却成为了区分高手和普通玩家的分水岭,还【hái】有【yǒu】那单位硕【shuò】大【dà】无比的碰撞体积,却增加【jiā】了【le】单位的战场存活时间,提高了游戏的观赏【shǎng】性。

所以说【shuō】后来一直有人认为星【xīng】际争霸1的观赏【shǎng】性【xìng】和游戏性要【yào】远【yuǎn】高【gāo】于星际争霸【bà】2,这其中的主【zhǔ】要原因【yīn】还是【shì】在【zài】于【yú】,星际1的操作几乎没有上限,操作实力【lì】强的选手就【jiù】是可以碾压操作比他弱的人。但到了星际2,由于采用了动态【tài】寻路的方【fāng】式,使得【dé】游戏【xì】中的单位经常容易出现聚团的现象,往往一个AOE打中【zhōng】了,这场游戏就已经【jīng】宣告结束【shù】。

因此我们会发现,在观赏星际2的【de】职【zhí】业比赛时,往往双方部队一碰,10秒内就能决出胜负,给观【guān】众【zhòng】的观赏体验并不是很好。而星际【jì】1中一场战斗【dòu】可能【néng】会发生【shēng】数分钟的拉【lā】扯,战斗【dòu】,在拉扯的【de】局势,其激烈程【chéng】度要远【yuǎn】胜星【xīng】际【jì】2。

不【bú】过呢,毕竟时代是在进步的,星际2相对来【lái】说对于绝大多数【shù】玩【wán】家【jiā】更为友好,他也首次出现了无上限【xiàn】编【biān】队的【de】系统,还有各种人【rén】性化以及更【gèng】加智【zhì】能【néng】的AI的确是当之无愧【kuì】21世纪最好【hǎo】的RTS游戏。

好啦【lā】,今【jīn】天【tiān】的【de】故事就说到这了,如果喜【xǐ】欢大麦的星【xīng】际小故事的话可以点一波关注【zhù】点个赞哟~

标签: #星际争霸地图编辑器中文版