Estrutura de dados (ou algoritmo) para pesquisas rápidas de entidades baseadas em distância


8

Por exemplo, seu jogo tem 100 inimigos (em equipes diferentes) rodando e a IA deles quer inspecionar as entidades próximas para ver quais atacar. Qual é a maneira mais rápida de organizar essas entidades para que cada inimigo não precise calcular a distância entre si e todas as outras entidades?

Em resumo, qual é a maneira mais rápida de uma entidade de IA responder à pergunta "Quem está perto de mim?"


tente usar árvores quad
Ali1S232 17/08

Respostas:


8

Você deseja um índice espacial, como quadtree (2D) ou octree (3D).


11
@FxIII Não sei se sigo o que você está falando. Essas estruturas de dados em árvore espacial são projetadas especificamente para responder à pergunta do pôster e são bem compreendidas e usadas.
Will

5

A solução mais simples é uma grade . Coloque uma grade 2D sobre o seu nível. Cada célula na grade mantém uma coleção de quais entidades a estão ocupando no momento. À medida que as entidades se movem, retire-as da célula em que estão saindo e adicione-as à que elas entrarem.

Você pode encontrar entidades próximas apenas examinando as células próximas. Uma quadtree refina isso subdividindo recursivamente a grade, mas às vezes uma plana é adequada, especialmente se o tamanho do seu nível for fixo e relativamente pequeno.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.