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
Jeśli tworzysz bardzo małą grę, ograniczenia platformy docelowej, takie jak zużycie pamięci, rozmiar pakietu, moc obliczeniowa czy pobór energii, mogą w ogóle nie stanowić problemu. Przy większych grach, zwłaszcza na urządzeniach przenośnych, zużycie pamięci szybko staje się jednym z głównych ograniczeń. Doświadczony zespół planuje budżety zasobów z uwzględnieniem ograniczeń platformy. Defold udostępnia zestaw funkcji, które pomagają kontrolować pamięć i rozmiar pakietu. Ta instrukcja zawiera ich przegląd.
Podczas budowania gry w Defold statycznie deklarujesz drzewo zasobów. Każdy element gry trafia do tego drzewa, począwszy od kolekcji bootstrapowej, zwykle o nazwie main.collection. Drzewo zasobów podąża za wszystkimi odwołaniami i obejmuje wszystkie zasoby z nimi powiązane:

Defold ma też pojęcie zasobów pakietu. Są one dołączane do pakietu aplikacji, ale nie należą do drzewa zasobów. Mogą to być zarówno pliki pomocnicze zależne od platformy, jak i zewnętrzne pliki wczytywane z systemu plików używane przez grę, na przykład banki dźwięków FMOD.
Podczas tworzenia pakietu gry dołączane jest tylko to, co znajduje się w drzewie zasobów. Wszystko, do czego nie prowadzi żadne odwołanie w drzewie, zostaje pominięte. Nie trzeba ręcznie wybierać, co ma trafić do pakietu, a co ma zostać z niego wykluczone.
Podczas uruchamiania gry silnik zaczyna od bootstrapowego korzenia drzewa i ładuje zasoby do pamięci:
Silnik nie ładuje jednak automatycznie następujących typów zasobów wskazanych w drzewie:
Domyślny sposób, w jaki Defold pakuje i ładuje zasoby, można zmienić tak, aby zyskać precyzyjną kontrolę nad tym, kiedy i jak trafiają one do pamięci.

Zasoby wskazywane przez komponenty Factory są zwykle ładowane do pamięci razem z samym komponentem. Dzięki temu są gotowe do tworzenia obiektów od razu, gdy fabryka istnieje w czasie działania gry. Aby zmienić to zachowanie i odroczyć ładowanie zasobów Factory, zaznacz Load Dynamically.

Po zaznaczeniu tego pola silnik nadal dołączy wskazane zasoby do pakietu gry, ale nie załaduje ich automatycznie. Zamiast tego masz dwie możliwości:
Szczegóły działania znajdziesz w instrukcji Factory i instrukcji Collection factory.
Defold utrzymuje liczniki referencji dla wszystkich zasobów. Jeśli licznik zasobu spadnie do zera, oznacza to, że nic już się do niego nie odwołuje. Zasób jest wtedy automatycznie zwalniany z pamięci. Na przykład jeśli usuniesz wszystkie obiekty utworzone przez fabrykę i dodatkowo usuniesz obiekt zawierający komponent Factory, zasoby wcześniej wskazywane przez tę fabrykę zostaną zwolnione z pamięci.
W przypadku fabryk oznaczonych Load Dynamically możesz wywołać factory.unload() albo collectionfactory.unload(). To wywołanie usuwa odwołanie komponentu Factory do zasobu. Jeśli nic innego nie odwołuje się już do tego zasobu, na przykład wszystkie utworzone obiekty zostały usunięte, zasób zostanie zwolniony z pamięci.
W przypadku Collection proxy można pominąć w procesie tworzenia pakietu wszystkie zasoby, do których odwołuje się komponent. Jest to przydatne, jeśli chcesz zminimalizować rozmiar pakietu. Na przykład podczas uruchamiania gry w przeglądarce jako HTML5 przeglądarka pobiera cały pakiet, zanim uruchomi grę.

Po oznaczeniu Collection proxy jako Exclude wskazany zasób zostanie pominięty w pakiecie gry. Zamiast tego możesz przechowywać wykluczone kolekcje w wybranym magazynie w chmurze. Instrukcja Live update wyjaśnia, jak działa ta funkcja.