Подходящее представление уровня / структура данных для 2D-платформы игры?

9

Я собираюсь запрограммировать копию Марио на Java. Я думаю о 2 представлениях / структурах данных для уровней, но я не уверен, какой из них выбрать:

  • 2D целочисленный массив.
  • Quadtree, чтобы разделить уровень на части.

Каковы его преимущества и недостатки?

Рама
источник

Ответы:

9

Задача квадродерева - эффективно отбирать большие порции данных, чтобы вы тратили время только на данные в непосредственной близости. Однако двумерный массив уже дает вам произвольный доступ, зависящий от местоположения, поэтому для двумерной игры, которая может сделать лишнее квадри. В 3D-игре вы не можете использовать массив, чтобы найти все, и именно здесь удобны квадродерева (или, что еще лучше, октавы).

Теперь я говорю о базовом представлении данных для уровня. В зависимости от того, как настроена ваша графическая архитектура (например, создание 2D-графики с плоскостями в 3D-движке), вы можете использовать квадродерево в графе сцены, чтобы эффективно отбирать графический контент.

И затем не забывайте о различных врагах и других интерактивных объектах на вашем уровне. Возможно, вы используете 2D-массив для управления плитками уровня, но используете квадродерево для организации всех интерактивных элементов (например, для физического движка).


Подумайте об этом следующим образом: выберите точку на вашем уровне случайным образом, а затем подумайте, сколько потребуется работы, чтобы выяснить все в радиусе 1000 пикселей от этой точки. Если вы можете сделать это быстро, потому что все организовано по расположению в двумерном массиве, тогда вам не нужно квадродерево. Если, однако, вам придется проходить все циклы и проверять расстояние каждого объекта в отдельности, то вы можете сделать поиск намного более эффективным, используя квадродерево.

jhocking
источник