Navigation Lab で作業を開始する

Navigation Lab は、ゲーム内で Gameware Navigation を正しく使用するための重要なツールです。統合と開発の中で、ユーザ独自の地形の NavData を生成するため、およびライブ接続を介してリアル タイムにゲーム内で実行されていることを視覚的にデバッグするために、Navigation Lab を使用します。

このページのチュートリアルには、次の 2 つの重要な目的があります。

手順 1. Navigation Lab を起動する

bin/win<プラットフォーム>_<ツールセット>_release-md/NavigationLab.exe を開きます。Navigation Lab のメイン ウィンドウが表示されます。

インタフェースの主な要素が示された一連の図が表示されます。

Navigation Lab で提供されるさまざまなワークフローに関連するコントロールの概要については、これらの図のページを送ることで確認できます。いずれかのコントロールについての詳細な情報が必要になった際には、インタフェース内のツールチップを参照してください。

手順 2. LabGame に接続する

LabGame は Gameware Navigation にあらかじめ統合されている単純なゲーム エンジンを含む小さなコンソール アプリケーションです。Navigation Lab から送信されたコマンドを受信し、Navigation Lab でのコマンドの結果を、ユーザ独自のゲームに統合するのと同じライブ ビジュアル デバッグ システムを通じて表示します。

ローカル ホスト上の LabGame を起動して接続するには:

LabGame は Gameware Navigation がサポートするすべてのプラットフォームで動作します。ネットワーク上の他のコンピュータまたはコンソールで LabGame を起動して、TCP を介して Navigation Lab と接続することができます。

別のホスト上の LabGame を起動して接続するには:

  1. bin ディレクトリのサブディレクトリの 1 つから、ターゲット プラットフォーム用の LabGame 実行ファイルを見つけます。この実行ファイルをターゲット ホストにデプロイして実行します。
  2. Navigation Lab で、Remote application ツールボックスの Connect をクリックします。

    接続先のホストについての情報を提供するよう求めるメッセージが表示されます。

  3. ゲームを実行するホストが Detected Servers リストに表示されたら、そのホストを選択して Connect をクリックすることができます。

    表示されない場合は、Address フィールドにホストの IP アドレスを入力します。ポート番号はデフォルトのままにします。

実行中のゲームとの接続を開始すると、Remote application ツールボックスの Disconnect ボタンがハイライト表示されます。切断する場合や失敗した接続試行の再試行を停止する場合は、いつでもこのボタンをクリックすることができます。

接続が成功すると、Log ウィンドウと、コンソールに LabGame によって表示される出力に示されます。

手順 3. SDK サンプルを使用する

LabGame への接続に成功すると、Navigation Lab に用意された SDK サンプルの参照を開始することができます。これらのサンプルは、メイン 3D ビューの左側の、Samples パネルに一覧表示されます。

avoidance フォルダを開き、FrontAvoidance エントリをクリックします。

Navigation Lab は新しいウィンドウを開き、サンプルの目的の説明、ディスク上のサンプルの場所、サンプルのコードを表示します。

コードは labopenfilegamespawnbotgamespawnboxobstaclegamebotsetroute など、一連のコマンドで構成されていることに注目してください。サンプルを起動すると、先頭に lab の付いたコマンドが Navigation Lab で実行され、先頭に game の付いたコマンドがゲーム エンジン内で実行するために LabGame に送信されます。また、サンプルの途中でコマンドを自分で実行することもできます。後でさまざまな実行方法について説明します。

サンプルを起動するには、Start ボタンをクリックします。(LabGame にまだ接続されていない場合は、ローカル コンピュータ上で LabGame を開始するように求めるメッセージが表示されます。)サンプルをロードすると、街中の道路の俯瞰図と、端から端へと歩く 2 つの Bot (黄色の円柱)のグループが表示されます。Bot は移動しながら、他の Bot、動くオレンジ色の障害物、歩行不可能としてタグ付けされたいくつかの静的ボリューム(NavMesh を含まない、紫のアウトラインの領域)を避けるために軌道を即座に変更します。

アクションおよびコマンドに関する注記

3D ビューの真上にある Actions パネルには、さまざまな種類のオブジェクトをスポーンおよび操作するための、また、ゲーム エンジン内で何が行われるかをコントロールするためのさまざまなコマンドを提供する多くのタブが含まれています。

これらのアクションのほとんどは、Navigation Lab が LabGame に接続されている場合にのみ動作します。ここで説明するコマンドは主に、SDK サンプルを試す簡単な方法を提供することを目的としています。

ユーザ独自のゲームに接続した場合には、デフォルトのままではこれらのアクションは機能しません。3D ビューにどのデータをレンダリングするか、タイムラインの操作、記録、再生などは完全にコントロールすることができますが、Navigation Lab からゲームへデータを送れる可能性はあまりなく、ゲーム内で起こることを修正することができないかもしれません(ただし、LabEngine プロジェクトのコマンド フレームワークをユーザ独自のゲームに組み込むようにした場合は除く)。

