ツールが導入されました。フォートナイトのモバイルリリースで必要不可欠なツールでした。ツールを使うことで、ポリゴン数、ドローコール、マテリアル複雑度によるレンダリングコストを削減して、大幅にパフォーマンスを増加することを可能にします。モバイルとコンソール向けにコンテンツを最適化する際にも非常に役に立ちます。ゲームズのテクニカルアーティストとエンジニアがどのようにこの素晴らしいソリューションを開発したかについて説明します。建築と破壊がどのプラットフォームでも同じような外見で機能することを支えているのはこの機能です。欠かせない特徴になっています。クロスプレイを実装する際に、どのプラットフォームのプレイヤーも公平に勝利のチャンスを得ることができるようにすることが必要不可欠でした。そのために、フォートナイトチームはドローコール数を削減したり、一度に画面に表示されるオブジェクト数を削減する方法を探す必要がありました。メカニズムでのパフォーマンス問題を克服するためです。建物がどのように構築されているかを理解する必要があります。各建物は、お互い簡単に「スナップ」し、必要に応じて構造を作成できるモジュラー構造のピースの組み合わせで作られています。このモジュラー構造のアプローチを取ることによって、建物に必要となるユニークアセットの数を削減し、メモリといった貴重なリソースを節約できます。様々なモジュール構造のピースは、マテリアルやテクスチャも変更して使い回すことができます。これによって追加のオブジェクトをメモリに読み込むことなしに、無限の建物バリエーションを作ることができます。モジュール構造によって実現できるバリエーションのサンプル画像が以下になります。アクタから構築されています。このように建物を構築することで、プレイヤーによる破壊を表示することも非常に簡単になります。破壊を表現するには、破壊されたピースのレンダリングとコリジョンを無効にすればいいのです。コンソールでもうまく機能するのですが、モバイルといったパワーが足りないプラットフォームでは問題になります。個々のピースをレンダリングするコスト自体が問題になってしまうのです。画像では、典型的な建物を構成しているピースがいかに多いかがわかります。以下に抑える必要があるようなスマートフォンでは大問題です。全体としての建物の次には、各コンポーネントと、破壊表示での役割を見てみましょう。以下のフローチャートの順番に説明をします。モジュール構造アプローチを使っていますが、やがて一画面に同時に存在するオブジェクト数のハードリミットに直面することになります。このハードリミットはドローコール数です。各プラットフォームで一度に表示が可能なドローコール数は異なっているため大きな問題になります。使用される各スタティックメッシュに複数のレベルオブディティール(LOD)スタティックメッシュを持たせる必要があります。LODは一般的にビデオゲームで使用されている最適化テクニックで、スタティックメッシュがカメラから距離が離れている場合に三角ポリゴン数が少ないバージョンのスタティックメッシュを表示することで最適化を行います。建物で使用されているモジュラー構造の壁の一つです。壁に非常に近い位置にいると、画像の一番左側のスタティックメッシュが表示されます。画像のように別のLODモデルが表示されていくようになります。この最適化手法を建物全体に適用すると、以下の画像のような表示になります。上の画像の左側は元々の建物です。右側の建物は望ましいのですが、それでも一部のプラットフォームでのレンダリングにおいてはピース数が多すぎます。この問題に対応しつつ、プレイヤーによる破壊を表現できるようにするには、新しいツールと共に、「昔ながらの」スタティックメッシュ制作テクニックが必要になります。ついてもう一度確認しましょう。これは特別な方法で作成されたものです。強制的に表示されると、以下のような表示になります。いうところに注目してください。この数字はただ小さいものに見えると思いますが、実はデジタルコンテンツ制作ツール(DCC)で同じ大きさのキューブを作成した時よりも低い値になっているのです。次の画像では、同じモジュラー構造のピースをDCCで作成しUE4にエクスポートしています。個くらい増えてもそんなに変わらないと思うかもしれませんが、この差分は累積していきます。個の追加の頂点が増えてしまいます。個の追加頂点になってしまいます。した追加の頂点を取り除くために、モジュラースタティックメッシュでは以下の調整を行っています。スムージンググループを使わなくてよいピースではスムージンググループをまったく使わないように設定します。アイランドができる限り少なくなるように設定します。UV空間全体にマッピングされています。それから、側面部分はすべてウェルドで接続し現在のピースの設定に合う縮尺にします。最後に、垂直面のスムーズ化アーティファクトができる限り起きないように法線を調整します。これらの調整が終わったら、修正済みのピースをエクスポートします。既存のピースを上書きするように修正済みピースをインポートします。対して適用されています。次のセクションではプレイヤーによる破壊表現のためにどうしてこれらが必要なのかを説明します。使用して、新しいバージョンの建物を生成します。以下の画像のようなものです。MHLODと呼んでいます。単一のスタティックメッシュとテクスチャにまとめたものです。建物表示に必要な三角ポリゴン数を大幅に削減できます。これはスマートフォンといった比較的ローエンドのデバイスでは大幅な改善になります。メートルほど離れた時のみ表示されます。建物が使用するマテリアル数も削減できます。建物をレンダリングするのに必要なリソース数をさらに削減できます。遠くへこれから説明する内容はプレイヤーによる破壊とは関係ありませんが、それでも役立つ内容です。プレイ中に、非常に遠くの建物をみると、破壊の様子が表示されていないことに気がついたかもしれません。使って生成されたものだからです。削減するために使用されています。ここで生成された建物はプレイヤーによる破壊を表現していませんが、カメラから非常に離れた場合の建物のレンダリングコストを削減するためには重要になります。ポリゴンだけではよい見た目にはなりません。ポリゴン版の建物は非常に遠い場所から見ることになるので、プレイヤーから見て実は上の画像のようだったと判別するのは非常に難しいでしょう。このGIFでは、プレイヤー視点で、建物が一番多いポリゴン数のバージョンから単純化したものまで切り替わる様子を見ることができます。建物の構成と使用しているツールを、そしてなぜツールが使われているのかを理解したので、これらをどのようにプロダクションで使用できるツールとしてまとめたのかについて話し始めることができます。メッシュが表示されている時にどうやって破壊を表現するかを見ていきましょう。建物を変更せずにプレイヤーによる破壊を表現しないといけないということです。ある利点がなくなってしまうからです。これは複雑な問題です。特別な種類の開発者の助けが必要になります。ここでテクニカルアーティストの助けが必要です。テクニカルアーティストという職種に馴染みがない方向けに説明すると、テクニカルアーティスト(TA)はアーティスト、プログラマ、デザイナーが一人にまとまっているような人です。開発中に湧き上がる多くの問題を解決することができます。呼ばれるのには理由があります。一般的にビデオゲーム制作で必要なすべてのシステムとツール、そしてそうしたシステムの繋がりをよく理解しているからです。分解と破壊こうした問題への解決策を探す時には、まず問題を基本的な構成要素に分解する必要があります。関係している要素について理解を深めることで、少しずつ成功に近づくことができます。破壊表現の問題を以下の要素に分解しました。クラスに追加しました。作成する際に、建物を構成しているアクタに順不同のインデックスを割り当てました。テクセルを割り当てられるほど大きなレンダーターゲットを用意します。LODのコピー機能と、生成されたスタティックメッシュにカスタムの頂点カラーを追加する機能を追加しました。値を持つことができて、ここでは必要以上の量のはずです。値を読み込んで、対応した値をテクセルに書き込みます。メッシュの状態を変更せずに建物パーツを破壊します。ピクセルのドローイベントを行うだけです。プロトタイプを作って検証を行いました。思ったとおりに動くのか、またアイデア段階に戻る必要があるのか確かめるためです。幸運にもこのアプローチは魔法のように成功しました。プロトタイプが動作したので、次はツールプログラマに渡して制作で使用できるツールにしてもらいます。再構築してもらいます。再構築する道を選びました。中にまとめて追加することも可能になりました。再構築がおわると、下の動画のようにゲーム内でテストできるようになりました。ゲームズのテクニカルアーティストとエンジニアがどのように取り組んだかについて理解が深まったのなら幸いです。プレイヤーが繰り広げる破壊のシンフォニーは不可能だったでしょう。リリースにこの記事で紹介したツールが含まれているということでした。エンジンのコミュニティがこれらのツールを活用するのを非常に楽しみにしています。ツールの詳細については以下のドキュメントを参照してください。プロジェクトのパフォーマンスを向上させる方法として開発されました。ツールはシーンでレンダリングされる必要のあるアクタ数を削減します。毎フレームのドローコール数を減らすことでパフォーマンスを向上します。ニュース、アンケートならびに特別オファーを受け取ることに同意したものとみなします。elsewhere.サービス利用規約プライバシーポリシ。