/ / Динамічне замовлення Z в Java Game Engine - java, малювання, game-engine

Динамічне Z-замовлення в Java Game Engine - java, графіка, ігровий движок

Я будую базовий ігровий фреймворк Java 2D, але не впевнений у найкращому способі ефективної візуалізації моїх об'єктів із замовленням z. Єдині рішення, які прийшли в голову, були будь-які

  • Використання ArrayList для зберігання об'єктів та сортування їх за допомогою Порівняльника за глибиною, коли були внесені зміни

  • Використання ArrayList для зберігання HashSets об'єктів, що належать до однієї глибини

Ідея полягає в тому, щоб зберегти впорядковані об'єкти так, що об’єкт візуалізації потрібно буде лише прокрутити об'єкти та видати їх. Сортуванням може займатися щось інше.

Перший варіант вимагає постійного сортуванняArrayList щоразу, коли об’єкти додаються, видаляються або переміщуються на іншу глибину. Другий варіант потребує переміщення окремих об'єктів у різні HashSets лише тоді, коли зміниться глибина, але використовується більше пам'яті (залежно від кількості глибин).

Яке рішення (альтернативні рішення також дуже вітаються) було б найбільш логічним?

Відповіді:

0 для відповіді № 1

У більшості ігор впорядкування об'єктів досить постійне. Лише раз у раз змінюється порядок одного об'єкта Z. Використання a ArrayList для цього зазвичай робиться робота. Зауважте, що немає необхідності в постійному сортуванні. Ви додаєте об'єкти, відсортовані лише під час зйомки. Потім ви просто додаєте / переміщуєте один об’єкт до його місця в ArrayList.

Обов’язково використовуйте синхронізований список або інший метод, якого слід уникати ConcurrentModificationException оскільки нитка GUI сканує список, тоді як інший потік змінює його.