Manuals
Manuals




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

Optymalizacja zużycia pamięci

Kompresja tekstur

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.

Dynamiczne wczytywanie

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:

Optymalizacja liczników komponentów

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).

Optymalizacja liczby węzłów GUI

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 (HTML5)

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.