移動するターゲットに向けた経路探索の標準的なソリューションは何ですか?


28

ゲームのような2D RTSに取り組んでいます。基本的なA *は、ユニットをポイントAからポイントBに移動するのに最適です。

しかし、Aが移動するオブジェクトBを攻撃するように、オブジェクトBの位置が変更された後、各フレームでA *を呼び出すなど、継続的なパス検索の問題に直面しています。

この問題の標準的な方法は何ですか?


1
標準的な方法はありません。
キロタン

3
単一の標準的な方法はありませんが、問題を解決する一般的な方法に関する多くの文献があります。

回答:


17

私が知っていることから、「ダイナミックA *」の略であるD *アルゴリズムを見ることができます。このアルゴリズムは、動的な環境のパスファインディングを計算するために使用されます。ここでは、移動ターゲットを使用します。

:ここではターゲットパス発見を移動するためのD *を用いて紙だターゲットD * Liteの移動は、


10

1つのオプションは、数フレームごとに1回だけ新しいパスを作成することです。1秒間に60回以上ではなく、1秒間に1〜2回行った場合、両方とも非常に高速で移動するオブジェクトでない限り、ユーザーは気づかないでしょう。


8

犬が誰かを追い詰めるときに明らかに使用する「犬の曲線」アプローチを使用できます。彼らは、インパクトポイントが「将来」どこにあるかを計算し、その位置にまっすぐになります。

単純な近似的な方法は、線に沿ったものです:

A = NPC

B =ターゲット

T = B:s位置に到達する時間(B:s初期位置)

Bが「T」時間内にある場所を計算し(Bが同じ速度/角度で継続する場合)、代わりにそこに行きます。

距離が変化するため、これは完璧な方法ではありませんが、完璧なソリューションを作成するよりもはるかに簡単で、単に「B」に到達するよりもはるかに優れています。


3
犬について知りませんでした。今日は何かを学びました!
SteeveDroz

3

カイロタンは、標準的な方法がないことに同意します。

私が仕事で見た方法の1つは、ターゲットが同じ方向に移動し続けると仮定し、パス検索アルゴリズムを実行するときにゴールの位置を変更することでした。つまり、A *ノードで2つのメトリックを保持する必要があります(単なるコストではなく、コストと時間)。

それよりうまくやることは非常に難しいです。実際にターゲットの揺るぎないパスについての知識がない限り、AIの2番目の推測またはターゲットの動作をシミュレートしてターゲットの場所とそのパスを推測するため、かなり難しいAIの世界に向かっています。この種のAIは、ゲーム理論に基づくリアルタイムのABゲームであり、3DゲームAIツールキットでは標準ではありません。


2

動的なパス検索を行う1つの方法は、エンティティにターゲットがどこに向かっているかを予測させることです。

これを行う1つの方法は、テイラー級数を使用することです。

ターゲットのパスを関数S(t)で経時的に呼び出します。Sは位置、tは現在の時刻、パスの近似値はA(f)、fは将来の日付です。 。

その場合、最も単純で最も愚かな近似はA(f)= 0です。

次に簡単なのはA(f)= S(t)です。tは現在の時刻で、fは未来です。これは、ターゲットが適切に停止することを予測しています。

3番目に簡単なのは、A(f)= S '(t)* f + S(t)です。ここで、S'はSの時間に関する導関数です。これは、ターゲットが加速なしで一定の速度で継続することを予測しています。

4番目に簡単なのは、A(f)= S ''(t)* f ^ 2/2 + S '(t)* f + S(t)です。これは、ターゲットが落下するボールのように一定の速度で加速していることを予測しています。

これは時間の変化の観点から言い換えることができますが、おそらくゲームにとってより便利です。今、Sは何でも構いません。X座標、Y座標、オブジェクト間の距離、角度などがあります。また、オブジェクトの将来のパスを予測するより良い方法があると思われるので、少し見てみましょう。


1

地形が適度に開いていて、ターゲットが追跡者からあまり遠くない場合、インターセプトステアリング動作を使用できます。基本的に、ターゲットの位置と速度を取得して、ターゲットの前にある、あまり遠くない、近くない位置を計算し、追跡者をそのポイントに向けます(それぞれ定期的に計算されます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.