Я пытаюсь создать полностью автоматизированный игровой движок, который должен работать на основе событий. Проблема, с которой я сталкиваюсь, заключается в том, что я создал класс карты и инициализирован в игровом классе. Это почти статично, и для игры существует только одна карта. Новые карты загружаются путем очистки объектов на текущей карте и добавления новых карт. Здесь вы можете увидеть источник класса карты.Разработка Java-игр. Создание карты плитки быстрее. Советы по оптимизации
http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/map/Map.java
Основные проблемы приходят в обнаружении столкновения, где я использую обнаружение столкновений перебора, где я не должны. Это сильно замедляет игру, и я хочу проверить столкновение только для объектов, которые ближе к объекту. Я использую интерфейс MapLoader для построения карт. Я думаю, что вызов метода collision() объектов в другом потоке может помочь. Однако все объекты карты обновляются в классе Game.
Вот класс игры, в случае если это может помочь
http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/core/Game.java
Там другая проблема, что некоторые раза, объекты не уничтожаются. Я вызываю метод removeObject() карты, но он принимает 1-секундную задержку и несколько раз не удаляет все.
Это дает мне 48-64 кадров в секунду в платформенной игре с 158 объектами в игре. Но в игре в стиле космических захватчиков он дает мне всего 20-30 кадров в секунду. Любые советы по оптимизации очень ценны ...
Если бы кто-нибудь мог получить мне учебник по двоичному интервалу и т. Д., Я был бы благодарен.
Вместо использования rectan gle я могу проверить границы самостоятельно ... –
Изменен поток в классе Game. Теперь обнаружение столкновения выполняется в отдельном потоке, так что теперь обнаружение столкновения быстро на 3000 объектов на карте. Падает 1-2 кадра в секунду, но этого достаточно для простого 2D-движка –