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
Якщо ви створюєте дуже маленьку гру, обмеження цільової платформи (використання пам’яті, розмір пакета, обчислювальна потужність і споживання заряду акумулятора) можуть узагалі не становити проблеми. Однак під час створення більших ігор, особливо для портативних пристроїв, споживання пам’яті, ймовірно, буде одним із найбільших обмежень. Досвідчена команда ретельно планує обсяги використання ресурсів з огляду на обмеження платформи. Defold надає низку можливостей, що допомагають керувати пам’яттю й розміром пакета. Цей посібник містить огляд цих можливостей.
Коли ви створюєте гру в Defold, ви статично оголошуєте дерево ресурсів. Кожна частина гри пов’язана з цим деревом, починаючи зі стартової колекції (bootstrap collection), яка зазвичай має назву “main.collection”. Дерево ресурсів охоплює всі посилання та всі пов’язані з ними ресурси:

У Defold також є поняття ресурсів пакета. Ресурси пакета включаються до пакета застосунку, але не є частиною дерева ресурсів. Ресурсами пакета можуть бути як допоміжні файли для певної платформи, так і зовнішні файли, які завантажуються з файлової системи та використовуються у вашій грі (наприклад, звукові банки FMOD).
Коли гру пакують, до пакета включається лише те, що є в дереві ресурсів. Усе, на що немає посилань у дереві, залишається поза пакетом. Немає потреби вручну вибирати, що включати до пакета або виключати з нього.
Коли гра запускається, рушій починає зі стартової колекції в корені дерева й завантажує ресурси в пам’ять:
Однак під час виконання рушій не завантажуватиме автоматично такі типи ресурсів, на які є посилання:
sys.load_resource().Стандартний спосіб пакування й завантаження ресурсів у Defold можна змінити, щоб точніше керувати тим, як і коли ресурси потрапляють у пам’ять.

Ресурси, на які посилаються компоненти-фабрики, зазвичай завантажуються в пам’ять під час завантаження компонента. Щойно фабрика з’являється в середовищі виконання, ресурси вже готові для створення екземплярів (instance) у грі. Щоб змінити стандартну поведінку й відкласти завантаження ресурсів фабрики, достатньо встановити для неї прапорець Load Dynamically.

Якщо цей прапорець установлено, рушій усе одно включить ресурси, на які є посилання, до пакета гри, але не завантажуватиме ресурси фабрики автоматично. Натомість у вас є два варіанти:
factory.create() або collectionfactory.create(), коли захочете створити об’єкти. Це синхронно завантажить ресурси, а потім створить нові екземпляри.factory.load() або collectionfactory.load(), щоб асинхронно завантажити ресурси. Коли ресурси будуть готові для створення екземплярів, ви отримаєте зворотний виклик.Докладніше про те, як це працює, читайте в посібнику з фабрик та посібнику з фабрик колекцій.
Defold підтримує лічильники посилань для всіх ресурсів. Якщо лічильник ресурсу досягає нуля, це означає, що на нього більше ніщо не посилається. Тоді ресурс автоматично вивантажується з пам’яті. Наприклад, якщо ви видалите всі об’єкти, створені фабрикою, а також об’єкт, що містить компонент-фабрику, ресурси, на які раніше посилалася фабрика, буде вивантажено з пам’яті.
Для фабрик зі встановленим прапорцем Load Dynamically можна викликати функцію factory.unload() або collectionfactory.unload(). Цей виклик видаляє посилання компонента-фабрики на ресурс. Якщо на ресурс більше ніщо не посилається (наприклад, усі створені об’єкти видалено), ресурс буде вивантажено з пам’яті.
За допомогою проксі колекцій можна виключити з процесу пакування всі ресурси, на які посилається компонент. Це корисно, якщо потрібно звести розмір пакета до мінімуму. Наприклад, під час запуску гри у вебі як HTML5 браузер завантажує весь пакет перед виконанням гри.

Якщо встановити для проксі колекції прапорець Exclude, ресурс, на який він посилається, буде виключено з пакета гри. Натомість ви можете зберігати виключені колекції у вибраному хмарному сховищі. У посібнику з Live update пояснено, як працює ця можливість.