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?"


essayez d'utiliser des arbres quad
Ali1S232

Réponses:


8

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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.