マルチプラットフォームのPCゲームがリリース時にパフォーマンスの問題を抱えていることが多くなったという話題を少し前に取り上げた。
海外メディアのDigital Trendsは最近、「2023年のPC移植版がゴミのようになってしまっている理由を開発者に説明してもらった」という記事を公開した。
※最近のPCゲームで何が起きているのかは下記の記事を参考に。
Digital Trendsは、Unity CreateのSVP兼ゼネラルマネジャーMarc Whitten氏、Hi-Fi Rush及びサイコブレイク2のゲームディレクターJohn Johanas氏、さらにHi-Fi Rushのプログラマー宮下英主氏、Hi-Fi Rushリードグラフィックプログラマー田中康介氏らに、ゲームの最適化に関するインタビューを行った。
以下でインタビュー内容の要点をまとめた。
- 開発者はプレイヤーと同じようにパフォーマンスの問題を懸念している
- PCの多様な構成のために、予期せぬ問題が起こることがある
- OSの種類、ドライバーのアップデート、温度、遅延、ユーザーによる設定の違いなど原因は様々
- ゲームのテスト不足そのものが直接の原因ではない
- 通常、開発期間全体を通して広範な環境でテストされている
- バックグラウンドで起動しているアプリが原因になることもある
- 開発予算の制限により、現実的に対応可能なスケーラビリティには限界がある
- PC版は最適化が難しいために、WindowsではXboxクイックレジュームのような機能を使うことができない
- Hi-Fi Rushのアニメ調のグラフィックを見て、「このゲームはどんなPCでも動きそうだ」と思ってしまう人がいる可能性がある
- 実際には、Hi-Fi Rushでは多くの処理が行われているため負荷は大きい
- リズムゲームかつアクションゲームなので60fpsを維持することが目標で、それを下回ると音が同期されない問題が発生し、ゲーム体験が低下する可能性があった

Hi-Fi Rushのパフォーマンス最適化の実例
- Hi-Fi Rush最適化の柱は、VRAMを注意深く監視すること、非同期処理、PSOキャッシュ
- 開発のあらゆる段階でVRAMの使用状況を監視していた
- 各レベル(ステージ)だけでなく、各アートセクションのVRAM使用量の監視も含まれる
- 予算内で、テクスチャやメッシュのメモリ使用量を減らすようにグラフィックアーティストに依頼するのは珍しいことではない
- Hi-Fi Rushではノーマルマップ、ラフネスマップ、メタリックマップなどの従来のPBRテクスチャを必要としなかったため、メモリ使用量を減らしやすかった
- Ghostwire: Tokyoを最適化した経験から、Hi-Fi Rushにおけるスタッタリングに対処する方法を学んだ
- Unreal Engine 4の機能「PSO(パイプライン ステート オブジェクト)キャッシュ」は自動的に実行されない
- PSOキャッシュは、ゲームを実行する前にシェーダーをプリコンパイルしてスタッタリングを軽減するUnreal Engine 4の機能
- ゲームプレイ中にシェーダーをコンパイルする必要が生じると、スタッタリングやカクつきが発生する
- いくつかのポストプロセスとVFXでスタッタリングが起こった
- PSOキャッシュで全ての問題が解決するわけではない
- Hi-Fi Rushでは、シェーダーをゲームスレッドとは別のスレッドでコンパイルする非同期コンパイルを使用した
- Unreal Engine 4をゲームエンジンに使っていること自体が問題になることもあった
- 同じエンジンを使用しているスターウォーズ:ジェダイ・サバイバーやRedfallで見られたように、Unreal Engine 4はCPUの多数のスレッドにスケーリングするのを苦手としている
- マルチスレッドへの対応の難しさはゲームエンジンのアーキテクチャによって変わってくる
- 残念ながら、Unreal Engine 4はこの部分において不十分だった
- Unreal Engine 4では、アクター(オブジェクトやキャラクター)とウィジェット(UIやオーバーレイ)の作成が同じCPUスレッド上に配置される
- 例えば、新しいキャラクターを読み込む時にスレッドが優先されることにより、ゲームスレッドを長時間ブロックしてしまう結果に繋がる
- Hi-Fi Rushでは解析ツールを使い、CPUが何をしているのかを正確に特定し、ゲームの速度が低下しないように、タスクを別のスレッドに移動させるようにしている
- 処理の特定はリソースの読み込みにも役立つ
- Dead Spaceのようなゲームに存在するストリーミングスタッターの落とし穴を回避できる
Digital Trendsは、近年のPCゲームのリリースが以前とは異なることに言及している。
- PS3世代の頃は、まず1つのゲーム機にだけ発売され、その数カ月後、数年後に他のプラットフォームでリリースされていた。
- PS4世代では、まず2種類の家庭用ゲーム機で発売され、その数カ月後にPCでリリースされていた。
- しかし、今では3種類のプラットフォームで同日に発売され、場合によっては5つ以上のプラットフォームで同じ日にリリースされるようになった
- 発売日を遵守するために、最適化のために割ける時間が少なくなっている
また、開発者はこれらの問題を認識しており、ユーザーと同じく解決を望んでいるため、ゲーム開発者に対して怒っても意味はなく、パブリッシャーに「壊れたゲームを発売するよりも、延期した方がマシ」と伝えるべきだとしている。
Digital Trendsは、PCゲームの最適化問題は時間の経過と共に解決されると予想している。一方で、根本から解決されるまでには数年を要する可能性が高いとのこと。

I asked developers to explain why PC ports in 2023 run like garbage
Nearly every major PC port has run into issues this year. Why? I asked some developers to find out.





コメント
やっぱりUnrealEngineのゲームだと重いってのは本当だね。
グラが大したことないのに動かないのはおかしいって考える人は多いからなぁ
アニメ調だと特にそう見られやすい
UnrealEngine5ではCPUの使い方が下手な部分は改善されてんのかな?
最後の段落はとても的確