空きスペースでの効率的な経路探索


12

宇宙にゲームがあり、移動命令を発行したいのですが、これには経路探索が必要です。現在、A *などはほとんどがツリーに適用され、パス検索ノードのない空のスペースではないことを理解しています。現在、固定されたAABBとして表現されているいくつかの障害があります。つまり、境界のない「地形」障害はありません。さらに、ほとんどの障害物は、立方体または球体として合理的に近似できると予想しています。

だから私はずっと簡単な経路探索アルゴリズムを適用することを考えていました-つまり、現在の位置から目標位置に光線を投げるだけで、空間分割を使用して比較的迅速に障害物のリストを取得できます。私がよくわからないのは、注文したユニットが障害物の周りを移動する部分をどのように決定するかです。

私がこれまで考えてきたのは、単純に潜在的なフィールドを使用するということです。つまり、すべてのユニットは、互いに離れた強い反発力と、目的のポイントに向かって適度な力を感じるでしょう。これには、グループ命令を発行するために、別のエンティティに向けて中レベルの部隊を単純に命令できるという利点もあります。しかし、これは明らかに最適なソリューションを達成しません。

可能性のあるフィールドは、自分のパラメーターを考慮して合理的な近似を達成しますか、それとも別のソリューションが必要ですか?

回答:


7

潜在的なフィールドは機能する可能性がありますが、最適ではないパスと、ユニットが周囲の障害物に閉じ込められる「ローカルミニマム」に問題があると思います。A *は3Dオープンスペース環境に適しています。それは単に、ニーズに合ったナビゲーションメッシュを生成する問題になります。ナビゲーションノードにOctreesなどの構造を使用することもできます。各オクタントの最大サイズが小さいほど、パスは滑らかになります。チェックアウトこの記事をフェイスゲーム(今は亡き、追加ウェイバックリンク)に顔から。A *とパスの最適化(見通し線のショートカットなど)およびステアリング動作を組み合わせれば、準備完了です!パスノードにoctreeを使用する例として、以下の画像を参照してください。


これは、より大きなマップにどのようにスケールしますか?各次元で2倍の大きさのマップがある場合、8倍のノード数が必要になり、問題が生じます。
-DeadMG

必ずしも。検索がそれに近づくまで、ノードのサイズを大きく保つことができます。これにより、興味のないノードをかなり大きく、数を減らすことができます。
マイケルハウス

空スペースナビゲーションメッシュの優れた特性は、旅費の平等です。A * JPSを使用できる場合があります
ウィル

@ウィル:私は少しグーグルをしましたが、出てきた唯一の経路探索アルゴリズムを本当に理解していませんでした。回答を投稿してください。
-DeadMG

@DeadMGこれは決定的な説明です:harablog.wordpress.com/2011/09/07/jump-point-search <br/> A *を実装できれば、JPSをかなり簡単にレトロフィットできます。最初にA *を実行し、最適化としてJPSを追加します。
ウィル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.