Structure de données (ou algorithme) pour les recherches rapides d'entités basées sur la distance

8

Par exemple, votre jeu a 100 ennemis (sur différentes équipes) qui courent et leur IA veut inspecter les entités à proximité pour voir laquelle il devrait attaquer. Comment organiser rapidement ces entités afin que chaque ennemi n'ait pas à calculer la distance entre lui et toutes les autres entités?

En bref, quel est un moyen rapide pour une entité IA de répondre à la question "Qui est près de moi?"

khayman218
la source
essayez d'utiliser des arbres quad
Ali1S232

Réponses:

8

Vous voulez un index spatial tel que quadtree (2D) ou octree (3D).

Volonté
la source
1
@FxIII Je ne suis pas sûr de suivre du tout ce dont vous parlez. Ces infrastructures spatiales d'arbres sont spécifiquement conçues pour répondre à la question de l'affiche et sont bien comprises et utilisées.
Will
5

La solution la plus simple est une grille . Posez une grille 2D sur votre niveau. Chaque cellule de la grille conserve une collection des entités qui l'occupent actuellement. Lorsque les entités se déplacent, sortez-les de la cellule qu'elles quittent et ajoutez-les à celle qu'elles entrent.

Vous pouvez ensuite trouver des entités à proximité simplement en examinant les cellules à proximité. Un quadtree affine cela en subdivisant récursivement la grille, mais parfois une plate est adéquate, surtout si la taille de votre niveau est fixe et relativement petite.

munificent
la source