主な例外は Generation タブです。このタブは Navigation Lab がゲーム エンジンに接続されていない場合にのみ機能します。

手順 4. カメラを移動する

デフォルトでは、矢印キーまたはキーボードの左上のキー(英語キーボードでは WASD キー)を使用して前後左右に動かせるフライングカメラを使用します。ビューを回転するにはマウスを使用し、垂直軸を上下に動かすにはマウス ホイールを使用します。

別のカメラ モードおよび設定値を、メイン ウィンドウの上部にある Camera ツールバーで使用できます。「3D ビューでの移動」を参照してください。

手順 5. 表示するデータを選択する

手順 6. オブジェクトを選択してコントロールする

ビジュアル デバッグ オブジェクトを選択するには、3D ビューで[Ctrl]キーを押しながらオブジェクトをクリックします。3D ビューでオブジェクトが緑の軸合わせされた選択インジケータ ボックスで囲まれます。選択されたオブジェクトについてのその他の情報が表示される場合があります。

選択したオブジェクトのプロパティのリストを表示するには、3D ビューの右側でそのパネルを開きます。

さらに、3D ビューの上にあるアクション パネルでは、SelectedBot タブのコマンドを使用して選択したオブジェクトをコントロールできます。このタブには、Bot をどこへ動かすかをコントロールするためのものや、Bot がどの程度のビジュアル デバッグ情報を Navigation Lab に送信するのか、Bot をゲームから完全に削除する、といったコマンドが用意されています。たとえば、Set target を選択して Bot を新しい目的地に移動させることや、Set route を選択してオブジェクトが追従する新しいウェイポイントのセットを作成することができます。

キーボード ショートカットがコマンドの後に表示されている場合は、コンテキスト メニューを開く代わりにショートカットを使用することができます。たとえば、場所をポイントして[T]キーを押すだけで、選択した Bot を新しい場所へ移動させることができます。

手順 7. 新しいゲーム オブジェクトをスポーンする

LabGame に接続されている場合、Bot、動的な障害物、TagVolume などの新しいオブジェクトをシーン内にスポーンすることができます。オブジェクトをスポーンするには、Actions パネルのいずれかのタブから適切なコマンドを選択します。

たとえば、新しい Bot をスポーンするには、Bots > Bot コマンドを選択します(または、単に[B]キーを押します)。NavMesh の任意の場所にカーソルをポイントして新しい Bot をスポーンするポイントを選択するように求められます。スペースバーを押してコマンドを完了します。Navigation Lab が LabGame に Bot を作成するコマンドを送信し、それが Log ウィンドウに表示されます。

LabGame が新しい Bot を作成し、ランダムな目的地への(または、ルートを持つ Bot をスポーンした場合は、指定したウェイポイント間への)パスを見つけて追従するように設定します。その後、その Bot についてのビジュアル デバッグ データを Navigation Lab に送り返し始めます。3D ビューに Bot が表示され、パスの最初のセグメントを追従し始めます。

アクションのデフォルトを変更する

アクション ボタンの横にある アイコンをクリックすることで、Actions パネルの多くのアクション、特にスポーン するアクション、を設定することができます。

たとえば、新しい Bot がデフォルトでチャネル ベースのパス フォローイング システムを使用するように設定できます。Bots タブで、Bot [b]アクションの右側にある アイコンをクリックします。Bot ウィンドウで、Trajectory タブを選択し、trajectoryMode コントロールを「Channel」に設定します。

これ以降はこのウィンドウを閉じてしまっても、新しい Bot をスポーンする際には、新しい Botは自動的にこの新しい設定を使用するようになります。元の設定に戻すには、ウィンドウを再度開いて Reset ボタンをクリックします。

コマンド ラインからコマンドを実行する

また、Log ウィンドウの上部にある Command line フィールドに直接コマンドを貼り付けることができます。これにより、コマンドによって送信されたすべての値をカスタマイズすることや、以前のコマンドを再実行することができます。コマンド ラインで指定したパラメータはアクションのデフォルト値をオーバーライドします。

手順 8. スマート オブジェクトを配置する

スマート オブジェクトとは、カスタム動作をトリガしたり、カスタム アニメーションを再生する為に、キャラクタのパスの追従の仕方を自動的にコントロールするオブジェクトです。

通常、スマート オブジェクトは各ゲームに固有のもので、ゲームプレイのシナリオに関する詳細や、ゲーム内で使用されるアニメーションサブシステム、物理サブシステム、移動サブシステムに関する技術的な考慮事項に大きく依存します。Gameware Navigation SDK には包括的なスマート オブジェクトは含まれていません。ユーザ独自のスマート オブジェクトをできるだけ簡単に作成できるようにするためのツールを提供しています。

