UDN
Search public documentation:

NavigationAIJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

レベルデザイナー向けナビゲーション AI

ドキュメントの概要:パスノードの設定および AI パスの使用についての参照とガイド。

ドキュメントの変更ログ: Richard Nalezynski? により作成。

概要

このドキュメントではレベルでのナビゲーションネットワークのセットアップの仕方を説明しています。それによりNPS がレベル上で効果的にナビゲートすることができます。これは、レベルデザイナー向けです。

基本パス

パスノード

レベルデザイナーは独自のレベルのサーフェス上に PathNodes ( NavigationPoint のサブクラス) を配置します。これにより NPCs が歩き回ることができたり、ボリュームでは NPCs が泳ぐことができます。また、 PlayerStartsNavigationPoints でそれらは同じナビゲーション関数を機能します。また、 InventorySpots はパスのビルド時に自動的にピックアップ位置に配置されます(それらは見ることができませんが、パス・コネクションを見ることができます)。

PathNodes の接続には、they should be less than 1200 Unreal ユニット以下になっていなければならず (プログラマーの方は nPath.hMAXPATHDIST でこの値を変更することができます)。==NavigationPoints== を2つ持つことは互いに近すぎる (オーバーラップするのため) ため、AI ナビゲーション問題の原因となるので回避してください。 PathNodes を配置時 レベルのすべてのエリアが PathNode またその他の NavigationPoint により確実にカバーされるようにしてください。NPC が障害物がなく PathNode を1200 ユニット以下で歩き回る場合 (例:周りに段差がないなど)、そのエリアがカバーされます。

NavigationAI.gif

パスのビルド

PathNodes を配置後、レベルデザイナーは Build メニューから AI Paths を選ぶ (または Build メニューから Rebuild All を選択してフル・リビルドを行う) ことで NavigationPoints 間のコネクションをビルドすることできます。

レベルに膨大な数のパスが構築されると、すべてのパスのリビルドに多少の時間がかかります。パス配置を調節するには、 Build Options (ビルドオプション)メニューにある Build Changed Paths (変更したパスをビルド)ボタンを使用して下さい。これは NavigationPoints 間のみのパスをリビルドします。これは追加、削除や移動されます。 これはレベルを保存したりプレイしたりする前にされますが、フルパスのリビルドが必要です。

ビルドしたパスの表示

パスがビルドされると、 Show Paths オプションフラグでさまざまなレベルのビューウィンドウにて見ることができます。これは任意のビューポートの Toggle Show Flags メニューにあります。

パスは NavigationPoint から他の直線として表示されます。NPC がどちらかの方向にパスをトラバースした場合は、矢印が各方向を指した2直線になります。そうでない場合は、直線はどの方向にパスがトラバースされるかを矢印で表示します。

パスを使用したNPC が小さくても、コネクションパスを広くするよう PathNode 位置を調節することをお奨めします。NPC はスムーズにコーナーを丸くしたり、パスを前後にストレーフするためより大きいパスが得られさらに自然な動きが見られます。

パスカラーリング

一度ビルドされると、パスはさまざまな色でパスについての重要な情報を表示します。ナビゲーショングラフエッジのデフォルトパスカラーは次のように定義されています。:

  • オレンジ - フライングパス。狭い。
  • ライトオレンジ - フライングパス。広い。
  • ライトパープル - 要ハイジャンプ (通常のジャンプより高い)
  • ブルー - 狭いパス。
  • グリーン - 通常の幅。
  • - ワイドパス。
  • ピンク - 非常にワイドパス。
  • 黄色 - 強制パス
  • パープル - 『上級』パス (『高度な知識』を要求されます)
  • レッド - 『ワンウェイ』パス (例: there is a reachspec going from ノード A->Bとなっているreachspec がある。 B->Aでない。) 注記:最近のビルドでは、簡単にスポットできるためワンウェイ状態にするためレッド破線に変更されました)

パスのデバッギング

パスのビルド後、ウィンドウがパスエラーと共にエディタにポップアップします。エラーをクリックすると有害な NavigationPointに導かれます。また、 Tools メニューの Check map for errors... (エラー用のマップをチェック)を選択することでウィンドウにアクセスすることができます。

レベルが完全にパスされ定義されたあと、 Tools メニューの Review Paths (パスのレビュー)を使用してください。次の項目がチェックされます:

  • true に設定する bMustBeReachableNavigationPoints すべてはレベルのあらゆるパスから到達可能です。
  • すべてのムーバーはそれに関連した NavigationPoint を有する (Mover の編集可能な bNoAIRelevance プロパティが true になっていない限り )
  • どちらにせよ PathNodesJumpDests に変換される。

今後のバージョンでは、 レビューパス はレベルが完全にパスされているようランダムなパスになり、冗長 PathNodes をチェックする。

AI NPC が困惑または何かおかしな挙動をしている場合は、次のコンソールコマンドが利用できます:

  • Viewclass Pawn - 質問で AI NPC を見る
  • ShowDebug - AI NPC が何を考えているか、およびそれにしたがっているパスを見る。
  • RememberSpot - レベル上のナビゲーションパスをチェック時に位置をマークする。 ShowDebug (何か他のものを見ずに)を使用することにより継続的に更新したパスをマークした位置に表示することになります。

