PTT推薦

[法環] PC 版效能問題解釋與平台選擇建議

看板C_Chat標題[法環] PC 版效能問題解釋與平台選擇建議作者
dklassic
(DK)
時間推噓26 推:27 噓:1 →:43

根據 Steam 板板友建議重新整理文章,貼過來提供點資訊。
本文的目的是要協助解釋清楚 PC 版的效能問題降低偏方的嘗試並且順便給一點平台選擇的建議。
根據官方持續修正,這邊的內容適用性可能會產生變化,還需要未來版本玩家閱讀的時候再自行做一些判斷。
這篇的內容目前僅以現行版本 1.0.2 為準。未來可能會變更好或更糟,不知道。

結論先。
目前的效能主要受到兩件事情影響:
-DX12 著色器編譯(Shader Compilation)
-資料串流
兩件事情都嚴重受限於 CPU 效能,也導致目前玩家真正能改善遊戲表現的方法只有:
-使用單核效能越強越好的 CPU
-使用不需要即時編譯著色器的平台(Xbox、PlayStation)
-使用 Linux 遊玩 Proton 模擬的版本
不然就只能等 From Software 修好,除此之外任何其他現行手段全部都是偏方(以為有用,但實際上完全沒用的手段)。

而現行版本根據遊玩體驗的推薦順序大約為:
1. PC 版(如果擁有極強單核效能的 CPU 或者用 Linux 玩 Proton 模擬版)
2. PS5 遊玩 PS4 版(穩定 60FPS)
3. 搭配 VRR 遊玩 XSX 版
4. PS5 版(平均 FPS 接近 60)
5. PS4 版(平均 FPS 在 30,但是有不穩定的 FPS 限制器)
6. PS4 Pro、Xbox One X 與一般情境下的 PC 版
(根據偏好取捨,前兩者穩定但 FPS 低,後者可以有高 FPS 但是容易瞬間不穩定)
7. Xbox One 版(還是別玩了吧)


接下來會開始解釋詳細原因,但大多資料源於以下三部分析影片,如果可以英聽的話直接去聽這三部最實際。
Digital Foundry 的:
https://youtu.be/5EtcrUrsl38
Elden Ring PC Performance Simply Isn't Good Enough
https://youtu.be/uVcfiBnX1c0
Elden Ring: PS5 vs Xbox Series X/S Tech Review -
The Best Ways to Play on Next-Gen Consoles
https://youtu.be/repwHeJYwFk
Elden Ring Last-Gen PS4/PS4 Pro vs Xbox One/One X:
Do You Really Need A Console Upgrade?
我這邊的解釋基本上可以說是翻譯這三部影片的結論,加上我自己電腦執行起來的狀況佐證。

接下來的解釋會分為幾部分:
一、名詞解釋
1. 卡頓(Stutter)與理想的遊戲體驗
2. 受限於 CPU、GPU(CPU、GPU Bound)
3. DirectX API
二、PC 版效能問題解釋
1. DX12 著色器編譯問題
2. 資料串流問題
三、為何 Linux 版沒有這些問題
四、常見問題回答

一、名詞解釋
1. 理想的遊戲體驗與卡頓(Stutter)
理想的遊戲體驗是完全穩定的 FPS,其次才是越高 FPS 越好。
舉例來說一個 60Hz 的螢幕就是每秒更新 60 次畫面,所以 60FPS(每次更新畫面)與
30FPS(每兩次更新畫面)都是理想的體驗。然而完全穩定的 30FPS 體驗遠優於平均起來接近 60FPS 但是不穩定的畫面。
所以當 FPS 不穩定時,就稱之為「卡頓」(Stutter)。

