終於!《影之刃零》在今天發售了。
有個小問題就是不知道為什麼學《GTA6》都要在週四釋出,而截至本文撰稿時,相信有很多社畜還在工位坐牢。

老貓有社畜朋友中午特地覺也不睡了,急著先體驗一下《影之刃零》。

然後天塌了。為什麼呢?是《影之刃零》不好玩嗎?
那倒不是,是這遊戲著色器編譯為什麼會這麼久!!!
編譯快一點也是一不小心幾十分鐘就過去了,結果犧牲午睡時間幾乎啥也沒玩到。
並不是朋友的電腦配置差。老貓看了看,網上到處都有玩家在吐槽著色器編譯怎麼那麼慢慢慢。

相信大家能看到“77”這個關鍵詞,確實挺多人不知道為什麼就卡在77%。

有玩家都吐槽著色器一個不好就要搞1小時多,是不是梁其偉的防退款機制。

不僅如此,編譯個著色器CPU的佔用率能彪到接近100%,恐怖如斯,也是有玩家體驗到了cpu佔用近乎100%是什麼感覺了,啥也幹不了。

梁其偉:影境太大,你忍一下。
老貓想起當年玩《怪物獵人:荒野》和《神秘海域4》都要等著色器編譯,非得編譯完就算了,還等挺久。

說到這裡,有的朋友可能會好奇這著色器是幹嘛的?一定要在正式開始遊戲前把這玩意編譯好嗎?
好訊息!不用去問AI了,都看到這了,老貓就來聊聊這個。
今天老貓就向各位朋友簡單科普一下什麼是著色器——
著色器,其實顧名思義就能感覺到這玩意是參與上色的。專業一點來講就是執行在顯示卡上的小程式,負責圖形渲染過程中的特定計算。
計算什麼呢?
就比如,你看這是主角揮動的一把長劍。

遊戲裡的劍為什麼會反光?金屬表面為什麼和布料不一樣?光源移動以後,陰影為什麼變化?
這些五彩斑斕的畫面背後,就有各類著色器參與計算。

大概知道著色器是什麼後,就來到關鍵問題,為什麼著色器要編譯呢?
首先得解釋一下,什麼是“編譯”。
簡單來講,編譯就是把程式設計師寫出來的程式碼,轉換成計算機能夠執行的指令。
畢竟計算機看不懂程式設計師寫的程式碼,總得先翻譯一下,人家才知道該怎麼做吧。
著色器也是同樣的道理。
然後呢,玩家顯示卡太太太多了,都是玩《影之刃零》的,有人用1060有人用5090,更何況即使用一樣的顯示卡,顯示卡驅動版本還可能不一樣。
就使得遊戲無法簡單地為所有玩家提供完全相同、可直接執行的“翻譯”。

所以遊戲需要玩家的機子針對當前硬體進行進一步的編譯。
這也解釋了為什麼主機玩家幾乎就不需要等著著色器編譯,主機的硬體和軟體環境更統一嘛,配置什麼的都相對固定,開發者能夠更有針對性地提前準備著色器的編譯。
有的朋友可能會想,欸有不少遊戲就沒有這個開啟遊戲前要編譯著色器來罰站的啊?
那只是系統沒告訴你罷了。

有些遊戲會把編譯工作安排在載入介面,有些則會在遊玩過程中逐步完成,還有些遊戲本身需要編譯的內容就沒那麼多,自然不需要玩家等上半天。
不過這個邊玩邊編譯的方式,雖然能讓玩家提前進入遊戲,但也可能帶來一個問題。
就是你打著打著,BOSS突然放出畫面華麗的招式,遊戲卻因為相關著色器還沒準備好,需要臨時進行編譯。
在你看來就是遊戲畫面卡了一下,惱人的抽幀問題!
老貓前文提到過的《怪物獵人:荒野》,卡普空就承認了遊戲邊玩邊編譯,導致遊戲畫面出現卡頓。

所以,提前編譯和遊玩時編譯,某種程度上也是在“開玩前多等一會兒”和“玩到一半可能卡一下”之間做取捨。
(當然,並不是說提前編譯,畫面就一定不會卡,遊戲卡頓的原因是多種多樣的)
不知道各位會怎麼選,反正換老貓的話,那還是提前編譯好了,因為玩的時候突然卡一下確實挺煩人的。
相信大家也能明白如何在保證遊戲流暢的同時,儘量減少玩家等待著色器編譯的時間,是開發者需要解決的問題了。
而正好,正好!就在《影之刃零》發售前不久,巨硬釋出了個新技術。
這新技術叫“Advanced Shader Delivery”,也就是高階著色器交付,簡稱 ASD。
它能讓著色器編譯的時間變短,還能減少因為著色器發生的卡頓,並節省功耗。

原理很簡單。既然玩家的電腦要根據顯示卡和驅動組合來編譯著色器,那能不能提前在雲端把對應組合編譯好,然後隨著遊戲一起提供給玩家?
巨硬正在做的就是這件事。
最近的《使命召喚:現代戰爭4》就使用了ASD,將著色器編譯需要的時間縮短至幾秒鐘。

這新技術剛出來,《影之刃零》就沒用上ASD,讓大家想玩這遊戲得先坐牢。希望靠著ASD,之後不再有遊戲需要大家等著色器編譯等那麼久。
不過,那都是以後的事了。至於現在嘛,該坐的牢還是得坐。
老貓也是坐等回去開啟《影之刃零》,看能編譯多久了。
