解決策
FromSoftwareはElden RingのPC版をDirectX 12専用で出荷し、効率を考慮したシェーダーコンパイル工程を設けなかった。そのためゲームは新しいアニメーション、敵、爆発の種類ごとにシェーダーをコンパイルするために停止した。Digital FoundryのAlex Battaglia氏は、i9-10900KとRTX 3090を搭載し720pの最低設定で実行する環境でも同じカクつきを確認した。
Valveの既存の「シェーダープリキャッシュ」トグルはすでにプリコンパイル済みシェーダーを配信していたが、VulkanおよびOpenGLのタイトルに限られていた。Steam Deckのレビューが公開された翌日、エンジニアのPierre-Loup Griffais氏は対応中であると発表した。2022年3月7日の月曜夜のSteam Deckアップデートは、人気ゲーム向けの「シェーダープリキャッシュアップデート」の配信を開始し、Elden Ringもその一つだった。これはProton互換レイヤーが携帯機上のすべてのAPI呼び出しをVulkan経由でルーティングするためである。
Ars Technicaはアップデート後に再テストした。Elden RingはDeck上で低・中設定の混在で30fpsの上限を維持し、30未満のフレームタイムの落ち込みは目立たなかった。これはレビュアー自身のWindows PCより滑らかで、そのPCははるかに高いフレームレートに達したが同じカクつきが残っていた。GTA Vも独自のプリキャッシュアップデート後に安定して動作した。この修正はWindowsのプレイヤーには届かない。Vulkanが関与しないため、DirectX 12ゲームではプリキャッシュオプションは利用できない。
達成したこと
すべてのWindowsゲームをProtonのVulkan変換経由でルーティングし、Valveが中央でコンパイルしたシェーダーキャッシュをDeckの単一の固定ハードウェア仕様に配信する。
うまくいった理由
FromSoftwareはカクつきを修正していなかったため、Valveは開発元を待つ代わりにプラットフォーム側から解決した。
既存のVulkan専用プリキャッシュ機能を再利用することで、Protonの変換によりゲームごとの作業なしですべてのWindowsゲームが対象となった。
Steam Deckの固定仕様により、1つのプリコンパイル済みバンドルがすべての所有者に提供できる。これは無限に多様なゲーミングPCでは不可能である。
その結果、400ドルの携帯機がその年最大のローンチ作において3,000ドルのマシンより滑らかに動作した。
応用できること
プラットフォームが互換レイヤーと固定ハードウェアターゲットの両方を制御する場合、開発者の最適化の失敗を中央で修正できる。1つの共有ダウンロードがユーザーごとのコンパイルに取って代わる。
その後
2022年3月7日のアップデートは、人気Steamゲームへのシェーダープリキャッシュアップデートを自動的に展開した。Ars Technicaは、Elden RingがDeck上で安定した30fpsをクリアしたこと(上限なしでは30未満の低下が時折残った)、GTA Vの引っかかりが減ったことを確認した一方、Sonic Generationsの移植版は依然としてカクつくと警告した。プリキャッシュは万能の修正ではない。Windowsのプレイヤーには何も提供されなかった。LinuxとProtonがなければVulkanの経路がなく、FromSoftwareはブログ投稿で「フレームレート現象」を認めただけだった。
出典をたどる
出典
- Valve does what FromSoftware don't, thanks to Steam Deck's precaching update Ars Technica · arstechnica.com ·