首先我們要有一個認知:「遊戲的最佳化」並不等於「計算機理論的最佳化」,兩種最佳化在本質上截然不同。在計算機理論中,最佳化指的是設計一個理想的處理程序,讓程序以更高的效率計算出相同的結果。
舉例來說,下面有一個處理程序:
a = b*c + b*c + b*c
裡面有3個乘法與2個加法。如果我們要將其最佳化,大概會變成這樣:
d = b*c
a = d + d + d
在結果相同的前提下,只需要1個乘法與2個加法,可以省下2次乘法計算的時間。
▲對大部分玩家來說,《俠盜獵車手5》堪稱是經過最佳化的好遊戲。
然而對遊戲而言,最佳化指的是強化遊戲實機表現,呈現出較佳的遊戲感受,就算結果與原本不同也沒關係。遊戲程式是否最佳化,是根據主觀的感受,而非客觀的運算結果或運算效率。換言之,我們很難找到一個客觀標準來評斷遊戲是否最佳化。
「沒有任何方法可以準確判定遊戲是否經過最佳化。」開發商Croteam的資深工程師,狄恩.西古力(Dean Sekulic)指出,「我們只能以主觀意識體驗遊戲,用自己的標準來判斷遊戲的最佳化程度。值得注意的是,遊戲檯面下的運作遠比表面來得複雜,每一個環節都可能影響遊戲表現。」
當你發現遊戲效能不盡理想,很可能是某個環節出現問題。畫面選項對效能的衝擊格外明顯,所以經常是開發商進行最佳化的首要目標。
▲4K解析度帶來更沉重的運算負擔。
解析度攸關整體畫質,也直接影響效能表現。遊戲解析度從早期的1280 x 1024變成1080p,然後演變為4K,每一次的躍進都會大幅加重運算負擔。4K畫面內的像素數量是1080p的4倍,運算負擔也是4倍,對效能的衝擊在所難免。
反鋸齒是一把雙面刃,雖然可以提昇畫質,卻會嚴重衝擊效能。目前的反鋸齒種類眾多,每一種都有其優缺點。MSAA效果普通但是效能傑出、SSAA原理單純卻很吃資源,其他還有FXAA與TXAA等等。開發商必須謹慎評估各種反鋸齒的特性,針對遊戲需求選擇反鋸齒,並調適反鋸齒的細節表現,讓遊戲兼顧畫質並維持流暢度。
▲反鋸齒的效果與效能表現不盡相同。
一般而言,PC遊戲會提供各種不同的反鋸齒,家用主機版則沒有這種福利。受限於硬體規格,家用主機版偶爾必須關閉反鋸齒來換取校能,或是採用動態反鋸齒技術。反鋸齒的使用時機,以及反鋸齒該如何調適,都足以令開發商傷透腦筋。
光影效果對環境表現與氣氛營造影響甚鉅。開發商得處理每一個場景的光源與陰影,反覆檢測光線的投射容積與形狀,確保其演出可以達到需求。全域照明(Global Illumination)與體積照明(Volumetric Lighting,泛指從高空或雲隙間灑下的光芒)是效能殺手,必須搭配適合的地形才能呈現理想效果。
在現實世界裡,只要有光源就會有陰影。可是遊戲世界不比現實,就算弄出一個光源,也未必能夠產生理想的陰影。早期遊戲一律採用直接投影,只要環境中有光源,物件就會產生對應的投影。直接投影的原理簡單且容易實作,缺點是無法呈現細節的陰影,導致場景風貌不夠逼真,一看就知道是遊戲的場景。
▲《異塵餘生4》天際灑下來的光芒十分逼真。
為了彌補直接投影的缺憾,環境遮蔽(Ambient Occlusion)便因應而生。《末日之戰》是最早使用環境遮蔽的名作遊戲,將畫質推展至嶄新境界。可惜當年玩家配備普遍不足以使用環境遮蔽,使得末日之戰成為一款曲高和寡的遊戲。
時至今日,環境遮蔽已成為遊戲的普世標準,還衍伸出各種提升畫質的應用方式。《古墓奇兵:崛起》所使用的VXAO(Voxel Ambient Occlusion)便是一例,其品質不輸一般的環境遮蔽,還可以大幅降低運算負擔。某些新作遊戲甚至替遠距離物件加入環境遮蔽,讓場景突破虛擬的藩籬,呈現出直逼現實的質感。
▲場景中的陰影就是環境遮蔽,可以有效提升畫質。
光影效果的代價十分可觀。開發商得花上許多時間調適,將細節部分去蕪存菁,換取較流暢的效能,還得避免被玩家找到破綻。有必要的話,開發商會採用預處理光影效果,也就是將場景內的動態光影變成靜態光影,藉此壓低運算負擔。
舉例來說,玩家進入一個點燃油燈的房間,發現只有牆上的油燈可以照亮環境,手上的火把卻無法照亮環境。這是因為遊戲將油燈與火把設定為無法與環境互動的靜態光源,才會出現點燃火把卻無法照亮環境的詭異現象。
(後面還有:其他關於遊戲最佳化的議題)
▲接觸硬化陰影會柔化遠距離的陰影,呈現出逼真的質感。
若想要突顯空間的遠近感,就得導入景深效果。然而景深效果非常吃運算資源,必須經過最佳化才能夠端上桌。螢幕空間反射(Screen Space Reflection)可以呈現平滑表面的鏡像,效能高於傳統的鏡像效果,但是數量一多仍然可以拖垮效能。接觸硬化陰影(Contact Hardening Shadow)會根據光源、陰影與物件的距離,動態柔化陰影邊緣,強化陰影的逼真度。
最後是現代遊戲的必備效果「物理運算」。從人物衣服與頭髮,野外的枝葉與雲霧,甚至是仆街的屍體,都是物理運算的工作項目。物理運算對CPU與GPU負擔很大,尤其是那些強調物件破壞的遊戲,一個沒弄好就會產生延遲。
▲《塔羅斯的法則》畫面選項相當詳盡。
玩家在遊戲中可以看見好幾種預設的畫面設定,像是「低」、「中」、「高」、「最高」之類的,指引玩家盡速選出適合的設定,這方面同樣需要最佳化。細心的開發商會將預設的畫面設定拿捏得恰到好處,免除玩家反覆嘗試的時間。
開發商首先會將每一個畫面選項區分為CPU重視、GPU重視、記憶體重視,然後找出畫質與效能負擔均在中間值的一套設定,將其定義為「中」。接著調整選項的設定值,逐一拼湊出其他預設的畫面設定。
光是畫面選項就有這麼多需要最佳化的地方,開發商的處境就不難想像了。那麼,玩家該怎麼評斷一款遊戲是否經過理想的最佳化呢?
▲垂死之光的畫質精美,前提是必須擁有高檔的配備。
首先來看看《垂死之光》,垂死之光是款開放性世界遊戲,場景精美華麗,可視範圍非常遠,具備日夜交替的動態時間設定,玩家必須擁有強悍的配備才可以發揮遊戲的潛力。不少玩家對垂死之光不甚滿意,抱怨PC版在特效全開的情況下很難維持流暢度,替這款遊戲貼上「缺乏最佳化」的標籤。
事實上,PC版的垂死之光表現得相當不錯。PC版的運算距離比家用主機版還要遠,提供豐富的畫面選項,畫面表現猶勝一籌。然而玩家的配備普遍不足以發揮PC版的完整潛力,反而讓玩家誤解為這款遊戲缺乏最佳化。
後來開發商將運算距離縮短為原本的一半,犧牲畫質來解決延遲問題,不過似乎為之過晚。倘若開發商一開始就將PC版的運算距離縮短,或許就不會有這麼多的批評。
▲人類岐裂因為畫質設定導致效能低落。
另一個例子是《駭客入侵:人類岐裂》。這款遊戲採用8x的MSAA以及延期著色(Deferred Shading),這兩者放在一起會嚴重衝擊效能,導致玩家紛紛跳出來抱怨這款遊戲缺乏最佳化。其實只需稍微調整畫面選項,效能低落的問題便能迎刃而解。因為一時疏忽導致遊戲被罵翻,這恐怕是開發商始料未及的。
再來是2010年的《戰慄深隧》,這款遊戲頻繁使用體積照明,使得效能大受影響,在當時飽受玩家抨擊。可是若用現代的配備來跑這款遊戲,就能得到十分理想的效能。由於配備需求過高而被誤認為缺乏最佳化,開發商簡直就是啞巴吃黃連,有苦說不出。
▲體積照明是襯托氣氛的絕佳工具。
畫面選項固然是最佳化的重點項目,卻不代表最佳化的一切。手把操控性、流程與節奏控制、UI設計與配置、自動存讀檔的設定、線上對戰的玩家配對,以及遊戲除錯,全部都是最佳化的目標,這方面的學問多到可以出成好幾本書。
最佳化,這個名詞幾乎涵蓋遊戲的所有環節,絕非單純的「幀數是否流暢」或是「畫面是否漂亮」而已。以後當我們檢視一款遊戲時,應該從各種不同的角度切入,得到一份客觀的結果,再決定是否要貼上最佳化與否的標籤。了解最佳化所代表的意義,對遊戲做出正確的評論,這才是一位玩家所應具有的風範。
加入電腦王Facebook粉絲團