This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Использование сжатия текстур не только уменьшит размер ресурсов внутри архива вашей игры, но и может снизить объём используемой GPU-памяти.
В большинстве игр есть контент, который используется нечасто. С точки зрения использования памяти не имеет смысла держать такой контент загруженным постоянно — его лучше загружать и выгружать по мере необходимости. Это, конечно, компромисс между доступностью контента и временем загрузки.
В Defold есть несколько способов динамической загрузки контента:
Defold выделяет память для компонентов и ресурсов один раз при создании коллекции, чтобы уменьшить фрагментацию памяти. Объём выделяемой памяти зависит от настроек различных счётчиков компонентов в game.project. Используйте профайлер, чтобы получить точные данные об использовании компонентов и ресурсов, и настройте вашу игру на использование максимальных значений, близких к реальному количеству компонентов и ресурсов. Это поможет уменьшить объём используемой памяти (см. информацию об оптимизации максимального количества компонентов).
Оптимизируйте количество GUI-нодов, задав максимальное число нодов в GUI-файле в соответствии с реальными потребностями. Поле Current Nodes в свойствах компонента GUI покажет количество используемых нодов этим компонентом.
Размер heap у HTML5-игры Defold можно настроить через поле heap_size в game.project. Постарайтесь оптимизировать использование памяти в игре и выставить минимально достаточный размер heap.
Для небольших игр достижим размер heap в 32 МБ. Для более крупных игр ориентируйтесь на 64–128 МБ. Если, например, у вас получается 58 МБ и дальнейшая оптимизация уже нецелесообразна, можно остановиться на 64 МБ и не усложнять. Жёсткой целевой величины нет — всё зависит от игры. Просто старайтесь делать размер меньше, желательно шагами по степеням двойки.
Чтобы проверить текущее использование heap, запустите игру, перейдите к самому “тяжёлому” по ресурсам уровню или разделу и отслеживайте использование памяти:
if html5 then
local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
print(mem)
end
Также можно открыть инструменты разработчика в браузере и выполнить в консоли следующее:
HEAP8.length / 1024 / 1024
Если использование памяти остаётся на уровне 32 МБ — отлично. Если нет, выполните шаги по оптимизации размера самого движка и крупных ресурсов, таких как звуки и текстуры.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB