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 одноразово виділяє пам’ять для компонентів (component) і ресурсів під час створення колекції (collection), щоб зменшити фрагментацію пам’яті. Обсяг виділеної пам’яті залежить від налаштувань різних лічильників компонентів у game.project. Скористайтеся профайлером, щоб отримати точні дані про використання компонентів і ресурсів, та налаштуйте гру так, щоб максимальні значення були ближчими до фактичної кількості компонентів і ресурсів. Це зменшить обсяг пам’яті, який використовує ваша гра (див. інформацію про оптимізацію максимальної кількості компонентів).
Оптимізуйте кількість вузлів GUI, установивши у файлі GUI максимальну кількість вузлів відповідно до потреб. Поле Current Nodes у властивостях компонента GUI показує кількість вузлів, які використовує компонент GUI.
Розмір купи гри Defold для HTML5 можна налаштувати в полі heap_size у game.project. Оптимізуйте використання пам’яті у грі та встановіть мінімальний розмір купи.
Для невеликих ігор цілком досяжний розмір купи 32 МБ. Для більших ігор орієнтуйтеся на 64–128 МБ. Якщо, наприклад, гра використовує 58 МБ і подальша оптимізація недоцільна, можна без зайвих вагань зупинитися на 64 МБ. Суворої цільової межі немає — усе залежить від гри. Просто прагніть менших розмірів, бажано вибираючи значення, що є степенями двійки.
Щоб перевірити поточне використання купи, запустіть гру, перейдіть на рівень або в ділянку, що потребує найбільше ресурсів, і стежте за споживанням пам’яті:
if html5 then
local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
print(mem)
end
Також можна відкрити інструменти розробника браузера та ввести в консолі:
HEAP8.length / 1024 / 1024
Якщо використання пам’яті залишається на рівні 32 МБ — чудово! Якщо ні, виконайте кроки з оптимізації розміру самого рушія та великих ресурсів, як-от звуків і текстур.