正方格子マップの(文字通り)角を切り取る手法
私のゲームには、変形可能な地形とあらゆる方向に移動できるユニットがありますが、不均一な地形によって速度が低下するレベルが含まれます。通常のAスターはほとんどの場合問題なく機能しますが、汎用パスファインダーがどのように機能しても、ユニットを直接パスに送信しない平坦な土地を除きます。シータスターは、レベル全体がかなり平らな場合は機能しますが、最初に不均一な地形を考慮する必要がある場合は、はるかに遅くなります。 マンハッタンの距離ベースのAスターアルゴリズムは高速で、他のパス検索またはステアリングアルゴリズムが引き継ぐのに十分なヒントを与えると思いますが、先を見て、いつ決定するためにどのタイプのアルゴリズムを使用するかわかりませんパスを放棄し、より直接的なルートをたどり、後でパスのどこに戻るかを指定します。 (勾配、障害物、道路などを考慮するように調整されている場合、シータスターは効率が悪すぎるようです。http://aigamedev.com/open/で地雷原の回避についてコメントに提案された解決策を参照してくださいチュートリアル/ theta-star-any-angle-paths /) 編集:私は、同様のグリッドでA-starを既に実装してテストしたことについては触れませんでした。(私はこの質問で誤って何かを削除したと思います。)障害物が最も直接的なパスをブロックしている場合(基本的にパス検出が有用な場合)、私が検討したいくつかのより明白なコスト/ヒューリスティック関数は、グリッド上の現実的なパスになりません。 )(例の画像)。シータスターアルゴリズムで使用されるコスト関数への変更は理想的な解決策のように見えますが(グリッドの使用の制約を考慮すると)、タイルの移動コストが同じであると想定されます(さらに時間がかかります)。 マンハッタン距離を使用する背後にある私の最初の理由は、障害物レイアウトや地形が変化した場合に高速経路探索アルゴリズムを使用することがより重要だったため、経路探索アルゴリズムから「コーナーカット」アルゴリズムを外部委託することでした。ユニットが到着したときに、経路探索アルゴリズムのすべての検索の順列よりも「コーナーカット」アルゴリズムを1回実行する方が理にかなっています(結果はとにかく廃棄される可能性があります)。マンハッタン距離での4近隣検索代替パスのボックスが表示され、元のパスと最短パスによって形成される直角三角形を特定できるため、これも興味深いものです。 より適切な質問は、「90度の曲がり角のあるパスでショートカットをすばやく特定する方法は何ですか?」