Navigation Lab で作業を開始する: 複数のセクタを使用する

ほとんどのコンソールおよび PC ゲーム プロジェクトでは、ゲームの地形メッシュは非常に大きいため、一度にメモリに全体を収めることはできません。これは通常、複数のサブレベルやセクタに分割され、特定のゾーンにプレイヤー キャラクタが出たり入ったりするようなゲームプレイ イベントに応じてメモリにストリーミングされたり、メモリから削除されます。Gameware Navigation SDK は複数のセクタを処理するためのビルトイン メカニズムを提供し、Bot が隣接するセクタの間の境界を横切って移動できるようにするために、必要に応じて自動的に NavData を入れ替えたりつなぎ合わせます。SDK および NavData 生成プロセスのセクタの処理に関するバックグラウンド情報については、「地形のセクタ化」を参照してください。

Navigation Lab もまた、複数のセクタをサポートしています。入力として複数の .obj ファイルを指定することによって別々のサブレベルを設定することができ、セクタの NavData を個別に生成、表示、テストすることができます。排他的、または入れ替え可能セクタを設定することもできます。これは通常、地形の同じエリアを 2 つの異なる状態で表すものです。

以下に説明する概念のほとんどが示されているサンプルについては、Samples パネルから generation > castle_multisectors_swappable.LabSample を開いてください。

複数のセクタを作成および管理する

Navigation Lab に新しい .obj ファイルをドラッグ & ドロップするか、または File メニューを使用して開くと、そのたびに Navigation Lab によって入力ジオメトリ用の新しいセクタが作成されます。これにより、Scene パネルのリストにセクタを作成するために使用した .obj ファイルの名前で新しいエントリが追加されます。

セクタに作成されるすべてのシード ポイントと TagVolume も、そのセクタのエントリに一覧表示されます。NavData を生成した後、各エントリには、対応する .obj ファイル用に生成された NavData も含まれます。

各セクタに関連付けられたデータを表示および非表示にするには、Scene パネルのチェックボックスで切り替えることができます。

シード ポイントと TagVolume を提供する

Navigation Lab の各セクタは、そのセクタのみに適用される、シード ポイントと TagVolume の独自のリストを保持しています。Navigation Lab に複数のセクタがあり、新しいシード ポイントまたは TagVolume を追加しようとする場合は、新しいシードまたは TagVolume をそれぞれ適用する先のセクタを選択するプロンプトが表示されます。

このウィンドウが開いている間は、ドロップダウンリストで選択されているセクタのみを表示するように 3D ビューが更新されます。シード ポイントまたは TagVolume の追加が終了したら、ウィンドウを閉じます。

セクタにシード ポイントを追加する場合、他のすべてのセクタにも少なくとも 1 つのシード ポイントを追加する必要があることに注意してください。

選択したセクタの NavData をリビルドする

デフォルトでは、Navigation Lab は、Scene パネルに表示されるすべてのセクタに対して常に NavData を生成します。ただし、特定の一連のセクタにデータの生成を制限するように設定することもできます。

Generation パネルで、SectorsToBuild ボタンをクリックします。小さなウィンドウに、既知のすべてのセクタのリストが表示されます。

データを生成するセクタを選択し、生成プロセスを起動します。

オーバーラップ データ

2 つ以上のセクタと関連付けられている入力ジオメトリがオーバーラップしているところでは、データ生成システムは、セクタが実行時にストリーミングされたり、削除されたときに発生するセクタ ジオメトリのすべての組み合わせの可能性を反映するオーバーラップのエリアに追加データを作成します。NavData システムのオーバーラップ データのバックグラウンド情報については、「セクタのオーバーラップの処理」を参照してください。

デフォルトでは、Navigation Lab はオーバーラップ データを表示しません。代わりに、3D ビューで表示されているセクタのジオメトリと一致するように、3D ビューでオーバーラップのエリアの NavData を透過的に入れ替えます。これはゲームのランタイム Database クラスの動作と一致します。メモリにセクタをストリーミングしたり、メモリからセクタを削除すると、それらのオーバーラップ データは同様に自動的に入れ替えられます。

入れ替え可能セクタと CellBox

セクタのオーバーラップの処理」で説明しているように、Gameware Navigation SDK にはオーバーラップ データの生成をカスタマイズする方法が用意されています。

  • セクタの特定の組み合わせが同時にロードできないことを知っている場合は、それらのセクタを排他的としてフラグを付けることができます。これらの組み合わせではオーバーラップ データは生成されません。
  • セクタが軸に揃えられているかグリッドベースである場合は、地形を内部的に分割するためにNavData 生成システムによって使用されているセルのグリッドでセクタの正確な範囲を指定することにより、オーバーラップ データを減らすことができます。

これらの方法と、それらを Navigation Lab で使用する方法の詳細については、「セクタのオーバーラップの処理」を参照してください。