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


9

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

  • 2D цілочисельний масив.
  • Квадрат, щоб розділити рівень на частини.

Які його переваги та недоліки?

Відповіді:


9

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

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

І тоді не забувайте різних ворогів та інших інтерактивних об'єктів на вашому рівні. Можливо, ви використовуєте 2D-масив для керування плитками рівня, але використовуйте квадрати для організації всіх інтерактивних елементів (наприклад, для фізичного двигуна).


Подумайте про це так: виберіть навмання крапку на своєму рівні, а потім подумайте, скільки роботи знадобиться, щоб розібратися з усім у радіусі 1000 пікселів цієї точки. Якщо ви можете зробити це швидко, тому що все організовано за розташуванням у двовимірному масиві, вам не потрібен квадратик. Якщо вам все-таки доведеться переглядати все і перевіряти відстань кожного об'єкта окремо, ви можете зробити пошук набагато ефективнішим за допомогою квадрату.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.