経路探索には正方形または六角形のグリッドが適していますか?


17

パスファインディングアルゴリズムによって検索された領域に正方形または六角形のグリッドを使用するのに大きな違いはありますか。言い換えれば、正方形または六角形の方が優れています。


4
ゲームプレイに合ったものなら何でも使用すべきだと思います;)
アンドリューラッセル

回答:


19

正方形と六角形のグリッドを使用するかどうかを決定する際の主な考慮事項は、AI実装の容易さであってはなりません-幅優先検索アルゴリズムと深さ優先検索アルゴリズムは、どのようなグラフを使用してもほとんど同じです。

むしろ、これはゲームデザイナーが検討すべきゲームプレイの問題です。マスグリッドはスクエアグリッドにアクセスしやすく(16進数のボードは「ギーク」に見える傾向があります)、上下左右のコントロールの世界では、UIの観点からヘクスよりもスクエアをナビゲートする方がはるかに直感的です。正方形のグリッドは、動きをもう少し制限する傾向があります。(対角線ではなく)直交運動を想定すると、六角形グリッドでの3回の動きと比較して、1正方形の障害物の周りを歩くには4回の動きが必要です。プログラミングの観点から見ると、ヘックスは実装が少し簡単ですが、正方形のグリッドが2次元配列に等しいほど検索アルゴリズムに関するものではありませんが、16進グリッドは実際には標準のデータ構造にマッピングされません。

正方形グリッドの欠点は、動きが決して適切に感じられないことです。斜めに移動するにはsqrt(2)の移動ポイントを使用する必要がありますが、実際には1移動(対角線上を歩くのが速く、直角に歩く理由がめったにないように感じます)または2移動(対角線の動きが遅すぎるように感じます)のいずれかです)。16進グリッドを使用すると、どのパスを使用しても1つのヘックスから別のヘックスまでの距離は常に同じであるため、移動距離ははるかに直感的です。


4
+1。これは設計上の決定であり、AIの決定ではありません。六角形のグリッドが必要な場合、www-cs-students.stanford.edu /〜amitp / game - programming / grids / ...のようなオフセット正方形グリッドは、カジュアルなプレイヤーにとってはそれほど威圧的ではなく、数学的には六角形と同等です。また、便利なメモリ内表現でもあります。

2
「スクエアグリッドはマスマーケットにアクセスしやすい(16進数のボードは「ギーク」に見える傾向があります)」という文に対して+1:D
Kornel Kisielewicz

エドウィンは、グリッドベースのゲームで何が良いかを尋ねていません。彼は、AIが正方形または六角形を使用する方が良いと尋ねています。ワールドとゲームプレイ自体はそれらに制約される必要はなく、AIが検索するノードのみです。
AttackingHobo

16進グリッドと正方形グリッドの両方を使用してターンベースの戦略ゲームを実装しましたが、経路探索の複雑さに関して必要な違いはまったくありません。1つのゲームを16進マップから正方形マップに切り替えただけで、(レンダリングとは別に)2つのセクター間の距離を計算するMapLocation :: GetDistance()メソッドを変更する必要がありました。わずかにオフセットされている他のすべての行を処理するために、計算を調整する必要がありました。どちらの場合でも、同じメモリ内表現を使用できます。だから、他の人が言ったように、それは本当に設計上の問題です。
マイクストロベル

4
余談ですが、ヘックスは2次元配列にマッピングできます。正方形のグリッドを描き、偶数列ごとに半分ずつシフトします。これで、16進グリッドと同型のオフセット正方グリッドが作成されました。
アスモール

3

私はAIの専門家ではありませんが、違いはごくわずかです。正方格子は少し高速です(6ではなくノードごとに4つの接続)が、それは実際にはアルゴリズムランタイムの制限要因ではありません。使用する予定のアルゴリズムによっては、座標の計算が少し複雑になるため、コードは16進グリッドではもう少し複雑になる可能性があり、四分木/八分木ショートカットのようなものを使用するのは難しい経路探索でよく使用されます。

しかし、ターンベースの戦略ゲームレベルのようなシンプルな世界では、2つのレイアウトの違いはそれほど重要ではありません。正方形のグリッドはわずかにシンプルで高速になります。


5
「スクエアグリッドは少し速く(4つのノードごとの接続の代わりに、6)です」 -あなたはそれが6対8つの接続です。その場合には、対角線に沿って移動することができない限り
イアン・シュライバー

Touche。あなたはまったく正しいです。もちろん、斜めの接続が可能です。
グレゴリーエイヴリーウィアー

3

経路計画に関して、私が考えることができる1つの実用的な違いがあります。16進セルの中心から隣のセルへの移動は常に同じ距離ですが、対角線の移動を許可する場合、これは正方形には当てはまりません。


0

六角形に関するこのガイドは素晴らしいです。経路探索に関する部分には、インタラクティブな例と、正方形の経路探索を適応させる方法に関する情報があります。

A *やDijkstraのアルゴリズムなどのグラフベースのパスファインディング、またはFloyd-Warshallを使用している場合、16進グリッドでのパスファインディングは、正方形グリッドでのパスファインディングと変わりません。

  • 隣人。パスファインディングチュートリアルで提供するサンプルコードは、graph.neighborsを呼び出してロケーションの近隣を取得します。これには、neighborsセクションの関数を使用します。通過できない隣人を除外します。
  • ヒューリスティック。A *のサンプルコードは、2つの場所間の距離を与えるヒューリスティック関数を使用します。移動コストに合わせてスケーリングされた距離式を使用します。たとえば、移動コストがヘックスあたり5の場合、距離に5を掛けます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.