2. 受限於 CPU、GPU (CPU、GPU Bound)
一款遊戲執行起來的狀況主要受到 CPU 與 GPU 影響。
雖然過去十年遊戲越推越多多邊形跟畫面特效,讓玩家容易把遊戲跑起來卡直接跟 GPU 不夠好連結起來(受限於 GPU;GPU Bound),但是根據遊戲設計,可能會是 CPU 不夠好導致遊戲執行不順(受限於 CPU;CPU Bound)。
簡易的辨識法是:
-受限於 GPU 時,GPU 使用率會在 100%,與此同時 FPS 不穩定
(會出現平滑但波動的線條: https://imgur.com/5pAetrZ
-受限於 CPU 時,GPU 使用率不會達到 100%,與此同時 FPS 有嚴重的不穩定
(會出現像這樣的雲霄飛車: https://imgur.com/qNCDIhH
當受限於 CPU 時,因為 GPU 達不到 100%。所以就算你有全世界最好的顯卡,或者把解析度、特效設定降低都沒有幫助

3. DirectX API
要遊戲開發者直接跟電腦硬體解釋他該做什麼有點困難,所以通常開發者會找個翻譯去跟電腦硬體溝通。Windows 專用的這個翻譯叫做 DirectX,現在最新版本是第 12 版簡稱
DX12,第 11 版稱 DX11。

就醬。

二、PC 版效能問題解釋
1. DX12 著色器編譯問題
著色器(Shader)可以很粗略地解釋為顯示卡要知道怎樣顯示一個東西的手段,稍微不幸的是這個東西要針對每個電腦配備重新產生一次,這個過程要用 CPU 來編譯。
由於家用主機硬體配置是固定的,所以開發者可以預先編譯好主機需要的版本。
因此只有 PC 版需要現場即時編譯

在 DX11 時,DX11 作為一個翻譯會偷偷地幫開發者處理好,而且是在不影響遊戲本體效能的情況下進行。然而本次法環只使用 DX12,DX12 將處理編譯的工作交給開發者分配,沒有特別處理的情況下就會在要顯示的當下編譯
所以 PC 版會發生卡頓的時機大概就是:
-第一次跳躍
-第一次攻擊
-王的每一個新招
任何一個視覺效果第一次出現的瞬間,所以甚至可以半開玩笑地說王的花招越多,你的遊戲就會卡得越慘。
好消息是只有第一次出現時需要編譯,所以某方面來說你的遊戲會越玩越順。
直到遊戲更新一次,你就要全部重新計算。

2. 資料串流問題
其實應該不是很需要解釋吧,就是開放世界要根據玩家位置載入不同東西,因為不可能同時載入全部所以進進出出就會需要 CPU 做事。
應該所有玩家都會在引導之始的大樹守衛風暴山丘卡得比較嚴重,這就是資料串流造成的。無論遇上幾次都會發生
至於要解釋 From Software 的資料管理不理想之處的話......參考這則 Twitter 顯現玩家在地下洞窟探索時,實際上載入的地圖到底有多大:
https://twitter.com/manfightdragon/status/1502559578315112448
但當然所顯現的那些模型應該都是超低精細度的遠景用模型,佔據記憶體總量應該沒有很多,頂多只能說不夠理想 XD

三、為何 Linux 版沒有這些問題
一般情況下 Linux 不能直接執行 Windows 程式,所以為了讓 Linux 使用者能更順利地遊玩 Windows 遊戲而不需要開發者製作 Linux 版,Valve 製作了名為 Proton 的另一層翻譯讓 Windows 遊戲可以直接在 Linux 上執行。
簡單來說一般的 Windows 遊戲是這樣執行的: https://imgur.com/CvE96rz
使用 Proton 在 Linux 上執行 Windows 遊戲長這樣: https://imgur.com/kiq1GPA
所以 Proton 可以攔胡指令,偷偷改成比較理想的形狀。而 Proton 也會預先根據你的硬體配置下載好你需要的已編譯著色器(Compiled Shader),讓你執行遊戲時不需要現場另外計算。
因此目前 Linux 版透過 Proton 模擬意外成為 PC 版本中最順暢的版本。

四、常見問題回答
Q:可是我[插入某個偏方步驟]後遊戲變順了?
A1:可能是錯覺,因為上述第一個問題只有在第一次遭遇的時候會卡,所以你遭遇後使用了偏方,然後回去重複第二次就不會卡了。
A2:呃,恭喜你解決了某個跟上述無關的你專屬的問題,你接下來還是得面對上面相同的問題。

Q:什麼是極強單核效能的 CPU?
A:講簡單點,AMD Ryzen 5000 使用者和 Intel 12 代 CPU 使用者應該玩得都順很多。

Q:可是我用[插入硬體配備]跑得很順啊?
A:遊戲客觀跑得很爛,但每個人對遊戲執行順暢度的容忍度差異很多,自己可以接受的話很好,但不是拿來說其他人也應該要接受的藉口。

Q:可是我用[插入硬體配備]可以穩 60FPS?
A:除非你有單核極端強的 CPU 不然這是不可能的。平均起來可能會很接近 60FPS,但是一定不是真正的完全 60FPS。(我的 CPU 是 AMD Ryzen 5950X 的情況下在湖邊站著不動都會在 58~60FPS 之間跳動)

Q:DX12 的鍋啦!
A:是 From Software 選擇使用 DX12 然後沒用好的鍋,並且還在沒有處理完問題的情況下就強行上市。

Q:From Software 技術力不夠啦,不要再繼續用客製引擎,去用 Unreal Engine 啦!
A:Unreal Engine 還是要面對相同的問題......參見另一款有著幾乎一模一樣的問題的Unreal Engine 遊戲: https://youtu.be/yV0kDvZqNpI

Q:如果我想要驗證一個偏方有沒有效的話該怎麼做?
A1:驗證對著色器編譯的幫助的話,可以刪除已編譯著色器暫存檔然後重新測試,但要確保你觸發的是相同的視覺效果可能很難,畢竟同一招可能會有四五種特效變種版本。
(NVIDIA 的暫存檔在 C:\Users\[使用者名稱]\AppData\Local\NVIDIA)
A2:驗證對資料串流的幫助的話就試著重複在參考上述有顯著資料串流卡頓的地方走相同路徑,紀錄 FPS 狀況對照。

Q:From Software 什麼時候修得好?
A:我不會通靈,但是遊戲開發真的很複雜,所以短則一天,多則半年都有可能。

以上提供參考,有空的話我會試著多回答點問題,但不保證。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.124.97 (臺灣)
PTT 網址
※ 編輯: dklassic (1.169.124.97 臺灣), 03/13/2022 18:36:53

sumarai03/13 18:37以黑魂一的經驗,玩家快修好了

mathtsai03/13 18:38我玩法環都玩到CPU過熱QQ

tsukirit03/13 18:39並沒有 我5900X 頓成狗

tsukirit03/13 18:40AMD現在單核又輸了 R23 大概1500分 12代i皇 有1900分

s3224415303/13 18:40如沒意外依照慣例 等官方還不如靠民間玩家

s95201303/13 18:41搞這麼麻煩乾脆不要玩了

reader271403/13 18:41都沒提到EAC問題耶..

erisiss003/13 18:41所以才有那種偷改dx12的偏方阿

jorden080403/13 18:41我i12的不會卡 3700的偶爾會掉禎

reader271403/13 18:42EAC肯定是會影響的吧.w.

erisiss003/13 18:42因為eac問題直接關掉就好了不用提吧,那也不是fs能修的

mc330832103/13 18:44推,這篇超需要

waggamsn03/13 18:49我覺得我自己pc大作玩太少反而覺得很順

rockman7303/13 18:51除了剛出關的大樹跟後面化聖雪原井噴靈廟我是還沒有特

rockman7303/13 18:52別FPS大爆噴過

tung356775203/13 18:52其實如果要鎖60,沒必要用到DX12,DX11就好了

rockman7303/13 18:523900X+3080

william45603/13 18:52Ue4很可怕,FF7remark不改CG會卡

jay92031403/13 18:52推分析 結論FS太廢

rockman7303/13 18:53主要是我用144HZ的螢幕 60看起來又更卡了..

a125g03/13 18:53不只顯卡要夠力CPU也要夠力

jay92031403/13 18:53還有圖那個G胖 笑了

jorden080403/13 18:53而且這代畫面全開也沒特別好

tung356775203/13 18:53然後我感覺它們技術不足的問題會越來越嚴重

a125g03/13 18:54看steam版文章就是DX11有些功能到DX12變成開發者自己要負責

jay92031403/13 18:54螢幕2K170自己是還沒接枝貴族就在NV面板試垂直同步哪個

jay92031403/13 18:54好了

a125g03/13 18:54FS沒有處理到這塊

jay92031403/13 18:54不然60配撕裂畫面實在太美

a125g03/13 18:54本質上還是主機安定

jorden080403/13 18:54日廠通病 技術不夠

labbat03/13 19:12對開發者而言腳本式api太甜蜜了,使用起來比編譯式api容易

Bencrie03/13 19:15我是建議不要開 Steam 的 shader pre-caching 啦

Bencrie03/13 19:15如果你遊戲很多,那你每天開 Steam 都會下載下到死 XD

Bencrie03/13 19:15mesa 自己就有 local 端的 shader cache

Bencrie03/13 19:16NVIDIA 就 ... 請有卡的人補充

jimmy9094603/13 19:16推分析

sustto03/13 19:17

yen082903/13 19:20著色編譯在硬碟讀取跟不上的時候,會發生大量卡頓,例如

yen082903/13 19:20剛傳送到新地方或出洞窟,這是PC老問題了,很多遊戲都這

yen082903/13 19:20

ezlifee114003/13 19:255800X正常玩,沒頓過

jackshadow03/13 19:283050 連續玩8個小時大概有兩次極短暫卡頓 可以說完全

jackshadow03/13 19:28順跑

LunaDance03/13 19:30原來dx12預設不會先編譯shader...

reall86052303/13 19:415600X+3060 跑1080還是會飄== 只是大部分都是穩60,

reall86052303/13 19:41兩個使用率都很低

reall86052303/13 19:41真的等N網玩家自己修算了

googlexxxx03/13 19:44上面AMD如果卡頓先到BIOS關fTPM或改Windows 10,已經

googlexxxx03/13 19:44有證實AMD有核心bug

googlexxxx03/13 19:47Intel 12代一定要上11才有大小核能力發揮,AMD最近發

googlexxxx03/13 19:47現一個致命問題就是fTPM會導致整體效能下降甚至爆音的

googlexxxx03/13 19:47情況。所以AMD平台請先暫時不要跟風去升上Windows 11

silver0003/13 19:50

GenShoku03/13 19:53所以steam deck反而比較順 可以

reall86052303/13 19:57Win10一樣要關?

reall86052303/13 20:02結果我根本沒開起來過

googlexxxx03/13 20:06fTPM AMD BIOS預設是開的(最近三年的電腦,更之前的

googlexxxx03/13 20:06不確定),就算沒用也要關。原因是amd在開機的時候就

googlexxxx03/13 20:06將記憶體圈了一部分去做加密資料,然後那區資料會有來

googlexxxx03/13 20:06不及釋放的問題,造成整體效能下降

googlexxxx03/13 20:08https://reurl.cc/02bQVK

googlexxxx03/13 20:10AMD user比較尷尬的是,這並不是法環的包

a191997903/13 20:59所以現在是linux玩家的勝利了嗎 連os也要魂系一下

y12019627603/13 22:01從來沒因為怪物出招卡過,都是在特定點,像是大樹或

y12019627603/13 22:01是下水道卡頓

etetat203/13 23:48

※ 編輯: dklassic (1.169.124.97 臺灣), 03/14/2022 02:34:19

b16016003/14 12:12推專業

ElitE0590103/14 17:18linux steam proton跑起來最順,有相關資料嗎

ElitE0590103/14 17:18何來最順之說

3/17 補個 Steam Deck 測試影片:

https://youtu.be/o1HuX2_Hhss

裡面還有對照 Proton 修正前的表現。 算是相對性的,所以我才在前面先假定「理想的遊戲體驗」是「FPS 越穩定越好」。 理論上 PC 平台可以藉由無上限的硬體來撐起遊戲體驗,但因為現在著色器編譯的實作方 式導致物理上不太可能有硬體可以取得完美無瑕的體驗(=完全穩定的 60FPS),頂多相 對能被接受。 後述 Proton 因為解決掉這部分的問題,所以雖然透過轉譯執行,平均效能應該要是下降 的,但由於不會撞到編譯造成的卡頓,穩定度反而比較高。 簡單來說就是同硬體雖然平均 FPS 不一定比 Windows 高,但是 95%、99% FPS 測起來都 會比現行 Windows 版高非常多。

※ 編輯: dklassic (1.169.124.97 臺灣), 03/15/2022 01:52:37 ※ 編輯: dklassic (1.169.97.86 臺灣), 03/17/2022 02:27:14 ※ 編輯: dklassic (1.169.97.86 臺灣), 03/17/2022 02:35:16

tcchu03/19 20:36還好我用Debian 爽 AMD + Proton-GE