ただし、LabEngine には、エレベータ、ドア、ジャンプ ポイントなどの一般的なタイプのオブジェクトをシミュレートするいくつかのサンプル スマート オブジェクトが含まれています。Navigation Lab を LabGame に接続すると、これらのスマート オブジェクトをいつでもスポーンできるようになります。たとえば、次の手順は、Bot が屋根に上がるために使用できるスマート オブジェクトを作成します。

  1. Actions パネルで SmartObjects タブを開きます。
  2. Jump アクションをクリックします。
  3. 街路レベルで地面の任意の場所にカーソルをポイントし、スペースバーを押します。屋根の上の NavMesh にポイントし、再度スペースバーを押します。最後に、[Enter]キーを押してジャンプを確定します。

    新しい NavGraph のエッジを示す緑の矢印が 2 点間に表示されます。NavGraph の詳細については、「NavData」を参照してください。

    また、新しい NavGraph はスマート オブジェクトに関連付けられたカスタム データ値で自動的にタグ付けされます。表示される緑の円弧は、キャラクタがパスで NavGraph を使用した場合にスマート オブジェクトがキャラクタに追従させるモーション パスを示しています。

  4. Actions パネルで、Plank アクションをクリックします。
  5. 同じ屋根の上の任意の場所にカーソルをポイントし、スペースバーを押します。別の屋根の上の NavMesh にポイントし、再度スペースバーを押します。最後に、[Enter]キーを押して板を確定します。

    関連するスマート オブジェクトの場所をビジュアル化するために、紫の長方形で 2 つの屋根を接続する別の新しい NavGraph エッジが表示されます。

  6. 任意の Bot を[Ctrl]キーを押しながらクリックして選択し、2 番目の屋根の上にマウスカーソルを合わせて[T]キーを押して、屋根を Bot の目的地として設定します。

    Bot はジャンプ オブジェクトと板を含む新しいパスをプランします。パスに追従する中で、ジャンプなどのスマート オブジェクトが Bot の動作を完全にコントロールしてカスタム モーション パスに追従させるたびに、Bot が青くなります。板を渡るときには Bot が青くならないことに注意してください。板はキャラクタの動作を完全にはコントロールしません。デフォルトのパス フォローイング システムを使用して、キャラクタを NavGraph に沿って板のもう片方の端まで移動させます。

スマート オブジェクトは、NavMesh の一部の領域での動きをコントロールすることもできます。例:

  1. Actions パネルで、Lava アクションをクリックします。
  2. 各コーナーの場所をポイントしてスペースバーを押すことで、溶岩プールの範囲を設定します。Bot が動的な障害物とすれ違う街路の中央に配置します。終了したら[Enter]キーを押します。

    領域の NavMesh はスマート オブジェクトの存在を反映するために自動的に修正されることに注意してください。Spawn Lava コマンドはスマート オブジェクトに関連付けられたカスタム データ タグで領域をマークする TagVolume を作成します。このスマート オブジェクトにより、Bot がタグ付けされた領域をパスの中で使用するときは常に、すべての Bot がその領域をジャンプして越えるようになります。たとえば、次のイメージでは、青の Bot はスマート オブジェクトによって計算されたモーション パス(赤で表示)に沿ってジャンプをしている最中で、その下の黄色の Bot はタグ付けされた領域に近づいてきています。

LabGame と LabEngine のスマート オブジェクトのその他の例については、Samples パネルの smartobjects カテゴリにあるサンプルを参照してください。

ユーザ独自のゲームでユーザ独自のスマート オブジェクトを実装する際の詳細については、「スマート オブジェクトを作成する」を参照してください。

オプション: ユーザ独自の地形を LabGame で使用する

Navigation Lab を使用してユーザ独自のゲーム レベルの NavData を生成し、LabGame に送信して、サンプル フレームワークによって提供されるコマンドを使用して Bot、障害物、そしてスマート オブジェクトさえもユーザ独自の地形に直接スポーンすることができます。これは高速プロトタイピングや、単にサンプルを試す際に便利です。

ユーザ独自の地形に対する NavData 生成の詳細については、「統合フェーズ 2: 最初の NavData を生成する」を参照してください。

オプション: 新しいサンプルを追加する

data¥NavigationLab¥examples サブフォルダには Samples パネルに一覧表示されるすべてのサンプルのソース コードがあります。各サンプルはそれぞれの.LabSample ファイルに入っています。そのファイルにはNavigation Lab で実行されたり、LabGame に送信されて実行されるコマンドのリストが含まれます。

このディレクトリ内に新しい .LabSample ファイルを作成するか、既存の .LabSample ファイルをコピーしてそのコマンドを修正することで、ユーザ独自のサンプルを作成することができます。

Samples パネルのツリー ビューには examples フォルダの現在の内容が反映されるため、新しいファイルを簡単に Navigation Lab 内で開くことができます。