エクスペリエンスを最適化する

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。


エクスペリエンスの最適化 は、メモリとグラフィック処理ユニット (GPU) 制限を持つデバイスのフレームレートとパフォーマンスレベルを高く維持するために、アセットと Studio 設定を構成するプロセスです。このプロセスにより、ほぼすべてのユーザーが環境を見ている間、同じゲームプレイとビジュアルエクスペリエンスを持つことが保証されます。

環境アートの 環境アート - 最適化.rbxl ファイルを参考として使用して、この環境アート教育セクションでは、次の指示を含む場所ファイルのレビューと構成方法を最適なグラフィックに示します:

  • 各アセットの物理パラメータとレンダリングパラメータをレビューして、メモリとエンジンパフォーマンスを保持していることを確認する
  • アセットをレンダリングするために Roblox エンジンが不必要に行う計算量を増やす余分なテクスチャ、ジオメトリ、または透明度を削除すること

Roblox エンジンがほとんどの最適化作業を処理している間、マイクロプロファイラー を使用して、特定のフレームをレンダリングするのにどれほど時間がかかるかを確認することで、これらの最適化作業に助けることができます。この情報を使用して、パラメータまたは余分なコンテンツに関して注目が必要なアセットを決定できます。

物理とレンダリングパラメータをレビュー

In アセットライブラリを組み立てる で、アセットがメモリとGPUの制限のあるデバイス間で高い視覚品質を維持できるようにする物理パラメータとレンダリングパラメータを設定することの重要性を学びました。しかし、環境を構成して、アセットのコンテキストポジションとエクスペリエンス内の目的に従ってこれらのパラメータを調整するのは一般的です。たとえば、最終サンプルレーザータグ環境の葉の多くは、環境のリアリティを向上させるため、パフォーマンスコストにもかかわらず影を投げかけます。

物理とレンダリングパラメータを変更すると、開発プロセスの終わりにすべてのパラメータをレビューして、見た目の目標とゲームプレイ要件を維持しながらパラメータを最適化できる場所を確認するのが便利です。イラストレーションするには、ゲームプレイエリアの端にある葉のBasePart.CastShadowプロパティを無効にして、ユーザーのゲームプレイまたはビジュアルエクスペリエンスに干渉せずに、パフォーマンスを保存できます。

不必要なコンテンツを削除する

物理とレンダリングパラメータをレビューした後、アセット自体をレビューして、ゲームプレイに影響しない体験から非必要なコンテンツを削除できる場所を確認できます。たとえば、異なるアセットIDを持つ同じテクスチャ、複雑な幾何学、カメラビューによって重なる透明度などです。次のセクションでは、このコンテンツをレビューするためにできることと、なぜ最適化努力に役立つかを説明します。

重複するテクスチャを削除

アセットを開発し、環境を構築する間の移行では、あなたの美的目的またはゲームプレイ要件に必要なものを見つけるときに、メッシュやテクスチャを反復することが一般的です。アセットを パッケージ に変換しない場合、これらのイテレーションをStudioにインポートすると、Robloxエンジンがアセットを環境内でレンダリングする際に参照する必要があるユニークなアセットIDが作成されます。

たとえば、次の 2つの消火栓メッシュをスタジオに別々にインポートした場合、外見が完全に同じであっても、Roblox エンジンはそれらを唯一のアセットIDを持つ 2つのオブジェクトとして処理します。エンジンが行う必要があるユニークな呼び出しが多いほど、メモリとパフォーマンスに与える影響が大きくなります。このため、アセットを複数回再使用するときに確認することが重要であり、そのアセットの各インスタンスは同じアセットIDを使用し、エンジンはそれを繰り返しレンダリングするために単一の呼び出しを行う必要があります。

Two of the exact same fire hydrant with unique assetIDs. There is no visual difference but the duplicate assetIDs negatively impacts performance.

ジオメトリを最適化する

デバイス間のフレームレートを増やすためにさらに調整が必要な場合、次のいずれかでジオメトリを最適化できる場所を確認すると便利です:

  • メッシュのグループを単一のアセットに結合する。
  • 幾何学的複雑さを持つアセットのポリゴン数を減少する。

この最初の技術を拡張して、エクスペリエンスのユニークなアセットはすべて、Roblox エンジンにシグナルを送り、GPU に情報を呼び出すために GPU に呼び出される GPU のドローコールを表します。よりユニークなアセットが多ければ多いほど、システムが行う必要のあるドローコールが増えます。この理由から、エクスペリエンスに大きなコンポーネントを構成するメッシュのグループがある場合は、第三者モデリングツールでグループ化して、複数のドローコールの必要性を減らすことができます。

この点を説明するために、最終のサンプルレーザータグ環境の親は、複数のパーツとメッシュを組み合わせて、建物の外に大きな塔を作成します。これらの個々のコンポーネントをすべて組み合わせると、1つのアセットIDで1つのアセットにすることができ、ドローコールの数を 8 から 1 に減らすことができます。しかし、この技術は、各コンポーネントの視覚的および物理的特性を自由に変更できる能力を削除することが重要です、例えば、その位置や素材などです。

たとえば、次の画像では、左のタワーは Model オブジェクトの複数のアセットを維持し、右のタワーは単一のアセットです。左塔の各コンポーネントを個別に変更できますが、右塔を変更すると、例えば色を黒に変更すると、オブジェクト全体に影響します。これが理由で、あなたの美的目標に影響を与えずにパフォーマンスを向上できる場所を知っているときにのみ、この技術を環境開発の終わりに考慮することが重要です。

A front view of the two towers. The tower on the left includes multiple assets under a single model, while the tower on the right decreases the amount of assets by removing all texture objects.

2番目の技術を拡張して、幾何学的複雑さを持つアセットには、より多くのポリゴンがあり、つまり、エンジンがビジュアルの外観を計算するときに必要なより多くのベクトルがあります。これは、複雑性と忠実度が少ないアセットはレンダリングにコストがかかりにくく、パフォーマンスとメモリの両方が向上することを意味します。

レイヤー透明性を削除する

環境にリアル感を提供するために、最終サンプルレーザータグ環境には、屋外スペースの紅葉、未来的な標識またはプランターレールのガラスのような、透明度の異なる多くのメッシュが含まれています。カメラが、互いの前後にある半透明のオブジェクトを複数見ると、Roblox エンジンは透明な領域を考慮するために、オーバーラップするピクセルを複数回レンダリングする必要があります。このプロセスは、高透明度のオーバードローと呼ばれ、パフォーマンスに大きな影響を与えます。

たとえば、サンプル環境のプランターの次のビューを考えてみましょう。エンジンは、カメラに最も近い植物の葉の透明な領域を、層ごとに屋外エリアに最も近い植物にレンダリングし、何百万ものオーバードロップされたピクセルに相当します。この影響を軽減するには、環境内の半透明オブジェクトのレイアウトを確認し、特に画面の大きな領域で多くの重複がある場所が多すぎないようにします。

A Rthro avatar facing a planter with multiple plants with transparency between the leaves.
A side view of the Rthro avatar facing a planter with multiple plants with transparency between the leaves, and example layers of overdrawn pixels are highlighted to show where there is overdrawn in the environment.

すべてのコンテンツをレビューして、デバイス間で最適化されているかどうかを確認したら、エクスペリエンスは公開の準備が整いました!