Rappresentazione di livello / struttura dei dati appropriati per un gioco platfrom 2D?


9

Sto per programmare una copia di Mario in Java. Sto pensando a 2 rappresentazioni / strutture dati per i livelli ma non sono sicuro di quale scegliere:

  • Un array intero 2D.
  • Un quadrifoglio per dividere il livello in pezzi.

Quali sono i suoi vantaggi e svantaggi?

Risposte:


9

Il punto di un quadrifoglio è quello di eliminare in modo efficiente grossi blocchi di dati in modo da dedicare solo tempo ai dati nelle immediate vicinanze. Tuttavia, un array 2D offre già un accesso casuale specifico per la posizione, quindi per un gioco 2D che può rendere ridondante un quadrifoglio. In un gioco 3D non è possibile utilizzare un array per localizzare tutto ed è qui che i quadricre (o meglio ancora gli octre) sono utili.

Ora, sto parlando qui della rappresentazione dei dati sottostanti per il livello. A seconda di come viene configurata la tua architettura grafica (ad es. Facendo grafica 2D con piani in un motore 3D) potresti voler usare i quadrifogli nel grafico della scena per abbattere in modo efficiente il contenuto grafico.

E poi non dimenticare vari nemici e altri oggetti interattivi nel tuo livello. Forse usi un array 2D per gestire le tessere del livello, ma usi i quadrifogli per organizzare tutti gli elementi interattivi (es. Per un motore fisico).


Pensala in questo modo: scegli un punto a caso nel tuo livello, quindi pensa a quanto lavoro ci vorrà per capire tutto in un raggio di 1000 pixel da quel punto. Se riesci a farlo rapidamente perché tutto è organizzato per posizione in un array 2D, non hai bisogno di un quadrifoglio. Se tuttavia dovessi scorrere tutto e controllare individualmente la distanza di ogni oggetto, allora potresti rendere la ricerca molto più efficiente usando un quadrifoglio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.