Odpowiednia reprezentacja poziomu / struktura danych dla gry 2D z platformą?

9

Mam zamiar zaprogramować kopię Mario w Javie. Zastanawiam się nad 2 reprezentacjami / strukturami danych dla poziomów, ale nie jestem pewien, którą wybrać:

  • Tablica liczb całkowitych 2D.
  • Czworokąt do podziału poziomu na części.

Jakie są jego zalety i wady?

Rama
źródło

Odpowiedzi:

9

Punktem quadtree jest efektywne usuwanie dużych fragmentów danych, tak aby spędzać czas tylko na danych w bezpośrednim sąsiedztwie. Jednak tablica 2D zapewnia już losowy dostęp do konkretnej lokalizacji, więc dla gry 2D, która może spowodować, że poczwórne drzewo stanie się zbędne. W grze 3D nie można użyć tablicy do zlokalizowania wszystkiego i tam przydają się kwadraty (lub jeszcze lepiej ósemki).

Teraz mówię tutaj o podstawowej reprezentacji danych dla poziomu. W zależności od konfiguracji architektury graficznej (np. Robienie grafiki 2D z płaszczyznami w silniku 3D), możesz chcieć użyć czworokątów na wykresie sceny, aby skutecznie wyrównać zawartość graficzną.

A potem nie zapomnij o różnych wrogach i innych interaktywnych obiektach na twoim poziomie. Być może używasz tablicy 2D do zarządzania kafelkami poziomu, ale używasz czworokątów do organizowania wszystkich elementów interaktywnych (np. Dla silnika fizyki).


Pomyśl o tym w ten sposób: wybierz losowy punkt na swoim poziomie, a następnie pomyśl, ile pracy zajmie znalezienie wszystkiego w promieniu 1000 pikseli od tego punktu. Jeśli możesz to zrobić szybko, ponieważ wszystko jest uporządkowane według lokalizacji w tablicy 2D, nie potrzebujesz kwadratu. Jeśli jednak będziesz musiał wszystko przejrzeć i sprawdzić odległość każdego obiektu osobno, możesz zwiększyć efektywność wyszukiwania za pomocą drzewa czterokołowego.

jhocking
źródło