This document is about: QUANTUM 3
SWITCH TO

設定

概要

物理設定は、シーンに関連付けられたMapアセットのQuantum Map Dataスクリプトや、Quantum RunnerスクリプトにリンクされたSimulation Configアセットから編集できます。
Mapの設定はそのシーン固有ですが、Simulation Configの設定は複数のシーンで共有されます。

Map Data

シーンのプレイ可能エリアに関する設定は、シーンのQuantumMapDataスクリプトか、AssetフィールドのQ Asset Mapにあります。

Adjust the World Size accordingly to the Playable Area
シーンのMapDataスクリプトに表示される物理設定

World Size以外の設定の調整は、物理シミュレーションがゲームのボトルネックになっている場合のみ検討してください。

設定 説明
World Size Bucketing Axisにおける物理シーンのサイズです。ブロードフェーズでは、すべての物理エントリのバウンディングボックスが、-WorldSize/2からWorldSize/2に制限されます。そのため、ワールドはすべてのエンティティを包含できる十分な大きさを確保することが重要です。ワールド外のエンティティは、最初/最後のバケットに追加されるため、パフォーマンスコストが発生します。物理エンジンでは、バウンディングボックス外はワールドの端とみなされるため、誤った衝突候補が生まれる可能性があります。
Bucketing Axisではない軸では、物理ワールドはFP.UsableMinからFP.UsableMaxの範囲のみに制限されます。
Buckets Count ブロードフェーズで使用されるバケット数で、これらは並列に解決されます。物理エントリ(コライダー)数に応じて、適切な量を設定してください。バケットが多すぎると、各バケット内のエントリ数が少なくなるため、パフォーマンスは向上せずに処理オーバーヘッドが増加します。逆にバケットが少なすぎると、各バケット内のエントリ数が過剰になり、ブロードフェーズのパフォーマンスが低下します。
Buckets Subdivisions 通常のクエリ(オーバーラップとレイキャスト)は、バケット分割において可能な限り少ないエントリをチェックするスタビング方式を使用します。想定するエントリとクエリ実行の量に応じて、値を調整してください。分割数が多すぎても、パフォーマンスは向上せずにオーバーヘッドが増加し、逆に少なすぎても、チェック対象のエントリが過剰になるため、クエリ解決に時間がかかります。
備考:Buckets Count & Buckets Subdivisions
デフォルトのBuckets CountとBuckets Subdivisionsの値(16バケットの8分割)は、通常は1000~2000エントリに適しています。物理シミュレーションがゲームのボトルネックでない限り、これらの調整を検討する必要はありません。調整する場合は、Task Profilerを使用してパフォーマンスを分析し、得られた(ブロードフェーズクエリと通常クエリの解決)結果に基づいて値を調整してください。
Bucketing Axis 物理エントリは、バケット軸における位置に応じてバケットに振り分けられます。
Sorting Axis バケットのクエリは、ソート軸における位置に応じてソートされます。
備考:Bucketing Axis & Sorting Axis
Y軸は、物理シミュレーションの垂直軸を表します。2DではそのままY軸と同じですが、3Dでは3D空間の分割がXZ平面で実行されるため、Y軸はZ軸にマッピングされます。
バケット軸とソート軸は、ワールド内でエントリがどのように分散しているかに基づいて選択してください。エントリが平面に均一に分散している場合は、バケット軸とソート軸に異なる軸を選択(例:X-YやY-X)すると良いでしょう。エントリが1つの軸に集中している場合は、バケット軸とソート軸を同じ軸にすることを検討してください。
Triangle Mesh Cell Size 3Dトライアングルメッシュが分割されるセルのサイズを定義します。メッシュのトライアングル密度に基づいて値を調整し、セルごとのトライアングル数を適切に設定してください。
視認性を高めるためには、QuantumGizmoSettingsアセットのコライダー関連フィールドを有効にしてください。
これは、ブロードフェーズクエリと通常クエリの両方のパフォーマンスに影響します。Task Profilerを使用してパフォーマンスを分析し、ゲームに最適な値を見つけてください。

Simulation Config

SimulationConfigデータアセットには、物理エンジンの設定を拡張するパラメーターが含まれています。

Physics Settings on SimulationConfig
SimulationConfigアセット

Layersと対応するLayer Collision Matrixは、Unityからインポートすることができます。一度インポートすれば、Collision Matrixは設定から直接編集できます。

最適化のヒント

ここでは、パフォーマンスを向上させるために物理設定を最適化する際に、一般的な検討項目について説明します。

  • Collision Matrix:互いにチェックする必要があるレイヤー間のみ、衝突を有効にしてください。
  • Angular Velocity(物理演算による回転):このオプションを無効にすると、物理シミュレーションがより速く安定します。
  • Kinematic Entities:できるだけ動的エンティティではなくキネマティックなエンティティを使用してください。キネマティックなエンティティは、トリガーでなければ、互いに衝突のチェックが行われません。
  • Raycasts:レイキャストの距離は適切に設定して、ボトルネックにならないようにしてください。
  • PhysicsBody:設定から剛体の静止を有効にすることで、静止エンティティを衝突判定から除外し、衝突判定システムの負荷を軽減できます。静止剛体は、他の動く剛体やコードから再び起こすことができます。
  • Thread Count:このオプションを調整することで、実行時にQuantumシミュレーションで利用可能なスレッド数を増やすことができます。
  • Profiler:パフォーマンスを調整する際に実行してください。物理エンジンではなく実装コードがボトルネックになっている場合もあります。プロファイラーは、ゲームの特定の負荷に対してどの設定が最適かを判断するのに役立ちます。詳細な情報は、ドキュメントのプロファイリングをご覧ください。
Back to top