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

메모리 사용량 최적화

텍스쳐 압축

텍스쳐 압축을 사용하면 게임 아카이브 안의 리소스 크기가 줄어들 뿐만 아니라, 압축된 텍스쳐는 필요한 GPU 메모리 양도 줄일 수 있습니다.

동적 로딩

대부분의 게임에는 드물게 사용되는 컨텐츠가 어느 정도 있습니다. 메모리 사용량 관점에서는 이런 컨텐츠를 항상 메모리에 로드해 두기보다, 필요할 때 로드하고 언로드하는 것이 좋습니다. 이는 런타임 메모리를 사용하는 대신 컨텐츠를 즉시 사용할 수 있게 할지, 로딩 시간이 들더라도 필요할 때 컨텐츠를 로드할지 사이의 절충입니다.

Defold는 컨텐츠를 동적으로 로드하는 여러 방법을 제공합니다:

컴포넌트 카운터 최적화

Defold는 메모리 단편화를 줄이기 위해 컬렉션이 생성될 때 컴포넌트와 리소스용 메모리를 한 번에 할당합니다. 할당되는 메모리 양은 game.project의 다양한 컴포넌트 카운터 설정값에 따라 달라집니다. 프로파일러를 사용해 정확한 컴포넌트 및 리소스 사용량을 파악하고, 게임이 실제 컴포넌트와 리소스 개수에 더 가까운 최대값을 사용하도록 구성하세요. 이렇게 하면 게임이 사용하는 메모리 양을 줄일 수 있습니다(컴포넌트 max count optimizations에 대한 정보를 참고하세요).

GUI 노드 수 최적화

GUI 파일의 최대 노드 수를 필요한 만큼만 설정하여 GUI 노드 수를 최적화하세요. GUI 컴포넌트 프로퍼티Current Nodes 필드는 GUI 컴포넌트가 사용하는 노드 수를 보여줍니다.

힙 크기(HTML5)

Defold HTML5 게임의 힙 크기는 game.projectheap_size 필드에서 설정할 수 있습니다. 게임의 메모리 사용량을 최적화하고 힙 크기를 최소한으로 설정하세요.

작은 게임에서는 32 MB도 달성 가능한 힙 크기입니다. 더 큰 게임에서는 64–128 MB를 목표로 하세요. 예를 들어 현재 58 MB이고 추가 최적화가 어렵다면, 너무 깊게 고민하지 않고 64 MB로 정해도 됩니다. 엄격한 목표 크기는 없습니다. 게임에 따라 달라집니다. 가능한 더 작은 크기를 목표로 하되, 이상적으로는 2의 거듭제곱 단위로 맞추세요.

현재 힙 사용량을 확인하려면 게임을 실행하고 가장 “리소스를 많이 사용하는” 레벨이나 구간을 플레이하면서 메모리 사용량을 모니터링하세요:

if html5 then
    local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
    print(mem)
end

브라우저의 개발자 도구를 열고 콘솔에 다음을 입력해도 됩니다:

HEAP8.length / 1024 / 1024

메모리 사용량이 32 MB로 유지된다면 좋습니다! 그렇지 않다면 엔진 자체와 사운드 및 텍스쳐 같은 큰 에셋의 크기를 최적화하는 단계를 따르세요.