可能性のあるマップチェックエラーの更なる情報については、 マップチェックエラー をご覧ください。

応用パス

Door

Door NavigationPoints はDoor (その位置に基づきます。2つのエリア間で移動を可能またはブロックします) として作用する任意の Mover と共に配置してください。を影響しているエリアの中心に配置します(典型的にはdoor に実際使用されている静的メッシュの真ん中、しかし地面に接触するくらいの低さで)。また、 必要に応じて更新の必要な Door NavigationPoint の重要なプロパティがいくつかあります。

  • DoorTag - Mover のタグ。この Door が関連。
  • DoorTrigger - if the Door がトリガされた場合、これがトリガアクタのタグになり、 Door を開く。
  • bInitiallyClosed - Mover のデフォルト状態がムーブメント (もし false の場合)を可能にするかどうか、または それを回避する ( true の場合、デフォルト値)。
  • bBlockedWhenClosed - if the Mover がクローズしている場合、NPC が開くことはありえない (デフォルト設定 false )。

Movers はプロパティを持つ。True に設定時、 Door PathNode はその Mover 用に自動的に生成される。これはたいがいの Doors に作動する。

JumpPads

JumpPads は指定した方向に Pawn タッチを投げます。==JumpPads== は ==JumpPad== の ForcedPaths[] 配列プロパティの最初のエントリであて先 PathNode 指定することによりセットアップされます。パスがリビルドされると、適当なジャンプベロシティは自動的に計算されます。自動生成されたベロシティに問題が起きた場合、 JumpPadJumpModifier ベクトルプロパティが設定されます。

JumpDests

JumpDests は、 PathNodes の代わりにジャンプするには高すぎる任意のスポットで使用します。ただし、その下にあるパスにリンクします。==JumpSpots== 低重量でNPCにより、またはなんらかのジャンプブースがある場合に使用されます。Bot からのパスは JumpSpot にジャンプし、それは  ForcedPath[] 配列プロパティエントリの1つの JumpSpot をもつべきです。

Lifts

リフトとして使用されている Mover は決して BumpOpenTimed 状態で使用してはいけません( StandOpenTimed を代わりに使用してください)。==Lifts== として使用されている Movers はそれらに関連した2つのタイプの NavigationPoints を持っています。 LiftCenter はそのリフトの中心に配置してください。 LiftExitLift から各出口に配置されます(しかし遠くにあるため NPSがたっていても Lift で邪魔をしません)。 LiftCenter および LiftExitsLiftTag プロパティを持ちます。これは Mover のタグに設定されていなければなりません。加えて、 Lift がトリガされた場合トリガをしているアクタのタグを LiftCenter の*LiftTrigger* プロパティにつけます。==LiftExits== は任意のプロパティ SuggestedKeyFrame を持ちます。つまりこれは、 LiftExit が使用される時にムーバーのキーフレーム数に設定されるということです。これは ある状況でのNPCよるナビゲーションを改善します。

Ladders

LadderVolume は上れるように壁に向かっていなければなりません( WallDir プロパティを調節してください。これは LadderVolume を選択時、方向矢印として表示されます。)大体の場合において、レベルデザイナーは、パスをビルド時に LadderVolume の上部と底部にて Ladder NavigationPoints が自動的に追加できるようにすることができます。しかしながら、自動配置された Ladder に問題がある場合は、レベルデザイナーは LadderVolume= bAutoPath プロパティを false に設定後、手動でLadder を配置することができます。Ladder センターは LadderVolume 内になければいけません。 LadderVolume はその底部で床に接触していなければなりません。また、 Ladder を使用している最大のNPCの 高さにより上部でエッジをつついていなければなりません。

カバーリンク

CoverLinksGears of War 用に開発されました。次の設定が使用されます:

  • bCircular = 円柱の回りのカバーなどのように円形のカバーを作るにはこれをチェックします。通常、互いを点にする円柱のどちらかの側に配置されている2つのカバーノードを使用して行います。
  • bClaimAllSlots = AI がカバー内にある場合は、他のAI はこのスポットではカバーを取り去るようなことはしません。
  • MaxFireLinkDist = カバースロット間での AI 発動リンクを作成するため、カバースロットが他のカバースロットをクエリーする最大の距離 (カバー内時、Gears AI にどこを射撃できるかを知らせる)。
  • bCanPopUp = スロットがアクタがたち上がったり、ここから狙撃できるかどうかをデザイナーに知らせます。
  • bAllowPopUp = アクタがたち上がり、ここから狙撃させたい場合はこのフラグをセットします。
  • bAllowMantle = アクタにこのカバーをよじ登らせたい場合にこのフラグを設定します。
  • bAllowCoverslip = アクタにこのカバーの周りでスリップさせたい場合はこのフラグをセットします (エッジでのみ動作します)。
  • bAllowSwatTurn = アクタにこのカバーの一部に、または一部からスワットターンをさせたい場合はこのフラグをセットします (エッジでのみ動作します)。

Gears of War でのスリップとswat において、カバースリップとはカバーの一部のエッジの周りをすばやく先に回りこむことです。スワットターンは出入り口などのような、ドアオープンスペース上で左右にすばやく反転することです。

カバーシステムは Gears of War 資産と共に作成され、gameplayも考慮されているため100% 独自のプロジェクトには応用できないことをご理解ください。