Я написал базовый Java-апплет, который работает в качестве средства просмотра карт (например, Google Maps) для фанатов игр.
В нем я реализовал алгоритм поиска пути A * на 2D-карте с 16 различными этажами, «соединенными» в определенных точках. Этажи хранятся в PNG-изображениях, которые при необходимости загружаются и преобразуются в байтовые массивы. Стоимость узла извлекается из значений пикселей RGB и помещается в байтовые массивы.
Карта содержит около 2 миллионов плиток на 16 этажах. Изображения имеют размер 1475 x 2000 (15–140 КБ для изображений PNG), поэтому на некоторых этажах много пустых плиток.
Массивы байтов будут огромными в памяти, что приведет к ошибке «java.lang.OutOfMemoryError: Java heap space» для большинства конфигураций JVM.
Так что мои вопросы
- Есть ли способ уменьшить размер этих байтовых массивов и при этом правильно использовать функцию поиска пути?
- Стоит ли использовать другой подход к поиску оптимального пути, не имея тайлов в памяти?
Я думаю, что поиск пути на веб-сервере будет слишком загружен процессором.
С уважением,
A