パスファインディングアルゴリズムによって検索された領域に正方形または六角形のグリッドを使用するのに大きな違いはありますか。言い換えれば、正方形または六角形の方が優れています。
パスファインディングアルゴリズムによって検索された領域に正方形または六角形のグリッドを使用するのに大きな違いはありますか。言い換えれば、正方形または六角形の方が優れています。
回答:
正方形と六角形のグリッドを使用するかどうかを決定する際の主な考慮事項は、AI実装の容易さであってはなりません-幅優先検索アルゴリズムと深さ優先検索アルゴリズムは、どのようなグラフを使用してもほとんど同じです。
むしろ、これはゲームデザイナーが検討すべきゲームプレイの問題です。マスグリッドはスクエアグリッドにアクセスしやすく(16進数のボードは「ギーク」に見える傾向があります)、上下左右のコントロールの世界では、UIの観点からヘクスよりもスクエアをナビゲートする方がはるかに直感的です。正方形のグリッドは、動きをもう少し制限する傾向があります。(対角線ではなく)直交運動を想定すると、六角形グリッドでの3回の動きと比較して、1正方形の障害物の周りを歩くには4回の動きが必要です。プログラミングの観点から見ると、ヘックスは実装が少し簡単ですが、正方形のグリッドが2次元配列に等しいほど検索アルゴリズムに関するものではありませんが、16進グリッドは実際には標準のデータ構造にマッピングされません。
正方形グリッドの欠点は、動きが決して適切に感じられないことです。斜めに移動するにはsqrt(2)の移動ポイントを使用する必要がありますが、実際には1移動(対角線上を歩くのが速く、直角に歩く理由がめったにないように感じます)または2移動(対角線の動きが遅すぎるように感じます)のいずれかです)。16進グリッドを使用すると、どのパスを使用しても1つのヘックスから別のヘックスまでの距離は常に同じであるため、移動距離ははるかに直感的です。
私はAIの専門家ではありませんが、違いはごくわずかです。正方格子は少し高速です(6ではなくノードごとに4つの接続)が、それは実際にはアルゴリズムランタイムの制限要因ではありません。使用する予定のアルゴリズムによっては、座標の計算が少し複雑になるため、コードは16進グリッドではもう少し複雑になる可能性があり、四分木/八分木ショートカットのようなものを使用するのは難しい経路探索でよく使用されます。
しかし、ターンベースの戦略ゲームレベルのようなシンプルな世界では、2つのレイアウトの違いはそれほど重要ではありません。正方形のグリッドはわずかにシンプルで高速になります。
六角形に関するこのガイドは素晴らしいです。経路探索に関する部分には、インタラクティブな例と、正方形の経路探索を適応させる方法に関する情報があります。
A *やDijkstraのアルゴリズムなどのグラフベースのパスファインディング、またはFloyd-Warshallを使用している場合、16進グリッドでのパスファインディングは、正方形グリッドでのパスファインディングと変わりません。
- 隣人。パスファインディングチュートリアルで提供するサンプルコードは、graph.neighborsを呼び出してロケーションの近隣を取得します。これには、neighborsセクションの関数を使用します。通過できない隣人を除外します。
- ヒューリスティック。A *のサンプルコードは、2つの場所間の距離を与えるヒューリスティック関数を使用します。移動コストに合わせてスケーリングされた距離式を使用します。たとえば、移動コストがヘックスあたり5の場合、距離に5を掛けます。