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
Korzystanie z kompresji tekstur nie tylko zmniejszy rozmiar zasobów w archiwum gry, ale skompresowane tekstury mogą też ograniczyć ilość pamięci GPU potrzebnej do ich przechowywania.
Większość gier ma przynajmniej część zawartości, z której korzysta się rzadko. Z punktu widzenia zużycia pamięci nie ma sensu, aby taka zawartość była wczytana przez cały czas. Lepiej wczytywać ją i zwalniać wtedy, gdy jest potrzebna. To oczywiście oznacza kompromis między natychmiastową dostępnością a kosztem pamięci w czasie działania oraz kosztem czasu wczytywania.
Defold oferuje kilka sposobów dynamicznego wczytywania zawartości:
Defold przydziela pamięć dla komponentów i zasobów jednorazowo podczas tworzenia kolekcji, aby ograniczyć fragmentację pamięci. Ilość przydzielanej pamięci zależy od konfiguracji różnych liczników komponentów w pliku game.project. Użyj profilera, aby uzyskać dokładne dane o użyciu komponentów i zasobów, a następnie skonfiguruj grę tak, by korzystała z wartości maksymalnych bliższych rzeczywistej liczbie komponentów i zasobów. Zmniejszy to ilość pamięci używanej przez grę (zobacz informacje o optymalizacji liczników maksymalnych komponentów).
Optymalizuj liczbę węzłów GUI, ustawiając maksymalną liczbę węzłów w pliku GUI tylko na tyle, ile jest potrzebne. Pole Current Nodes w właściwościach komponentu GUI pokazuje liczbę węzłów używanych przez komponent GUI.
Rozmiar sterty gry HTML5 w Defold można skonfigurować w polu heap_size w game.project. Pamiętaj, aby zoptymalizować zużycie pamięci w grze i ustawić możliwie najmniejszy rozmiar sterty.
W przypadku małych gier osiągalny jest rozmiar sterty na poziomie 32 MB. W przypadku większych gier celuj w 64-128 MB. Jeśli na przykład jesteś na poziomie 58 MB i dalsza optymalizacja nie jest już możliwa, możesz bez zbędnego roztrząsania zatrzymać się na 64 MB. Nie ma sztywno ustalonego docelowego rozmiaru - zależy to od gry. Staraj się po prostu, aby wartości były mniejsze, najlepiej skokami odpowiadającymi potęgom dwójki.
Aby sprawdzić bieżące zużycie sterty, możesz uruchomić grę i zagrać w najbardziej zasobożernym poziomie lub sekcji, a następnie obserwować zużycie pamięci:
if html5 then
local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
print(mem)
end
Możesz też otworzyć narzędzia deweloperskie przeglądarki i wpisać w konsoli następującą komendę:
HEAP8.length / 1024 / 1024
Jeśli zużycie pamięci pozostaje na poziomie 32 MB, to świetnie. Jeśli nie, wykonaj kroki, aby zoptymalizować rozmiar samego silnika oraz dużych zasobów, takich jak dźwięki i tekstury.