咱們新一期的《星際争霸十萬個為什麼》又和大家見面啦!停更了好多天,今天就來和大家說點不為人知的遊戲中星際争霸的硬核知識哈哈。
大家在玩星際争霸1的時候一定有這麼一種感覺,遊戲中單位的AI為何會如此低效,總是時不時的會在原地發呆,或者被卡在一個地方來回摩擦。如果玩過魔獸争霸3或者星際2的話就會對星際1那粗糙的單位尋路系統更加嗤之以鼻,那麼是什麼樣的原因導緻了星際1的尋路系統如此糟糕呢?大麥在外網挖掘出了曾經星際1的首席程序員 Patrick Wyatt的回憶錄,講述了當年星際1在開發過程中的趣事,今天就來和大家講講吧~
Patrick Wyatt
當時星際争霸在立項的時候僅僅是定位為一個中小型的RTS遊戲,說白了其本質玩法就和魔獸争霸1、2基本一樣。因此暴雪的員工們就決定繼續使用魔獸争霸2的遊戲引擎來開發星際争霸。
然而沒想到的是,由于暗黑破壞神的成功令暴雪公司的規模快速擴張,因此高層臨時決定擴大星際争霸的開發規模,為遊戲增添更多的新元素,并且還要将遊戲視角改成當時最流行的等角投影視角。
可能有玩家不太清楚什麼是等角投影視角,我舉個例子大家就能了解,比如暗黑破壞神、奇迹、傳奇、這種遊戲的視角就是等角投影視角,也就是我們國内玩家俗稱的2.5D視角。
但當時星際争霸所使用的是魔獸争霸2的遊戲引擎,這裡我還得需要先和大家說一下魔獸争霸2的遊戲引擎是如何繪制和優化地圖的。魔獸争霸2是一種俯視視角的遊戲,遊戲引擎會将整個地圖分成均勻密布的32*32像素的小方塊,然後這些小方塊又會被分成16個8*8像素的更小的方塊。
讀圖的時候,把地圖分成若幹個相對較小的區域(平均每個區域大概10×10個32×32的圖塊大),這些區域互相挨着,而且内部沒有大個的障礙物。區域内部的尋路可以用A*算法來搞定,撞到障礙的幾率很小。同時在讀圖時系統還會創建一個高層的地圖用來儲存區域間的鄰接關系。區域是不規則形狀的,所以這個高層地圖相當于一個節點圖,而不是圖塊地圖。區域間的尋路,在高層地圖上用A*算法實現。當單位移動時,對它們占領的小方塊進行标記,然後用一大堆特殊邏輯,包括各種極端情況、單位行為、敵軍vs友軍,來遍曆這些被占的小方塊,這些特殊邏輯還包括一個狀态機,大概有40個不同狀态。
如果不太理解的話可以看看下圖,就知道将地圖分解為圖塊是怎麼回事了。
後來星際争霸改成了等角投影本來應該用菱形的圖塊來繪制地圖會更為方便,但是由于星際1在開發時使用的是魔獸2的遊戲引擎,再加上發售日期将近,于是程序員們就隻是改了遊戲的外觀卻沒有修改底層架構,這才導緻了後來的尋路問題接踵而至。
混亂的底層架構首先為了保證尋路功能的正常運行,因此地圖的分辨率就必須得增加,原來隻是32*32像素的格子來标記單位是否能通過,現在這些格子中每一個8*8像素的小格子都要來進行判定标記。這樣系統的運算量就需要足足提升16倍,對于電腦的硬件是個不小的考驗,因此當時星際1剛出的時候對于電腦配置的要求算是比較高的!
配置要求提高還是一方面,另一個主要問題就是遊戲中斜向的地圖和礙口是個巨大的麻煩,因為斜着的邊緣将正方形小格子給切割得亂七八糟,系統需要判定這些小格子哪些能走哪些不能走,而這些工作全都得交給程序員來進行,也因此星際争霸1的地圖編輯器極其難寫,用戶也極難使用。
因此大家一定發現了,星際1的第三方地圖數量稀少,而且bug非常多。反觀魔獸争霸3他強大的地圖編輯器誕生了非常多經典的遊戲,比如dota,澄海3c這些超級經典的RPG地圖。
所以玩家在玩遊戲的時候有時候會發現,如果是一隊龍騎士在通過一些比較狹小的路口時就會發生超級大堵車。你在前線正打得火熱呢,回過頭來可能就會突然發現七八個龍騎士正堵在一個路口下不來,所以這時候就需要玩家手動去一個一個操作這些龍騎士讓他們按順序走下來。
除了這些問題以外還有一個東西一直困擾了暴雪的程序員們好久,就是農民采礦時的擁堵。星際中每一個單位都是有碰撞體積的,當十幾個農民在一起采礦時就難免會發生碰撞,然後慢慢的就會擠成一團動彈不得。這個問題直到遊戲發售都沒有被解決,最終還是用了簡單粗暴的方式取消農民在采礦時的碰撞體積,才終于能讓采礦工作平穩運行。
有趣的是,我們現在了解到的星際争霸中的這些程序BUG卻成為了星際争霸這款遊戲中的閃光點。比如這些智障的尋路功能卻成為了區分高手和普通玩家的分水嶺,還有那單位碩大無比的碰撞體積,卻增加了單位的戰場存活時間,提高了遊戲的觀賞性。
所以說後來一直有人認為星際争霸1的觀賞性和遊戲性要遠高于星際争霸2,這其中的主要原因還是在于,星際1的操作幾乎沒有上限,操作實力強的選手就是可以碾壓操作比他弱的人。但到了星際2,由于采用了動态尋路的方式,使得遊戲中的單位經常容易出現聚團的現象,往往一個AOE打中了,這場遊戲就已經宣告結束。
因此我們會發現,在觀賞星際2的職業比賽時,往往雙方部隊一碰,10秒内就能決出勝負,給觀衆的觀賞體驗并不是很好。而星際1中一場戰鬥可能會發生數分鐘的拉扯,戰鬥,在拉扯的局勢,其激烈程度要遠勝星際2。
不過呢,畢竟時代是在進步的,星際2相對來說對于絕大多數玩家更為友好,他也首次出現了無上限編隊的系統,還有各種人性化以及更加智能的AI的确是當之無愧21世紀最好的RTS遊戲。
好啦,今天的故事就說到這了,如果喜歡大麥的星際小故事的話可以點一波關注點個贊喲~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!