設定
概要
物理設定は、シーンに関連付けられたMap
アセットのQuantum Map Data
スクリプトおよびQuantum Runner
スクリプトにリンクされたSimulation Config
アセットで編集できます。
Map
内の設定は特定のシーンに固有ですが、Simulation Config
は複数のシーンで共有することができます。
マップデータ
シーンのプレイ可能エリアに関連する設定は、シーンのQuantumMapData
スクリプトまたはアセットフィールドにスロットされているQ Asset Map
で見つけることができます。

World Size
以外のこれらの設定を調整することは、物理シミュレーションがゲームのボトルネックである場合にのみ考慮すべきです。
Setting | Description |
---|---|
World Size | 物理シーンのサイズはバケッティング軸で設定されます。ブロードフェーズは、すべての物理エントリを含むバウンディングボックスによって制限され、範囲は `-WorldSize/2 ` から `WorldSize/2 ` までとなります。そのため、すべてのエンティティを収容できるように、ワールドが十分に大きいことを確認することが重要です。もしエンティティがワールドの外にある場合、そのエンティティは最初または最後のバケットに追加されるため、パフォーマンスに影響を与えます。物理エンジンの視点から見ると、バウンディングボックスの外側はワールドの境界として扱われ、これにより不正な衝突候補が発生する可能性があります。
バケッティング軸以外では、物理ワールドは ` FP.UsableMin ` から `FP.UsableMax ` の値範囲によってのみ制限されます。. |
Buckets Count | ブロードフェーズで使用されるバケツの数は、並行して解決されます。物理エントリ(コライダー)の数に応じて適切な量を設定してください。バケットが多すぎると、各バケツにエントリが少ないため処理オーバーヘッドが増加し、パフォーマンスの向上が得られません。一方、バケットが少なすぎると、各バケットに過剰なエントリが含まれ、ブロードフェーズのパフォーマンスが低下します。 |
Buckets Subdivisions | 通常のクエリ(オーバーラップやレイキャスト)は、バケットの細分化内でできるだけ少ないエントリをチェックするためにスタッビングアプローチを使用します。期待されるエントリの数や実行される通常のクエリに応じて、この数を調整してください。細分化の数が多すぎると、パフォーマンスが上がらないままオーバーヘッドが増加し、逆に少なすぎると、チェックしなければならないエントリが多すぎるため、クエリの解決に時間がかかります。 |
NOTE on Buckets Count & Buckets Subdivisions
デフォルトのバケット数とバケットの細分化の値(16バケツで8細分化)は、通常は1,000〜2,000エントリまでに適しているため、物理シミュレーションがゲームのボトルネックでない限り、これらの調整を心配する必要はありません。その場合は、タスクプロファイラを使用してパフォーマンスを評価し、得られた結果に基づいて値を調整してください(それぞれブロードフェーズと通常のクエリの解決に対して)。 |
|
Bucketing Axis | 物理エントリは、バケティング軸における位置に基づいてバケツに分類されます。 |
Sorting Axis | バケット内のクエリは、ソート軸における位置に従ってソートされます。 |
NOTE on Bucketing Axis & Sorting Axis
Y軸は、物理シミュレーションの垂直軸を表します。2DではY軸と等しく、3DではY軸がZ軸にマッピングされます。これは、3D空間のパーティション化がXZ平面で行われるためです。 エントリがワールド内でどのように広がっているかに基づいて、バケティング軸とソート軸を選択してください。バケティング軸とソート軸(例:X-YやY-X)に異なる軸を選択することで、その平面上に均等に広がっているエントリに対して有効です。エントリがある軸に集中している場合は、両方のバケティングとソートに同じ軸を使用することを検討してください。 |
|
Triangle Mesh Cell Size | 3Dトライアングルスープが分割されるセルのサイズを定義します。この数値は、メッシュの三角形の密度に基づいて調整し、セルごとに合理的な数の三角形が得られるようにする必要があります。
より良い可視化のために、`QuantumEditorSettings`アセットのコライダーギズモセクションで関連フィールドを有効にしてください。 これは、ブロードフェーズと通常のクエリの両方のパフォーマンスに影響を与えます。タスクプロファイラを使用してパフォーマンスを分析し、ゲームに最も適した数値を見つけてください。 |
シミュレーションコンフィグ
SimulationConfig
データアセットには物理エンジン設定の拡張セットが含まれています。以下を参照してください。

レイヤーとそれに対応する レイヤー衝突マトリックスは、Unityのものからインポートすることができます。一度インポートされると、衝突マトリックスは設定内で直接編集できます。
最適化のヒント
このセクションでは、パフォーマンス向上のために物理設定を最適化する際に考慮すべき一般的な項目について説明します:
- Collision Matrix(衝突マトリックス):実際に互いにチェックする必要があるレイヤー間でのみ、衝突を有効にしてください。
- Angular Velocity(角速度)(物理制御回転):このオプションを無効にすると、物理シミュレーションがより速く安定します。
- Kinematic Entities(運動エンティティ):可能な限り動的エンティティの代わりに運動エンティティを使用してください。運動エンティティは、お互いに衝突をチェックしないため、トリガー運動エンティティでない限り、衝突のチェックが行われません。
- Raycasts(レイキャスト):レイの距離を合理的に設定して、ボトルネックな要因にならないようにしてください。
- PhysicsBody:設定で静止物体を有効にすることで、静止エンティティを衝突チェックから除外し、衝突検出システムの負荷を軽減できます。静止物体は、他の動いている物体やコードによって再び起こされることができます。
- Thread Counts(スレッド数):このオプションを調整することで、実行時にQuantumシミュレーションで利用できるスレッド数を増やすことができます。
- Profiler(プロファイラ):パフォーマンスの調整前および調整中にコードシステムで実行してください。ボトルネックはしばしば物理エンジンよりもカスタムコードに関連しています。さらに、プロファイラは、ゲームの特定の負荷の下でどの設定が最も効果的であるかを特定するのに役立ちます。詳しくは、プロファイリングドキュメントを参照してください。