パフォーマンスのためにデザイン

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

パフォーマンスに対応するためには、実装するエクスペリエンス を構築する の際に、パフォーマンスに関するベストプラクティスのハンドルフルをたどります。開発ワークフローの後半でパフォーマンス問題を修正することは、多くの時間と努力を必要とすることになります。

低端デバイス

低端デバイス、特にモバイルデバイス、は重度なメモリ限定を持ち、メモリエラーによるクラッシュの可能性があります:

  • 低端デバイスをサポートしたい場合は、特定のパフォーマンス特性を持つベースのデバイスを選択し、開発プロセス全体でエクスペリエンスをテストし、フレームレートとメモリ使用に注意してください。エクスペリエンスで問題が発生する場合、エクスペリエンスで問題が発生する場合、エクスペリエンスで問題が発生する場合、エクスペリエンスで問題が発生する場合、

    たとえば、レンダリング (<

  • Roblox Studio のデバイスエミュレータは、アセプ操作比率とコントロールをチェックするのに便利ですが、メモリ使用率は正確ではありません;当社では、Studio でエクスペリエンスをテストするためにサーバーとクライアントを実行しますが、メモリ使用率は大幅に高くなります。

より一般的に、さまざまなデバイスでテストすると、エクスペリエンスが視覚およびパフォーマンスの期待に対応するかどうかを確認することができます。For a much more detailed example of how you might think about optimizing your experience for low-end mobile devices, see リアルワールドビルディングとスクリプト最適化 .

Header image for Real World Building and Scripting Optimization.

ストリーミングとテレポート

  • インスタンスストリーミング は、Roblox が 3D コンテンツを動的にロードしてアンロードすることができ、大きなエクスペリエンス、特に大きなエクスペリエンスの場合、ストリーミングは参加時間を改善し、メモリーの足跡を減少し、フレームレートを高めます。詳細は、「パフォーマンスの向上」を参照し

  • 大きな場所をより管理可能な場所に分割し、テレポート を使用してプレイヤーをそれらの間に移動します。

素材と複製

  • 内蔵の素材は、カスタムテクスチャよりもメモリを使用して少なくなりますが、ビジョンに一致しない可能性があります。テクスチャの中心にあるテクスチャには、素材を使用できるだけでなく、メモリの予算を節約するために素材を使用することをお勧めします。

  • アセットを作成すると、パッケージに変換されます。パッケージを作成すると、異なる ID のアセットを複製することなく、ワークフローの一部としてパッケージを作成できます。

  • メッシュとテクスチャを追加すると、複製をインポートする代わりに、使用して再利用することができます。サイズを変更、回転、およびオーバーラップすることで、非常に少なく 描画コール を必要とするリッチでバランスの取れた環境を作成できます。詳細は、「レイヤーを削除」を参照してください。

透明度

  • 透明値 0 以外の値を避けてください (透明な) と 1 (見えない) の間で。パーティションの透明度を使用する場合は、高い透明度の減少を避ける必要があります。

スクリプト

  • できるだけ、イベントドライブコードを書き込み、フレームごとの計算を行うこと。60FPS では、各フレームの合計予算は 16.67ms です (ms は、秒単位の小さな値です)。最も小さなフレームの計算でさえ、その予算の大部分を使用できます。

  • 長く実行されているコードを管理可能なチャンクに分割する方法を見つけます。コードの 1 つのパイースが 100 ms をかけて実行され、その後、すべてのフレームで実行するため、エクスペリエンスは 10 FPS で実行できます。エクスペリエンスが通常 60 FPS で

    代わりに、コードをどう壊すかを調べてください。たとえば、1フレームあたり5msのワークを実行でき、task.wait() を使用し、20フレームごとに完了した計算を持つことができます。マルチスレッド、多くの場合、並列 Luauと呼ばれるものもあります。

  • 次のイベントが発動したときに機能が不要になるようにするには、RBXScriptConnection:Disconnect() メソッドを使用します。

  • 値が必要なときに毎回同じメソッドを呼び出すな。メソッドを 1 回呼び出し、値をストアし、必要に応じて後で上書きします。

  • Class.ReplicatedStorage にすべてを保存しないでください。クライアントは、このコンテナ内のすべてを読み込みます。代わりに、ServerStorage を使用して、クライアントがアクセスしない必要がないものについては、Class.ServerStorage を使用してください。