相關文章

A71c515c452b772bebd9552a124820fd 你正準備痛快地玩遊戲,卻為了等待讀取而浪費一堆時間。進入遊戲要讀取、切換場景要讀取、連死掉重生也要讀取,頻繁的讀取令人氣結!說來奇怪,現在的硬體明明這麼先進,為什麼遊戲的讀取速度仍舊這麼慢呢?

要找出遊戲讀取速度低落的癥結,就得先理解一個事實:硬體與遊戲,兩者的進步幅度有非常大的差異。硬體的效能呈線性增加,遊戲的規模卻是呈指數增加。硬體的進步跟不上遊戲的進步,讀取速度自然快不起來。

「每一個硬體裝置的進步幅度都不盡相同,GPU與CPU的進步遠多於硬碟的進步。」曾經參與開發《生化奇兵2》與《救火者》的程式設計師,威廉.阿姆斯壯指出,「硬碟的運作必須遵守物理法則,讀寫資料的程序牽涉到電子訊號的改變,以及多種物理裝置的運作,其效能遠遜於純粹的電路系統。換言之,物理裝置的速度完全比不上光速。」

當代硬體的效能遠比過去強大,裝置彼此卻有很大的效能落差。這些效能落差一旦累積起來,就會造成可觀的延遲。

▲硬碟的效能遠遜於CPU或記憶體。

「這一點可以用遊戲物件材質來說明。」曾經參與開發《精英節拍特工》的程式設計師,羅伯特.戴德利說,「一般的遊戲設計師習慣使用1024x1024的材質,如果你想要讓物件看起來更加精細,就得使用更大的材質。2048x2048的材質尺寸是1024x1024的4倍,所需的運算時間也是4倍。至於4096x4096的材質,其大小與運算時間則是1024x1024的16倍。」

當代遊戲為了提升物件質感而使用較大的物件材質,使得運算時間頓時飆高,從原本的1倍變成4倍,再變成16倍,尺寸與時間的膨脹速度皆呈指數增加。相對地,早期的硬碟轉速為5400RPM,現在則是7200RPM,效能的進步幅度只有區區的33%,根本無法有效應付呈指數膨脹的物件材質。

「為了提升讀取效能,使用SSD硬碟不失為一個昂貴的作法。」戴德利說,「可惜就算是SSD硬碟,也難以對抗日漸巨大化的遊戲資料。」

▲SSD硬碟效能頗佳,但還是難以滿足近代遊戲的需求。

阿姆斯壯則是指出,材質大小只是影響讀取速度的其中一項因素。「當代遊戲的規模扶搖直上,遊戲設定值的總容量連帶增加。舉凡人工智慧的參數,以及動態物理環境的安排,大量的資料集合造就一個碩大無比的遊戲。」

為了讓遊戲順利運作,遊戲主程式必須持續存取所需的資料,倘若有任何一項資料來不及送到主程式手上(原因可能是資料過大,或是硬體裝置不夠快),玩家就得等待資料存取完畢才能繼續遊戲。

眼尖的讀者想必注意到一個問題:既然遊戲資料呈指數膨脹,為什麼讀取時間沒有跟著呈指數增加呢?這是因為開發商努力研發各種加速讀取的技術,讓資料傳輸更有效率。從玩家的角度來看,讀取速度低落的確讓人心煩;可是從開發商的角度來看,只要能夠將讀取速度控制在容許範圍內,就算是成功了。

▲讀取完畢再叫我,我先去打個盹~

「『出現讀取畫面』通常不等於『讀取正要開始』。」戴德利說,「玩家看到讀取畫面的時候,主程式可能已經在幕後讀取很長一段時間。只有當玩家完成階段性行動(像是走到地圖邊緣,或是進入劇情事件之類的),主程式卻還沒有把資料讀取完畢的時候,遊戲才會秀出讀取畫面,請玩家稍後片刻。」

舉例來說,某些遊戲剛進入遊戲時,會刻意秀出一段無法跳過的商標畫面,遊戲便可以利用這個機會讀取資料。大部分的情況下,遊戲會趕在玩家行動前預先讀取檔案,開發商的技術力越高,預先讀取的動作就越難察覺。開放性世界遊戲就是預先讀取的優良表率,你在遊戲世界裡面盡情奔馳,遊戲則是在幕後持續預先讀取資料。此時此刻,你的硬碟指示燈將持續閃爍,硬碟運轉聲跟著提高,這些都是遊戲正在存取資料的證據。

 

 (後面還有:改善讀取效能的各種議題)

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則