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-нодов, задав максимальное число нодов в GUI-файле в соответствии с реальными потребностями. Поле Current Nodes в свойствах компонента GUI покажет количество используемых нодов этим компонентом.

Heap size (HTML5)

The heap size of a Defold HTML5 game can be configured from the heap_size field in game.project. Make sure to optimize memory usage of your game and set a minimal heap size.

For small games, 32 MB is an achievable heap size. For larger games, aim for 64–128 MB. If, for example, you’re at 58 MB and further optimization isn’t feasible, you can settle on 64 MB without overthinking it. There’s no strict target size — it depends on the game. Just aim for smaller sizes, ideally in steps of powers of two.

To check current heap usage you can launch your game and play the game in the most “resource heavy” level or section and monitor memory usage:

if html5 then
    local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
    print(mem)
end

You can also open the developer tools of your browser and write the following in the console:

HEAP8.length / 1024 / 1024

If the memory usage remains at 32 MB, that’s great! If not, follow the steps to optimize the size of the engine itself and large assets such as sounds and textures.