咱們新一期的《星際爭霸十萬個為什麼》又和大家見面啦!停更了好多天,今天就來和大家說點不為人知的遊戲中星際爭霸的硬核知識哈哈。

大家在玩星際爭霸1的時候一定有這麼一種感覺,遊戲中單位的AI為何會如此低效,總是時不時的會在原地發呆,或者被卡在一個地方來回摩擦。如果玩過魔獸爭霸3或者星際2的話就會對星際1那粗糙的單位尋路系統更加嗤之以鼻,那麼是什麼樣的原因導致了星際1的尋路系統如此糟糕呢?大麥在外網挖掘出了曾經星際1的首席程序員 Patrick Wyatt的回憶錄,講述了當年星際1在開發過程中的趣事,今天就來和大家講講吧~

當年星際爭霸1的尋路系統為何做得如此粗糙?

Patrick Wyatt


不合適的遊戲引擎

當時星際爭霸在立項的時候僅僅是定位為一箇中小型的RTS遊戲,說白了其本質玩法就和魔獸爭霸1、2基本一樣。因此暴雪的員工們就決定繼續使用魔獸爭霸2的遊戲引擎來開發星際爭霸。

當年星際爭霸1的尋路系統為何做得如此粗糙?

然而沒想到的是,由於暗黑破壞神的成功令暴雪公司的規模快速擴張,因此高層臨時決定擴大星際爭霸的開發規模,為遊戲增添更多的新元素,並且還要將遊戲視角改成當時最流行的等角投影視角。

可能有玩家不太清楚什麼是等角投影視角,我舉個例子大家就能瞭解,比如暗黑破壞神、奇蹟、傳奇、這種遊戲的視角就是等角投影視角,也就是我們國內玩家俗稱的2.5D視角。

但當時星際爭霸所使用的是魔獸爭霸2的遊戲引擎,這裡我還得需要先和大家說一下魔獸爭霸2的遊戲引擎是如何繪製和優化地圖的。魔獸爭霸2是一種俯視視角的遊戲,遊戲引擎會將整個地圖分成均勻密佈的32*32像素的小方塊,然後這些小方塊又會被分成16個8*8像素的更小的方塊。

當年星際爭霸1的尋路系統為何做得如此粗糙?

讀圖的時候,把地圖分成若干個相對較小的區域(平均每個區域大概10×10個32×32的圖塊大),這些區域互相挨著,而且內部沒有大個的障礙物。區域內部的尋路可以用A*算法來搞定,撞到障礙的機率很小。同時在讀圖時系統還會創建一個高層的地圖用來儲存區域間的鄰接關係。區域是不規則形狀的,所以這個高層地圖相當於一個節點圖,而不是圖塊地圖。區域間的尋路,在高層地圖上用A*算法實現。當單位移動時,對它們佔領的小方塊進行標記,然後用一大堆特殊邏輯,包括各種極端情況、單位行為、敵軍vs友軍,來遍歷這些被佔的小方塊,這些特殊邏輯還包括一個狀態機,大概有40個不同狀態。

如果不太理解的話可以看看下圖,就知道將地圖分解為圖塊是怎麼回事了。

當年星際爭霸1的尋路系統為何做得如此粗糙?

後來星際爭霸改成了等角投影本來應該用菱形的圖塊來繪製地圖會更為方便,但是由於星際1在開發時使用的是魔獸2的遊戲引擎,再加上發售日期將近,於是程序員們就只是改了遊戲的外觀卻沒有修改底層架構,這才導致了後來的尋路問題接踵而至。

混亂的底層架構

首先為了保證尋路功能的正常運行,因此地圖的分辨率就必須得增加,原來只是32*32像素的格子來標記單位是否能通過,現在這些格子中每一個8*8像素的小格子都要來進行判定標記。這樣系統的運算量就需要足足提升16倍,對於電腦的硬件是個不小的考驗,因此當時星際1剛出的時候對於電腦配置的要求算是比較高的!

配置要求提高還是一方面,另一個主要問題就是遊戲中斜向的地圖和礙口是個巨大的麻煩,因為斜著的邊緣將正方形小格子給切割得亂七八糟,系統需要判定這些小格子哪些能走哪些不能走,而這些工作全都得交給程序員來進行,也因此星際爭霸1的地圖編輯器極其難寫,用戶也極難使用。

當年星際爭霸1的尋路系統為何做得如此粗糙?

因此大家一定發現了,星際1的第三方地圖數量稀少,而且bug非常多。反觀魔獸爭霸3他強大的地圖編輯器誕生了非常多經典的遊戲,比如dota,澄海3c這些超級經典的RPG地圖。

所以玩家在玩遊戲的時候有時候會發現,如果是一隊龍騎士在通過一些比較狹小的路口時就會發生超級大堵車。你在前線正打得火熱呢,回過頭來可能就會突然發現七八個龍騎士正堵在一個路口下不來,所以這時候就需要玩家手動去一個一個操作這些龍騎士讓他們按順序走下來。

當年星際爭霸1的尋路系統為何做得如此粗糙?

除了這些問題以外還有一個東西一直困擾了暴雪的程序員們好久,就是農民採礦時的擁堵。星際中每一個單位都是有碰撞體積的,當十幾個農民在一起採礦時就難免會發生碰撞,然後慢慢的就會擠成一團動彈不得。這個問題直到遊戲發售都沒有被解決,最終還是用了簡單粗暴的方式取消農民在採礦時的碰撞體積,才終於能讓採礦工作平穩運行。

有趣的是,我們現在瞭解到的星際爭霸中的這些程序BUG卻成為了星際爭霸這款遊戲中的閃光點。比如這些智障的尋路功能卻成為了區分高手和普通玩家的分水嶺,還有那單位碩大無比的碰撞體積,卻增加了單位的戰場存活時間,提高了遊戲的觀賞性。

當年星際爭霸1的尋路系統為何做得如此粗糙?

所以說後來一直有人認為星際爭霸1的觀賞性和遊戲性要遠高於星際爭霸2,這其中的主要原因還是在於,星際1的操作幾乎沒有上限,操作實力強的選手就是可以碾壓操作比他弱的人。但到了星際2,由於採用了動態尋路的方式,使得遊戲中的單位經常容易出現聚團的現象,往往一個AOE打中了,這場遊戲就已經宣告結束。

因此我們會發現,在觀賞星際2的職業比賽時,往往雙方部隊一碰,10秒內就能決出勝負,給觀眾的觀賞體驗並不是很好。而星際1中一場戰鬥可能會發生數分鐘的拉扯,戰鬥,在拉扯的局勢,其激烈程度要遠勝星際2。

不過呢,畢竟時代是在進步的,星際2相對來說對於絕大多數玩家更為友好,他也首次出現了無上限編隊的系統,還有各種人性化以及更加智能的AI的確是當之無愧21世紀最好的RTS遊戲。

好啦,今天的故事就說到這了,如果喜歡大麥的星際小故事的話可以點一波關注點個贊喲~

相關推薦

推薦中...