このページでは、2014 リリースにアップグレードするための、コードまたはパイプラインに加える必要のある変更を示します。
このリリースでは、Bot の初期化方法と、パス ファインディングおよびパス フォローイング システムのカスタマイズ方法にいくつかの大きな変更があります。
新しいシステムの詳細については、「パス ファインディングとパス フォローイング」の章のトピックを参照してください。次に簡単に説明します。
新しい BotConfig クラスは、Bot がパスを生成および追従する方法に関連するすべての設定パラメータがまとまっています。この設定オブジェクトのインスタンスを設定して Bot の初期化時に提供したり、初期化後に Bot クラス インタフェースのアクセサ メソッドを呼び出して設定パラメータを変更することができます。
この変更により、BotInitConfig で設定されていた多くのパラメータが削除され、パス フォローイングで使用される固有のオブジェクトの設定用にいくつかの新しい設定パラメータとサブクラスが追加されました。「パス フォローイングをカスタマイズする」を参照してください。
以前のリリースでは、パス ファインディングおよびパス フォローイングに関連する多くのクエリーとオブジェクトが、用途に応じて AStarCustomizer または NavTagPredicate と呼ばれるテンプレート パラメータに依存していました。簡単にするために、これらのすべてのオブジェクトは TraverseLogic クラスをテンプレート パラメータとして使用するようになりました。 例えば、Gameware Navigation で提供される SimpleTraverseLogic などがそれに該当します。このクラスに求められるメソッドは以前の AStarCustomizer および NavTagPredicate と似ていますが、新しい TraverseLogic のメソッドはすべて静的になりました。
カスタマイザまたは述部を現在使用している場合、新しい TraverseLogic インタフェースに合わせてクラスを若干修正する必要があります。
新しい NavigationProfile クラスは、パス ファインディング クエリー、軌道コンピュータ、回避コンピュータなどの Bot のパス計算およびパス フォローイング中に、Bot によって使用されるカスタマイズ可能なすべてのオブジェクトのファクトリとしての機能を持ちます。NavigationProfile は特定の TraverseLogic に対してテンプレート化されていて、プロファイルによって提供されるすべてのオブジェクトに対して順番に自動的に使用されます。これにより、パスの計算時と追従時に同じトラバース ロジックが使用されます。プロファイルからオブジェクトを取得することで Bot は可能な限りオブジェクトのインスタンスを共有することもできるため、メモリ フットプリントが減ります。
デフォルトでは、各 Bot は World により保持されている NavigationProfile のデフォルトのインスタンスを使用します。ただし、Bot のパス ファインディングおよびパス フォローイングで使用されるいずれかのオブジェクトをカスタマイズしたい場合は、NavigationProfile インタフェースのメソッドを再実装する独自のカスタム クラスのインスタンスを使用して Bot を設定することができます。「パス フォローイングをカスタマイズする」を参照してください。
スプラインベースのパス フォローイングの導入によりパス フォローイングに新しいコンストレイントも導入され、いくつかの以前の前提が無効になりました。その結果、旧バージョンで使用されていた PathFollower クラスが削除されました。Bot がパスに沿って進むように維持するこのクラスの役割は、新しい PathProgressComputer クラスによって処理されるようになりました。
旧バージョンで、PathFollower クラスによって計算されたターゲット ポイントに依存していた場合、このターゲット ポイントは ShortcutTrajectory (旧バージョンでは単純に Trajectory と呼ばれていたクラス)によって計算されるようになります。新しい PathProgressComputer は代わりに Bot の現在の位置を元のパスに投影し、Bot がショートカットまたはダイナミック回避のために元のパスから離れた場合でも、常にパスに沿った Bot の進行状況を示すマーカーを生成します。Bot が目的地に到達したかどうか、またはパスに沿って進行しているかどうかを監視する必要がある場合には、この進行マーカーをターゲット ポイントの代わりに使用することができます。「パス フォローイングをモニタする」を参照してください。
同じ設定パラメータで異なる入力値のクエリーを再実行しやすくするために、クエリーの初期化手順が変更されました。このリリースからは次のようになりました。
詳細とコード例については、「クエリ システムを使用する」を参照してください。
旧リリースでは、ビジュアル デバッグ システムは各フレームを連続する World::Update() への呼び出しの間に送信されたすべてのメッセージと表示リストの合計とみなしていました。しかし、World::Update() への呼び出しはメイン ゲーム ループの異なるポイントに配置できるため、ビジュアル デバッグ データが対応するゲーム フレームからずれたり、2 つの連続するゲーム フレームで送信されたデータが同じビジュアル デバッグ フレームに結合されることがありました。
この混乱を避けるには、新しい VisualDebugServer::NewFrame() メソッドを呼び出してゲーム内で各フレームの開始点を明示的にマークする必要があります。このメソッドは Navigation Lab に任意の保留メッセージを送信し、現在のビジュアル デバッグ フレームのインデックスを増やすか、リセットします。
「統合フェーズ 1d: ビジュアル デバッギングを設定する」を参照してください。