Ubisoft Reflectionsは、先週のDevelop Conferenceの2日目を締めくくり、「次世代への移植のためのヒントとトリック」と題された興味深い講演で締めくくられました。 Digital Foundryの場合、それは主にXbox OneとPlayStation 4でプレイするマルチプラットフォームゲームの大多数、そしておそらくすべてが年末までにプレイされているため、必見のプレゼンテーションでした。コード、新しいハードウェアへのある程度の移植が必要です。
特に、合理的に強力なコンピューターを持つPCゲーマーである場合、それは興味深い状況です。昔々、ハードウェアはポーティングターゲットであり、回心に最小限の労力しか行われていませんでした。現在、PCはリードプラットフォームです。 E3 2013は、開発者向けの最終生産コンソールハードウェアの可用性が非常に限られており、多くのゲームが「ターゲット」PCシステムで実行されているコンソールハードウェアを運営することを非常に実証しました。ゲームが開発に2年以上かかり、実際のコンソールハードウェアが最近まで利用できなかったという理由だけで、開発の取り組み中にPCがセンターステージを使用することは理にかなっています。
Ubisoftの非常に有望な次世代レーサーであるクルーは、先月E3デビューを獲得し、PCハードウェアで最初のゲームプレイデモを実行しました。それはex-から作成された新しいプロジェクトですテストドライブ無制限新しいスタジオ - アイボリータワーを設立し、ゲームのコアPCバージョンを制作しているスタッフ(そして、Xbox Oneバージョンが疑わしい)を作成しています。ただし、ここで興味があるのは、PS4エディションを完全に担当しているのは英国を拠点とするUbisoft Reflections Techチームであり、ニューカッスルスタジオの他のスタッフがゲームの追加コンテンツを作成することです。 、テキサス州全体。
PS4スタッフにとって、それらに直面しているタスクはかなり面倒に見え、開発者が完全に独立したスタジオによって生成された巨大なコードベースを取り入れているため、単に新しいSonyハードウェアにコンパイルして、何らかの種類の画像をオンにしようとする最初の目的は単純に目的です。画面。
「私たちは大きなコードベースから始めました - 約12,000個のソースファイルがありました。そして、D3D11を使用して64ビットのウィンドウバージョンのエンジンから始めました」とReflectionsのエキスパートプログラマー(はい、実際の役職です)、Drは言います。 。
「64ビットバージョンから始めることが重要です。明らかに[PS4]ハードウェアは64ビットなので、プラットフォームの詳細を心配する前に、これらの32ビット/64ビットの問題を邪魔にならないようにすることができます。私たちの仕事の最初の目的は、PS4バージョンをWindowsバージョンの特徴に導くことでした。」
SonyはPS4ハードウェアのアクセシビリティについて大したことを行っており、その重要な要素は、コンパイルされたコードを作成するために使用される一連のプログラムであるツールチェーンの品質です。 PS4開発者にとって、確立されたビジュアルスタジオ環境の使用は重要な利点であり、ソニーがクロスプラットフォームのゲームメーカーを認め、サポートしている程度は自明です。 Sonyのコンパイラ内には、DirectX 11ゲームのコンパイルに使用されるMicrosoftのカウンターパートとの互換性を高めるために、特別に追加されたオプションもあります。
「ゲームを動作させるのに間違いなく役立ったことの1つは、エンジンが非常に多くのミドルウェアを使用していることです。ミドルウェアサポーターはPS4で非常に活発であるため、利用可能なすべてのミドルウェアのバージョンがあります」とジェンナーは続けます。
「SDKが変更するにつれて統合するには少しの作業と少し時間がかかり、あなたが目指しているミドルウェアの新しいバージョンを取得するため、フルタイムの仕事のように感じることがありますが、プラットフォームが落ち着いて、 SDKの変更は、発売に近づくことがそれほど重要ではなく、問題が少なくなります。」
「私たちは大規模なコードベースから始めました - 約12,000のソースファイルがありました...私たちの作業の最初の目的は、PS4バージョンをWindowsバージョンのパリティを搭載することでした。」
より重要なのは、PlayStation 4の8GBのRAMがどのように利用されるかです。この統一されたプールは、PCやPS3などのプラットフォームよりも大きな利点があり、CPUとグラフィックスラムは、2つの完全に別々のメモリプールの形をとっています。 PS4は、2つの別々のメモリバスを使用して、メモリがCPUまたはGPUに割り当てられるシステムを操作します。
「タマネギと呼ばれるもの、ガーリックバスと呼ばれるもの。タマネギはCPUキャッシュを通してマッピングされています...これにより、CPUはメモリに適したアクセスを可能にします」とジェンナーは説明します。
「ニンニクはCPUキャッシュをバイパスし、グラフィックプログラミングに適した非常に高い帯域幅を持っています。これはGPUにまっすぐ進みます。そこに置くものに基づいてメモリを割り当てる方法について考えることが重要です。」
Jennerは、機密保持契約のために各バスで利用可能な帯域幅のレベルについて詳しく説明しませんが、当社の情報に基づいて、GPUはニンニクを介してPS4のGDDR5の176GB/s帯域幅に完全にアクセスできますが、タマネギは20GB/s領域のどこかで大幅に低い量(このExtremetech分析PS4 APUの読み物はよく読みます)。より制約されたCPU領域の正確な数値が何であれ、ジェンナーはそれが「十分」であることを確認するだけです。チームがコードコンパイルを取得することができたら、PS4バージョンの乗組員を最適化すると、メモリの各領域に最適なデータを決定するために、いくつかの深刻な作業が必要でした。
「私たちが抱えていた最初のパフォーマンスの問題はメモリを正しく割り当てることではありませんでした...したがって、オニオンバスはシステムのものに非常に適しており、CPUによってアクセスできます。ニンニクはリソースをレンダリングするのに非常に適しており、多くのデータを取得できます。 GPU」、ジェンナーは明らかにします。
「私たちが抱えていた問題の1つは、ニンニクにシェーダーの一部を割り当てたものの、一定の執筆コードが実際にシェーダーから何かを読んで、それが書くことを意味するものを理解する必要がありました。 CPUキャッシュを通過していないため、非常にゆっくりと読みます。
したがって、メインシステムヒープ(ゲーム変数のメインストアを含む)、キーシェーダーデータ、およびCPUで読み取る必要のあるレンダリングターゲットなどの要素は、頂点やテクスチャデータ、シェーダーなどのよりGPUに焦点を当てた要素などのより多くのGPUに焦点を当てた要素に割り当てられます。コードとレンダリングターゲットの大部分は、超幅のニンニク記憶に保持されます。
より重要な問題は、PS4ツールチェーンがPCで作業している人に馴染みがあるように設計されているが、新しいSonyハードウェアはDirectX APIを使用していないため、Sonyは独自の2つを提供していることです。
「グラフィックスのAPIは真新しい - 彼らはレガシーの荷物を持っていないので、彼らは非常にきれいで、よく考えられており、ハードウェアを本当によく一致させています」と、Reflectionsの専門的なプログラマーSimon O'Connor氏は言います。
「最低レベルでは、GNMと呼ばれるAPIがあります。これにより、GPUをほぼ完全に制御できます。これにより、物事のプログラミング方法に多くの潜在的なパワーと柔軟性が得られます。そのレベルでGPUを運転することは、より多くの仕事を意味します。」
ソニーは、下位レベルのAPIについて話しましたGDCで、しかし、その名前を公開しないので、少なくとも今はそれが何と呼ばれるかを知っています(PS3相当はGCMです。それは価値があるものです)が、開発をより簡単にすることになっているソニーが提供する「ラッパー」コードはどうですか?
「ほとんどの人は、GNMを包み込み、D3D11のようなプラットフォームに慣れている場合ははるかに馴染みのある方法でより難解なGPUの詳細を管理するGNMX APIから始めます。 O'Connor氏は次のように述べています。GNMXは操作がはるかに簡単ですが、PS4 GPUへのカスタムアクセスの多くを削除し、重要なCPUも発生します。打つ。
下位レベルのGNMへの移動には多くの作業が行われ、その過程で、技術チームは、メモリの割り当てとリソース管理の観点から、DirectXがバックグラウンドでどれだけの仕事をするかを知りました。 O'Connorが説明するように、GNMに移ることは、開発者が自分でそこに負担をかけなければならなかったことを意味します。
「乗組員はD3D11機能セットのサブセットを使用しているため、サブセットはPS4 APIに簡単に移植可能なものです。ただし、PS4はコンソールではなく、D3Dによって行われる多くのことが行われます。 PCでは、自分でやるべきことを意味しますが、システムで何ができるかをより多くのコントロールを提供します。」
ゲームのもう1つの重要な領域は、プログラム可能なピクセルシェーダーです。リフレクションの経験は、PlayStation Shader Language(PSSL)がDirectx 11のHLSL標準と非常に類似していることを示唆しています。より複雑な違いについては、「交換してください。
「SDKは常に変化しています...私たちは最終的な状態に近づいています。私たちは大きなパフォーマンスの変更を期待しておらず、機能の最終化だけです。」
Ubisoft E3イベントでは、乗組員のPCバージョンは1秒あたり30フレームで実行されていましたが、PS4コードベースの最初の作業編集はそれほど熱くなく、約10fpsで動作しました。
「PS4 SDKには、非常に早い段階で使用した素敵なCPUプロファイリングツールが付属しています。これは、コードの高レベルのボトルネックがどこにあるかを見つけるのに非常に役立ちました」と、Chris Jenner氏は言います。レイザー。
「私たちのゲームは、2つのメインCPUスレッドを持つようにアーキテットされています。1つはシミュレーションを実行しています。もう1つはシーンを描画し、並行して実行しています。これらのスレッドは両方とも、余分なプロセッサにフォークアウトして、実際に多くの実行を実行できます。並行して作業します。」
おそらく驚くことではないが、特にプログラム可能なピクセルシェーダーをセットアップするという点で、ボトルネックであることが証明されたレンダリングスレッドでした。「定数」が主な問題です。定数は、頂点やテクスチャではないシェーダーに提供されるデータ - オブジェクトの位置、日光の色、または骨格的にアニメーション化されたオブジェクトの骨の正確な位置などの要素です。シェーダーは、これらの定数の数十から数百の定数から何かを必要とし、最新のゲームでシェーダー作業の量を考慮に入れると、重要なボトルネックを提示できます。
「これを修正するためのいくつかのソリューションがありました。そのうちの1つは、レンダリングスレッドで定数の設定に費やす時間を短縮することでした。もう1つは、コマンドバッファ生成をマルチスレッドすることにより、異なるコア全体にバランスを負うことでした」と言います。ジェンナーは、すべてのCPUコアがメインメモリにアクセスできるという事実により、これがPS3よりもはるかに簡単であることも明らかにしています。
「私たちがしたもう1つのことは、一定の設定を見ることです。GNMXは、Sonyのグラフィックエンジンです - は、GPUに行く必要があるすべての定数を設定するすべての定数を処理する定数アップデートエンジンと呼ばれるコンポーネントを持っています。多くのCPU時間を取り上げていました。エンジンがデータにどのようにアクセスするか、そして物事をより汎用の実装よりも更新する必要がある場合についての知識...したがって、実際にこれを当時のバージョンよりも速くすることができます。」
一般に、パフォーマンスの観点から見ると、SonyのSDKは、Microsoftの同等物とは対照的に、現在必要な場所であるようです。技術はまだ非常に重要な改善に取り組んでいますこれにより、GPUスループットが改善されます。 Reflectionsチームに、ソニー開発環境の改訂された改善されたバージョンによって最適化の取り組みが支援されることを期待するかどうか尋ねました。本質的に、GPUの「ドライバー」はまだ最適化されていますか?
「SDKは常に変化していますが、6か月前よりも速く変化していません」とChris Jenner氏は言います。
「私たちは最終的な状態に近づいています。パフォーマンスの大きな変化は予想されておらず、機能の最終化だけです。早い段階よりもはるかに安定しています。しばらくの間、変更を行う必要はありませんでした。」
基本的な移植が完了すると、Ubisoft Reflectionsチームは現在、2014年第1四半期のリリースの準備ができているPS4ゲームを完了するためにスタッフを増やしていますが、クルーをPlayStation 4に移動するコアエンジニアリングの取り組みは、6か月で6か月で達成されました。わずか2〜3人のチームに取り組んでいます。全体として、反省は、PCコードベース上に移植するプロセスがかなり単純で簡単であると感じました。
私たちが見つけられなかったのは、Xbox OneバージョンがどのようにFARINGであるか、または誰がそれを生産しているかです。私たちの賭けは、2つのプラットフォームでDirectX 11 APIを使用しているため、PCバージョンと並行してそれを作成するIvory Tower Studioにあります。しかし、Xbox OneとPS4はどちらもアーキテクチャの観点から多くの共通点を持っています。また、コンソールチーム間のコラボレーションについての質問は、両方のコンソールバージョンに共通する最適化をもたらします。
Simon O'Connorは、リフレクションが乗組員の作業を、シンプルでフィーチャーコンピューターポート以上のものになると考えていることを指摘しました。これは、新しいハードウェアが利用できるものを探る機会であり、PlayStation 4のグラフィックスハードウェアが完全に活用されていないという感覚があります。
「PS4のGPUは非常にプログラム可能です。そこにはまだ多くの力があります。それで、私たちがやりたいのは、レンダリングのためのPS4固有のものですが、理由の範囲内で - それはクロスプラットフォームゲームなのでPS4固有のことはできません」と彼は明らかにします。
「私たちが検討したいことは2つあります。非同期計算で実際に並行してコンピューティングジョブを実行できる場合...私たちは、フラグメント加工ハードウェアへの低レベルのアクセスを持っています。アンチエイリアスと他のいくつかの効果。」
Xbox 360/PS3 ERAの開始時の標準的な移植プロセスは、リードプラットフォームをターゲットにし、その後のポートの機能を削除するか、あるいはパフォーマンスにヒットした場合のように思われました。マルチプラットフォームの次世代タイトルでは、コンソールがリードプラットフォームのステータスではなくターゲットを採用していますが、新しいマシンがさらに多くのことができるという認識が明らかになり、プラットフォーム固有の機能を探索することで多くのことを得ることができます。リフレクションが実際にPCバージョンで機能パリティを達成し、マークセルニーの「スーパーチャージドPCアーキテクチャ」の強みに合わせてコードベースを調整できる場合、乗組員は注意すべきです。