Nível adequado de representação / estrutura de dados para um jogo de plataforma 2D?


9

Estou prestes a programar uma cópia do Mario em Java. Estou pensando em 2 representações / estruturas de dados para os níveis, mas não tenho certeza de qual devo escolher:

  • Uma matriz inteira 2D.
  • Um quadtree para dividir o nível em pedaços.

Quais são as vantagens e desvantagens?

Respostas:


9

O objetivo de uma quadtree é separar eficientemente grandes blocos de dados, para que você gaste apenas tempo com os dados nas imediações. No entanto, uma matriz 2D já fornece acesso aleatório específico da localização, portanto, para um jogo 2D que pode tornar redundante um quadtree. Em um jogo em 3D, você não pode usar uma matriz para localizar tudo e é aí que os quadríceps (ou melhor ainda, os ocre) são úteis.

Agora, eu estou falando aqui sobre a representação de dados subjacente para o nível. Dependendo de como a sua arquitetura gráfica estiver configurada (por exemplo, gráficos 2D com planos em um mecanismo 3D), convém usar quadras no gráfico de cena para selecionar com eficiência o conteúdo gráfico.

E então não esqueça vários inimigos e outros objetos interativos no seu nível. Talvez você use uma matriz 2D para gerenciar os blocos do nível, mas use quadras para organizar todos os elementos interativos (por exemplo, para um mecanismo de física).


Pense desta maneira: escolha um ponto aleatoriamente no seu nível e, em seguida, pense em quanto trabalho será necessário para descobrir tudo dentro de um raio de 1000 pixels a partir desse ponto. Se você pode fazer isso rapidamente, porque tudo é organizado por localização em uma matriz 2D, não precisará de um quadtree. Se, no entanto, você tiver que percorrer tudo e verificar a distância de cada objeto individualmente, poderá tornar a pesquisa muito mais eficiente usando um quadtree.

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.