高速な距離ベースのエンティティ検索のためのデータ構造(またはアルゴリズム)


8

たとえば、ゲームには100人の敵(さまざまなチーム)が走り回っていて、AIは近くのエンティティを調べて攻撃対象を確認したいと考えています。それらのエンティティを整理して、各敵がそれ自体と他のすべてのエンティティとの間の距離を計算する必要がないようにするための迅速な方法は何ですか?

手短に言えば、AIエンティティが「近くにいるのは誰ですか?」という質問にすばやく答える方法は何ですか。


クワッドツリーを使用してみてください
Ali1S232 2011

回答:


8

quadtree(2D)やoctree(3D)などの空間インデックスが必要です。


1
@FxIII私はあなたが何をしているのか全くわからない。これらの空間ツリーデータ構造は、投稿者の質問に答えるために特別に設計されており、よく理解され使用されています。
ウィル

5

最も簡単な解決策はグリッドです。レベルの上に2Dグリッドを配置します。グリッドの各セルは、現在エンティティを占有しているエンティティのコレクションを保持しています。エンティティが移動したら、離れるセルからエンティティを取り出し、入力したエンティティに追加します。

近くのセルを調べるだけで、近くのエンティティを見つけることができます。四分木はグリッドを再帰的に細分割することでこれを改善しますが、特にレベルサイズが固定されていて比較的小さい場合は、フラットなものが適切な場合があります。

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