開(kāi)發(fā)者雖然在努力解決,但說(shuō)到底還是硬件的問(wèn)題。
電子游戲看起來(lái)做的一年比一年好了。
就在過(guò)去的幾個(gè)月中,我們見(jiàn)證了《地平線:黎明時(shí)分》、《荒野之息》以及《不義聯(lián)盟2》給玩家?guī)?lái)的技術(shù)上的震撼;但是當(dāng)游戲畫(huà)面逐漸變好的同時(shí),讀盤(pán)時(shí)間這一“所有急性子玩家的夢(mèng)魘”卻絲毫不見(jiàn)改進(jìn)。
它們?cè)谠谀切┌l(fā)售前補(bǔ)丁中出現(xiàn)的時(shí)候簡(jiǎn)直太令人生厭了。所以我們擁有的那些更強(qiáng)力、更值錢(qián)的游戲設(shè)備究竟能不能有朝一日強(qiáng)到足夠消滅這些等待時(shí)間呢?
我和一名程序員談了這個(gè)事情,他解釋道:雖然游戲中的內(nèi)容現(xiàn)在已經(jīng)越來(lái)越多了,但是我們用來(lái)處理這些內(nèi)容的硬件設(shè)施并沒(méi)有相應(yīng)地進(jìn)步。
“GPU和CPU的性能的提升遠(yuǎn)遠(yuǎn)超過(guò)了硬盤(pán)讀寫(xiě)速度的提升幅度,”William Armstrong,一名曾經(jīng)參與過(guò)制作《生化奇兵2》和《看火人》的程序員在郵件中這樣回復(fù)我。硬盤(pán)的性能還在被物理法則所束縛,他說(shuō),因?yàn)閿?shù)據(jù)的讀寫(xiě)還是取決于電子和設(shè)備之間的相互作用。“這個(gè)過(guò)程會(huì)比純電路要慢的多。”他說(shuō)。“所有東西都比光要慢。”(譯注:光是電磁波)
誠(chéng)然,現(xiàn)在的硬盤(pán)讀寫(xiě)速度確實(shí)比十幾年前要快多了,現(xiàn)代的游戲機(jī)也有比之前的機(jī)型有更大的內(nèi)存容量,但是這個(gè)提升并不成比例。Robert Dieterich,一名參與過(guò)制作《Elite Beat Agents》和《Lips》的程序員,就拿畫(huà)面的材質(zhì)——用來(lái)讓游戲中的物體和環(huán)境顯得更逼真——的大小舉了個(gè)例子。
如果一位游戲開(kāi)發(fā)者想要把材質(zhì)的平均分辨率從1024x1024提升到2048x2048,數(shù)據(jù)大小就會(huì)是原來(lái)的四倍之多,如果是4096x4096就是16倍。
“如果換用固態(tài)硬盤(pán)的話,讀取速度會(huì)大幅提升,但是花銷(xiāo)也更大,讀取速度還是趕不上游戲數(shù)據(jù)大小的增幅。”Dieterich說(shuō)。
而且不僅僅是材質(zhì)的大小,Armsrong說(shuō)?!坝螒虻膬?nèi)容增加了,從而設(shè)置文件的大小也增加了很多。”他說(shuō)。“諸如設(shè)置AI行為,動(dòng)態(tài)物理效果,讓每個(gè)物品都在存儲(chǔ)讀取系統(tǒng)里注冊(cè),等等。當(dāng)游戲內(nèi)容增加的同時(shí),這些設(shè)置文件的大小也在增加?!?/p>
總之,由于數(shù)據(jù)大小和硬盤(pán)讀寫(xiě)速度的不相稱,游戲讀取時(shí)間沒(méi)增加就已經(jīng)是萬(wàn)幸了。這是因?yàn)橛螒蜷_(kāi)發(fā)者們會(huì)使用各種技術(shù)去隱藏或者減少讀取時(shí)間。Dieterich說(shuō),讀盤(pán)界面通常并不是讀取過(guò)程的開(kāi)始——它們通常是一系列后臺(tái)進(jìn)程的結(jié)尾,只是游戲開(kāi)發(fā)者用來(lái)避免程序響應(yīng)時(shí)間過(guò)長(zhǎng)而制作出來(lái)的。
舉例來(lái)說(shuō),在你真正開(kāi)始游戲之前讀取數(shù)據(jù)就會(huì)開(kāi)始,這也是為什么有的游戲開(kāi)頭logo畫(huà)面特別長(zhǎng)還不能跳過(guò)。另外一些游戲會(huì)在你游戲的同時(shí)讀取,或者用一些兩者混合的手段。許多現(xiàn)代游戲也會(huì)在你游戲過(guò)程中逐漸地用數(shù)據(jù)生成一些數(shù)據(jù),比如高清素材。換句話來(lái)說(shuō),也許一個(gè)墻的貼圖并不是從一個(gè)bmp文件來(lái)的,而是從數(shù)學(xué)公式中實(shí)時(shí)計(jì)算得到。
但是,所有這些東西都有自己的麻煩之處;最有效的減少讀取時(shí)間的方法是把一個(gè)部分所需要的素材打包,只在用到它得時(shí)候再讀取它。游戲開(kāi)發(fā)者可以根據(jù)玩家游戲的進(jìn)程以及可能采取的行為來(lái)將這些素材分類打包;直白地來(lái)說(shuō),這種技術(shù)通常會(huì)在一個(gè)關(guān)卡開(kāi)始前使用。
但是玩家的行為并不是總那么容易預(yù)測(cè),尤其是現(xiàn)在越來(lái)越多的游戲開(kāi)始采用開(kāi)放世界設(shè)計(jì)。“玩家的目的地越難以預(yù)測(cè),你越難以預(yù)計(jì)下一步玩家可能會(huì)用到什么樣的數(shù)據(jù)。”Dieterich說(shuō)。“這就是為什么你在開(kāi)放世界游戲中進(jìn)行快速旅行的時(shí)候可能會(huì)遇到讀取畫(huà)面,但是如果你手動(dòng)走過(guò)去就不會(huì)有讀取畫(huà)面的原因?!?/strong>
很多情況下,游戲開(kāi)發(fā)者在開(kāi)發(fā)完成之前都不知道自己的游戲到底能不能快速地進(jìn)行數(shù)據(jù)讀取。游戲開(kāi)發(fā)就好像是在拼一幅巨大的、不斷變換的拼圖,每一個(gè)小拼圖都可能在某個(gè)時(shí)刻帶來(lái)麻煩,這可以說(shuō)是有利有弊。
有時(shí)候在這個(gè)地方做出個(gè)小改動(dòng)可能就會(huì)導(dǎo)致在別的地方讀取時(shí)間大大增長(zhǎng)或者產(chǎn)生崩潰的bug。當(dāng)然,這也取決于游戲引擎的使用。有的引擎會(huì)減少讀取時(shí)間,而且多數(shù)游戲引擎都是在游戲制作完成之前就投入使用的。所以讀盤(pán)時(shí)間這一方面我們只能猜測(cè)長(zhǎng)度如何,但是猜的可不一定準(zhǔn)。
為了避免搞砸其他東西,開(kāi)發(fā)者通常會(huì)在改進(jìn)讀盤(pán)時(shí)間的時(shí)候鎖定其他所有內(nèi)容。但問(wèn)題在于,這種工作只能在游戲即將完成的時(shí)候在做,有的時(shí)候時(shí)間所剩不多。開(kāi)發(fā)者只能解決其中一部分問(wèn)題就匆匆讓游戲上市。很明顯讀盤(pán)時(shí)間并不是一個(gè)最優(yōu)先需要解決的問(wèn)題。
“當(dāng)你已經(jīng)都快把游戲拷貝發(fā)往經(jīng)銷(xiāo)商的時(shí)候,你通常會(huì)把所有問(wèn)題列一個(gè)表然后按照所花的時(shí)間以及解決帶來(lái)的好處排列?!盝P LeBreton,一名參與制作了《生化奇兵》和《太空基地DF-9》的設(shè)計(jì)師說(shuō)?!霸诎l(fā)售的關(guān)頭,開(kāi)發(fā)者通常會(huì)把游戲穩(wěn)定性放在第一位——來(lái)確保游戲不會(huì)崩潰,并且有比較高的完成度——這些都比運(yùn)行速度重要?!?/p>
“到發(fā)售的最后關(guān)頭,你就好像是在賭玩家們會(huì)喜歡什么?!盠eBreton說(shuō)?!耙粋€(gè)運(yùn)行緩慢的游戲還是能玩,但是一個(gè)頻繁崩潰的游戲就等于廢了。”
近來(lái),我們看到越來(lái)越多的開(kāi)發(fā)者都會(huì)在游戲發(fā)售之后發(fā)布補(bǔ)丁,尤其是優(yōu)化讀取時(shí)間,因?yàn)橹挥挟?dāng)游戲發(fā)售之后開(kāi)發(fā)者們才能有充足的時(shí)間去徹底解決之前遺留的問(wèn)題。
“只要游戲一發(fā)售,我們就會(huì)收到成噸的反饋,在其中我們看到了許多反映讀盤(pán)時(shí)間過(guò)長(zhǎng)的意見(jiàn)?!盧and Miller說(shuō),他是發(fā)售于2016年的《沖仰異界》的總監(jiān)。有些意見(jiàn)是來(lái)源于一些特殊的硬件問(wèn)題,但是另一些則是來(lái)自于一些游戲開(kāi)發(fā)組在開(kāi)發(fā)過(guò)程中沒(méi)有注意過(guò)的問(wèn)題?!拔覀?cè)谶M(jìn)入游戲時(shí)載入的內(nèi)容太多了,有些根本用不到。”他補(bǔ)充到?!八晕覀儗㈤_(kāi)頭載入重新精簡(jiǎn)了一邊然后發(fā)布了補(bǔ)丁。”
在更新《沖仰異界》的游戲引擎以及優(yōu)化游戲在不同平臺(tái)上的表現(xiàn)的同時(shí),Miller和他的公司發(fā)現(xiàn)了很多他們之前做的不夠好或者不夠有效率的小問(wèn)題。
“我們發(fā)現(xiàn)我們?cè)谧x取游戲世界數(shù)據(jù)的時(shí)候也把所有動(dòng)畫(huà)數(shù)據(jù)讀取了,”Miller說(shuō)。“這導(dǎo)致了讀取緩慢,但是這個(gè)問(wèn)題需要我們重寫(xiě)角色互動(dòng)的系統(tǒng)來(lái)解決?!泵佬g(shù)部門(mén)發(fā)現(xiàn)可以壓縮一些材質(zhì)的大小,但是這也要一點(diǎn)一點(diǎn)來(lái)。
我又采訪了其他兩個(gè)游戲的制作人,這些游戲也發(fā)布了優(yōu)化讀盤(pán)時(shí)間的補(bǔ)丁,分別是潛行游戲《精靈鼠傳說(shuō)》以及奇幻RPG《矮人》,他們給出的答復(fù)也差不多。為了縮短讀盤(pán)時(shí)間,游戲開(kāi)發(fā)者必須從內(nèi)而外全方位地了解他們的游戲。既便如此,還是要花很多時(shí)間和精力去解決這些問(wèn)題。以《矮人》的制作團(tuán)隊(duì)為例,他們最近開(kāi)始嘗試在開(kāi)發(fā)過(guò)程中就檢查讀盤(pán)時(shí)間的問(wèn)題。
《矮人》在發(fā)售后補(bǔ)丁中大幅縮短了讀盤(pán)時(shí)間,項(xiàng)目的創(chuàng)意總監(jiān)說(shuō),他的工作室現(xiàn)在已經(jīng)開(kāi)始在游戲開(kāi)發(fā)過(guò)程中就檢查讀盤(pán)時(shí)間了。“檢查數(shù)據(jù)打包情況,優(yōu)化內(nèi)存使用,以及減少內(nèi)存使用量都會(huì)變得很復(fù)雜,如果你在開(kāi)發(fā)末期才關(guān)注這些問(wèn)題?!盝an Theysen說(shuō)到?!八詫?duì)于我們接下來(lái)的游戲,都會(huì)在開(kāi)發(fā)過(guò)程中采用新的流程,讓每個(gè)人都從自己的部分縮短讀取時(shí)間。”
但是開(kāi)發(fā)者實(shí)際上能在游戲開(kāi)發(fā)完成前就做的事情并不多。只要我們還在磁碟上存儲(chǔ)數(shù)據(jù),那么我們就還會(huì)遇到讀盤(pán)的問(wèn)題,而那些補(bǔ)丁也會(huì)因此一直在發(fā)售后發(fā)布。
William Armstrong說(shuō),讀盤(pán)時(shí)間就像一個(gè)普通bug,“一個(gè)會(huì)在網(wǎng)絡(luò)環(huán)境中發(fā)生的bug,或者一個(gè)當(dāng)你不按順序接任務(wù)造成的任務(wù)bug。這些bug只有當(dāng)游戲全部完工的時(shí)候才會(huì)顯現(xiàn)出來(lái)。而通常來(lái)說(shuō),游戲其實(shí)都在發(fā)售前最后一點(diǎn)時(shí)間才做完。”
本文編譯自:kotaku
原文標(biāo)題:《Why Games Still Have Bad Loading Times》
原作者:Nathan Grayson
* 本文系作者投稿,不代表觸樂(lè)網(wǎng)站觀點(diǎn)。