進化したEVE:CPU負荷の改善でFPSアップ
パフォーマンスを求めるカプセラの皆さんへ
先日の進化したEVEのブログ記事では、クエーサーにより、SKINRなどの機能管理におけるネットワーク通信の仕組みがどう劇的に改善されるのかを取り上げました。「進化したEVE」をテーマにした各種取り組みにスポットライトを当てたブログ記事シリーズの最後を飾る本記事では、クライアントのパフォーマンスと、3月のリリースを予定しているグラフィックのレンダリング改善についてご紹介しています。
トリニティ
小規模で美麗なダンジョンから数千人のプレイヤーが参加するフリート戦まで、プレイヤーが身を置くことになる状況は多岐にわたります。こういった背景からEVE Onlineならではの技術的問題が数多く生まれ、それらは例外なくEVEをプレイする際の体感や挙動に影響を与えています。
そのひとつが『画面上にすべての要素を表示するにはどうすればよいか』という問題で、EVEではトリニティという独自のレンダリングエンジンを使用することで対処しています。トリニティに限らずレンダリングエンジンは非常に複雑ですが、端的に言えば、ゲームを可能な限り美しくかつスムーズに描画するため、大量かつ複雑な計算をできるだけ迅速に行わなければいけません。
トリニティの場合、遭遇し得る多種多様な環境、特にコンピューターのハードウェアに対応する必要があります。EVE Onlineには旧式のハードウェアを使用しているプレイヤーがいる一方で、ほぼ毎年最新技術を使ったパーツでシステムをアップグレードしているプレイヤーもいるという具合に環境の幅が広いため、EVEプレイヤーの「平均的」ハードウェアというものは存在せず、あらゆるシステム上でしっかりとレンダリングできるようにする必要があります。
ゲームプレイの観点で言えば、EVEはプレイスタイルも非常に多様です。ステーションでトレードを行っている最中のレンダリングはかなり決定論的ですが、ゼロセキュリティ宙域を航行中や大規模フリートによるホットドロップを行っている最中のレンダリングは若干複雑で、そういった状況では多くのアセットをメモリーに同時に読み込み、なるべく高いフレームレートの維持に努めつつ読み込んだ全アセットをレンダリングすることが求められます。
問題をより複雑にしているのは、EVEには22年の歴史があり、さらに新たなアセットが断続的に追加されている点です。10年前に追加されたグラフィック機能は当時のハードウェアを想定していますが、現代的なハードウェアでは大幅に高速に動作します。そしてニューエデン全体で数千種類ものモデルが存在しているため、最新のレンダリング機能をEVEに導入しつつ、既存アセットの処理に支障をきたさないようにすることは時に困難です。
これら諸々を理由として、トリニティの変更は慎重に行う必要があるのです。
パフォーマンス
ファンフェス2023では将来的な変更予定がいくつか発表されましたが、その内のひとつがCPUとGPUの連携方法を変えるGPUベースのパイプラインという技術です。シーンをレンダリングする際は、CPUが何をGPUに送るか突き止めた上で、GPUが処理を行うというのが伝統的なやり方です。リンク先のプレゼンではより詳細に説明していますが、より現代的なレンダリングパイプラインでは全体的にGPUにより多くの計算を任せ、CPUのオーバーヘッドを減らせます。これには以下のような理由で大きなメリットがあります:
EVEは大抵の状況でいわゆるCPUバウンドな処理をしており、GPUではなくCPUがボトルネックとなっています。そういった状況では、CPUの負荷を下げることが非常に有効な対策となり得ます。
現代的なGPUは、この手法を使うことでより多くのフレームをレンダリングできます。こういったGPUはDirectX 12(Windows)やMetal(macOS)のメリットを享受できるため、純粋に処理能力が高いです。
コードベースで機能を追加、変更しやすくなり、カプセラに改善を提供するのが早くなります。さらにゲームに新たなアセットをもたらすアーティストにとっても作業プロセスが単純化されます。
パフォーマンスの向上量は各PCでどんなCPUとGPUを組み合わせて使っているかによって変わり、CPUが十分なデータをGPUに提供できていない場合に最も大きなメリットがあります。これは単にエンジンのアーキテクチャと創発的ゲームプレイの可能性が原因であるため、PCスペックのバランスが取れていてもEVEではかなり頻繁に起こることです。この点についてはクライアントのCPU負荷が極めて高くなり、GPUに余裕があってもフレームレートが低下してしまうフリート戦で気付いている方もいるかもしれません。
バランスが取れた構成の典型的なPCの場合、一連の変更によりパフォーマンスが大幅に向上します。高速なGPUに低速なCPUが組み合わさっているレアケースだと、効果がさらに大きくなる可能性があります。
トリニティに変更を適用する際は、『EVEプローブ』と呼ばれる専用ツールが使われます。ツールの役割は一つで、レンダリングとオーディオのエンジンをテストすることです。これはUIやネットワークスタック、キーボードやマウス入力などEVE Onlineをプレイするのに必要なその他のシステムを含まない軽量なアプリケーションです! これによりライブサーバーのカオスな環境の影響を受けない、信頼性の高い形でパフォーマンスをテストできます。
様々なハードウェアでこのテストを行ったところ、パフォーマンスはDirectX 12環境のFPSで概ね10%から30%向上しました。一部のケースでは向上量はさらに大きく、AMD 6800XTはあるテストでは4K環境で最大52%も向上しました!
一方、macOSでの差異はわずかです。Appleは2020年にM1という名前のSoCをリリースしました。SoCはCPUとGPUの両方が同じチップに搭載されており、M1は通常のWindowsシステムよりもずっと上手く両者が調和し、協力して動作します。またほとんどのmacOSユーザーは高解像度モニターを使用しており、GPUの負担が高くなっています。高解像度(4K以上)環境ではパフォーマンスはほとんど変わりませんが、それより低い解像度(1920x1200など)ではフレームレートが優に25%向上する可能性があります。
以下はPCスペックの例で、それぞれ『EVEプローブ』の最高設定でどの程度の向上が見られたかを示しています:
CPUとGPU | 解像度 | 以前のFPS | 変更後のFPS | FPSの向上量(%) |
i7-7700 CPU & GTX 1060 | 1920 x 1080 | 40 | 53 | +32% |
Ryzen 7 5800X & Radeon RX 6800 XT | 3840 x 2160 | 46 | 70 | +52% |
i7-11700 & RTX 4070 Ti | 3840 x 2160 | 44 | 61 | +38% |
Ryzen 7 7800X3D & Radeon RX 7800 XT | 3840 x 2160 | 60 | 68 | +13% |
Mac M1 Max | 1920 x 1200 | 34 | 43 | +26% |
GTX 1060は登場からほぼ9年目で、最高設定で1,000隻の艦船をレンダリングさせるのはかなり荷が重い処理です。大抵の場合、フレームレートの向上量はグラフィック設定を下げることでさらに大きくなり、ほんの少し設定を調整するだけでこのグラフィックカードでも簡単に60FPSを達成できます。年季とレンダリングする内容を考えると、実に素晴らしいパフォーマンスと言えるでしょう!
パフォーマンス改善のアップデートは3月中にリリースされる予定です。その際はランチャーでDirectX 12を有効化するのをお忘れなく。DirectX 12を利用できない場合、DirectX 11でもわずかな改善を得られるでしょう。
次なる計画
GPUベースのパイプラインへの移行にはトリニティの大規模なリファクタリングを行う必要がありますが、移行が実現すればEVEのさらなる機能開発を行う準備が整い、今後のさらなるパフォーマンス改善やよりリアルなグラフィックの実現を目指せるようになります。影の高精細化とレイトレーシングへの対応など、一部の改善は昨年の大規模テストで体験したことがある方もいるでしょう。トランキリティにリリースする準備はまだ整っていないものの、ああいったテストにより手法の有効性は確認済みです。昨年と先週末のテストにご参加いただいた皆さんに心より感謝申し上げます。皆さんの貢献に大いに助けられています!
GPUをより効率的に使えるようになれば、クライアントが置かれるより多くの状況をGPUが制限することになります。制限と言ったものの全体的なフレームレートは以前より向上し、アップスケーリングソリューションを使えばそういった状況でのフレームレートのさらなる向上が見込めます。後者の詳細についてはまた後日、開発ブログにてご紹介する予定です。
「進化したEVE」の取り組みにスポットライトを当てた今回のブログ記事シリーズは以上となります。EVEの開発の内幕をお楽しみいただけたましたら幸いです。ニューエデンの進化に終わりはなく、開発は常に行われ、改善・前進し続けていることをどうかお忘れなく。それでは常に好奇心を胸に抱き、良き航海を。
o7