設定
概要
物理の設定は、Map Data
スクリプトのシーンに関連付けられた Map
アセットと Quantum Runner
スクリプトにリンクされた Simulation Config
アセットで編集することができます。
Map
の設定はシーン固有のものであり、Simulation Config
は複数のシーン間で共有することができます。
マップデータ
シーンのプレイ可能エリア関連の設定は、シーンの MapData
スクリプトやAssetフィールドにある Map Asset
にあります。
World Size
を除き、これらの設定の微調整は、物理シミュレーションがゲームのボトルネックになっている場合に行うべきです。
設定 | 説明n |
---|---|
ワールドサイズ | バケット軸の物理シーンサイズ。広いフェーズは、-WorldSize/2 から WorldSize/2 の間のすべての物理エントリのバウンディングボックスにクランプされています。したがって、ワールドがすべてのエンティティを包含するのに十分な大きさであることを確認することが重要です。エンティティがワールドの外にある場合、最初のバケットまたは最後のバケットに追加されるため、パフォーマンスが低下します。物理エンジンの観点からは、バウンディングボックスの外側にあるものはすべてワールドの端にあるとみなされ、誤った衝突の候補となります。
非バケット軸では、物理のワールドは FP.UsableMin から FP.UsableMax までの値の範囲にのみ制限されています。 |
バケット数 | 広範なフェーズで使用されるバケットの量。並行して解決されます。物理エントリ (コリダー) の数に応じて、適切な量を使用してください。バケット数が多すぎると、それぞれのエントリー数が少ないため、性能が向上することなく処理オーバーヘッドが増加します。バケット数が少なすぎると、それぞれのエントリ数が過剰になり、広範なフェーズのパフォーマンスが低下します。 |
バケットの細分化 | レギュラークエリ(オーバーラップやレイキャスト)では、バケットの細分化でできるだけ少ないエントリをチェックするために、スタビングアプローチを使用しています。予想されるエントリ数と実行するレギュラークエリの量に応じて、数を微調整してください。細分化が多すぎるとパフォーマンスが低下してオーバーヘッドが増加します。逆に、少なすぎると多くのエントリをチェックしなければならないため、クエリの解決に時間がかかることになります。 |
バケット数とバケットの細分化に関する注意点
デフォルトのバケット数とバケットの細分化の値 (16のバケットと8の細分化) は、通常 1~2K までのエントリーに適しています。したがって、物理がゲームのボトルネックになっていない限り、これらの値を微調整する必要はありません。その場合は、 Task Profilerを使ってパフォーマンスを評価し、その結果に基づいて値を微調整してください (広いフェーズと通常のクエリの解決)。 |
|
バケット軸 | 物理エントリは、バケット軸の位置に応じてバケットに入れられます。 |
ソート軸 | バケット内のクエリは、ソート軸の位置に応じてソートされます。 |
バケット軸とソート軸に関する注意点
Y軸は、物理シミュレーションの垂直軸を表します。2DではY軸に相当しますが、3DではXZ平面上で3D空間の分割が行われるため、Y軸はZ軸にマッピングされます。 エントリーがワールドでどのように広がっているかに基づいて、バケット軸とソートの軸を選択します。バケット処理とソートには別の軸(X-YやY-Xなど)を選択すると、その平面にエントリーを均一に広げることができます。エントリーが1つの軸に集中している場合は、バケット処理とソートの両方に同じ軸を使用すると良いです。 |
|
三角形メッシュのセルサイズ | 3Dトライアングルスープを分割するセルのサイズを指定します。この数値は、メッシュの三角形の密度に応じて、セルあたりの三角形の量が適切になるように調整するべきます。
視覚化を良くするためには`QuantumEditorSettings` アセットの Collider gizmos セクションの関連フィールドを有効にします。 これは、広いフェーズと通常のクエリーの両方のパフォーマンスに影響します。Task Profilerを使用してパフォーマンスを分析し、ゲームに最適な数値を見つけます。 |
シミュレーション設定
SimulationConfig
データアセットには、物理エンジンの広範な設定が含まれています。
レイヤー と対応する レイヤー衝突マトリックス はUnityのものからインポートできます。 インポート後、衝突マトリックス は設定で直接編集できます。
最適化のヒント
このセクションでは、パフォーマンスを向上させる物理設定を最適化するための一般的な考慮事項について説明します。
- Collision Matrix ;お互いに対して実際にチェックする必要があるレイヤー間の衝突のみを確実に有効化します。
- Angular Velocity (回転の物理制御)。このオプションを 無効 にすると、物理シミュレーションがより高速になり、安定します。
- Kinematic Entities 可能な限り、動的エンティティではなくキネマティックエンティティを使用します。 キネマティクスは、トリガーキネマティクスでない限り、お互いの衝突を確認しません。
- Raycasts, 光線がボトルネックにならないように、光線には適切な 距離 を使用してください。
- PhysicsBody, 設定で 静止体* を *有効化**すると、静止エンティティを衝突チェックから除外して、衝突検出システムの負荷を軽減できます。 静止体は、別の動いているボディーまたはコードによって再び有効にすることができます。
- Thread Count 調整 すると、実行時にQuantumシミュレーションで使用できるスレッドの量を増やすことができます。
- Profiler パフォーマンスの調整前と最中にコードシステムで実行します。多くの場合、ボトルネックは、物理エンジンではなくカスタムコードに関連付けられています。プロファイラーは、ゲーム固有の負荷に対して最もよく機能する設定を識別します。