根据 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 不稳定
(会出现平滑但波动的线条:
)
-受限于 CPU 时,GPU 使用率不会达到 100%,与此同时 FPS 有严重的不稳定
(会出现像这样的云霄飞车:
)
当受限于 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
三、为何 Linux 版没有这些问题
一般情况下 Linux 不能直接执行 Windows 程式,所以为了让 Linux 使用者能更顺利地
游玩 Windows 游戏而不需要开发者制作 Linux 版,Valve 制作了名为 Proton 的另一层
翻译让 Windows 游戏可以直接在 Linux 上执行。
简单来说一般的 Windows 游戏是这样执行的:
使用 Proton 在 Linux 上执行 Windows 游戏长这样:
所以 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:我不会通灵,但是游戏开发真的很复杂,所以短则一天,多则半年都有可能。
以上提供参考,有空的话我会试着多回答点问题,但不保证。