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

게임 크기 최적화

게임의 크기는 웹과 모바일 같은 플랫폼에서는 중요한 성공 요인이 될 수 있지만, 디스크 공간이 저렴하고 넉넉한 데스크톱과 콘솔에서는 상대적으로 덜 중요합니다.

iOS 및 Android

Apple과 Google은 모바일 네트워크로 다운로드할 때(Wi-Fi로 다운로드하는 것과 달리) 적용되는 어플리케이션 크기 제한을 정의했습니다. Android에서 app bundles로 게시된 앱의 제한은 200 MB입니다. iOS에서는 어플리케이션이 200 MB보다 크면 사용자에게 경고가 표시되지만, 계속 다운로드할 수 있습니다.

2017년 연구에 따르면 “APK 크기가 6 MB 늘어날 때마다 설치 전환율이 1% 감소하는 것을 확인했습니다.” (출처)

HTML5

Poki와 그 밖의 많은 웹 게임 플랫폼은 초기 다운로드 크기가 5 MB를 넘지 않도록 권장합니다.

Facebook은 Facebook Instant Game이 5초 이내, 가능하면 3초 이내에 시작되어야 한다고 권장합니다. 이것이 실제 어플리케이션 크기로 무엇을 의미하는지는 명확히 정의되어 있지 않지만, 대략 최대 20 MB 범위의 크기를 말합니다.

플레이어블 광고는 보통 광고 네트워크에 따라 2 MB에서 5 MB 사이로 제한됩니다.

크기 최적화 전략

어플리케이션 크기는 두 가지 방식으로 최적화할 수 있습니다. 엔진 크기를 줄이거나 게임 에셋의 크기를 줄이는 것입니다.

어플리케이션 크기가 무엇으로 구성되어 있는지 더 잘 이해하려면 번들링할 때 빌드 리포트를 생성할 수 있습니다. 대부분의 게임에서는 사운드와 그래픽이 크기의 대부분을 차지하는 경우가 흔합니다.

Defold는 어플리케이션을 빌드하고 번들링할 때 종속성 트리를 생성합니다. 빌드 시스템은 game.project 파일에 지정된 부트스트랩(bootstrap) 컬렉션에서 시작해, 참조되는 모든 컬렉션, 게임 오브젝트, 컴포넌트를 검사하여 사용 중인 에셋 목록을 만듭니다. 최종 어플리케이션 번들에는 이 에셋들만 포함됩니다. 직접 참조되지 않는 것은 모두 제외됩니다. 사용하지 않는 에셋이 포함되지 않는다는 점은 알아두면 좋지만, 개발자는 여전히 최종 어플리케이션에 무엇이 들어가는지, 개별 에셋의 크기와 전체 어플리케이션 번들의 총 크기를 고려해야 합니다.

엔진 크기 최적화

엔진 크기를 빠르게 줄이는 방법은 사용하지 않는 엔진 기능을 제거하는 것입니다. 이 작업은 필요하지 않은 엔진 컴포넌트를 제거할 수 있는 어플리케이션 메니페스트 파일에서 수행합니다. 예:

  • Physics - 게임이 Box2D 또는 Bullet3D 물리를 사용하지 않는다면 물리 엔진을 제거하는 것을 강력히 권장합니다
  • LiveUpdate - 게임이 LiveUpdate를 사용하지 않는다면 제거할 수 있습니다
  • Image loaded - 게임이 image.load()를 사용해 이미지를 수동으로 로드하고 디코딩하지 않는 경우
  • BasisU - 게임에 텍스쳐가 적다면 BasisU 없이(어플리케이션 메니페스트로 제거) 텍스쳐 압축도 사용하지 않은 빌드 크기와, BasisU 및 압축된 텍스쳐를 사용한 빌드 크기를 비교해 보세요. 텍스쳐가 제한적인 게임에서는 바이너리 크기를 줄이고 텍스쳐 압축을 건너뛰는 편이 더 유리할 수 있습니다. 또한 트랜스코더를 사용하지 않으면 게임 실행에 필요한 메모리 양도 줄일 수 있습니다.

에셋 크기 최적화

에셋 크기 최적화에서 가장 큰 효과는 보통 사운드와 텍스쳐의 크기를 줄일 때 얻습니다.

사운드 최적화

Defold는 다음 포멧을 지원합니다.

  • .wav
  • .ogg
  • .opus

사운드 파일은 16비트 샘플을 사용해야 합니다. Defold의 사운드 디코더는 현재 사운드 장치에 맞게 필요에 따라 사운드 샘플 레이트를 업/다운스케일합니다.

사운드 효과처럼 짧은 사운드는 더 강하게 압축하는 경우가 많고, 음악 파일은 압축을 덜 적용하는 경우가 많습니다. Defold는 압축을 수행하지 않으므로, 개발자가 각 오디오 포멧에 맞게 직접 처리해야 합니다.

외부 사운드 편집 소프트웨어(또는 예를 들어 ffmpeg를 사용하는 커맨드 라인)를 사용해 사운드를 편집하여 품질을 낮추거나 포멧 간 변환을 할 수 있습니다. 컨텐츠 크기를 더 줄이려면 사운드를 스테레오에서 모노로 변환하는 것도 고려하세요.

텍스쳐 최적화

게임에서 사용하는 텍스쳐를 최적화하는 방법은 여러 가지가 있지만, 먼저 해야 할 일은 아틀라스에 추가되거나 타일 소스로 사용되는 이미지의 크기를 확인하는 것입니다. 게임에서 실제로 필요한 것보다 더 큰 이미지를 사용해서는 안 됩니다. 큰 이미지를 임포트한 뒤 적절한 크기로 축소하는 것은 텍스쳐 메모리 낭비이므로 피해야 합니다. 외부 이미지 편집 소프트웨어를 사용해 이미지 크기를 게임에서 실제로 필요한 크기로 조정하는 것부터 시작하세요. 배경 이미지 같은 경우에는 작은 이미지를 사용하고 원하는 크기로 확대해도 괜찮을 수 있습니다. 이미지를 올바른 크기로 줄이고 아틀라스에 추가하거나 타일 소스로 사용한 뒤에는 아틀라스 자체의 크기도 고려해야 합니다. 사용할 수 있는 최대 아틀라스 크기는 플랫폼과 그래픽 하드웨어에 따라 다릅니다.

이 포럼 게시물은 스크립트나 서드 파티 소프트웨어를 사용해 여러 이미지를 리사이즈하는 몇 가지 팁을 제안합니다.

  • HTML5의 최대 텍스쳐 크기는 Web3D Survey project에 보고되어 있습니다
  • iOS의 최대 텍스쳐 크기:
    • iPad: 2048x2048
    • iPhone 4: 2048x2048
    • iPad 2, 3, Mini, Air, Pro: 4096x4096
    • iPhone 4s, 5, 6+, 6s: 4096x4096
  • Android의 최대 텍스쳐 크기는 매우 다양하지만, 일반적으로 충분히 최신인 모든 장치는 적어도 4096x4096을 지원합니다.

아틀라스가 너무 크면 여러 개의 작은 아틀라스로 나누거나, 멀티 페이지 아틀라스를 사용하거나, 텍스쳐 프로파일로 전체 아틀라스의 스케일을 조정해야 합니다. Defold의 텍스쳐 프로파일 시스템은 전체 아틀라스의 스케일을 조정할 수 있을 뿐만 아니라 압축 알고리즘을 적용해 디스크에서 아틀라스 크기를 줄일 수도 있습니다. 매뉴얼에서 텍스쳐 프로파일에 대해 더 읽을 수 있습니다. 무엇을 사용해야 할지 모르겠다면, 추가 커스터마이징을 위한 시작점으로 다음 설정부터 시도해 보세요.

  • mipmaps: false
  • premultiply_alpha: true
  • format: TEXTURE_FORMAT_RGBA
  • compression_level: NORMAL
  • compression_type: COMPRESSION_TYPE_BASIS_UASTC

이 포럼 게시물에서 텍스쳐를 최적화하고 관리하는 방법을 더 읽을 수 있습니다.

폰트 최적화

사용할 심볼을 지정하고 All Chars 체크박스를 사용하는 대신 Characters에 설정하면 폰트 크기가 더 작아집니다.

필요할 때 다운로드하도록 컨텐츠 제외하기

초기 어플리케이션 크기를 줄이는 또 다른 방법은 게임 컨텐츠의 일부를 어플리케이션 번들에서 제외하고 필요할 때 다운로드하는 것입니다. Defold는 필요할 때 다운로드할 컨텐츠를 제외하기 위해 Live Update라는 시스템을 제공합니다.

제외되는 컨텐츠는 전체 레벨부터 해금 가능한 캐릭터, 스킨, 무기 또는 탈것까지 무엇이든 될 수 있습니다. 게임에 컨텐츠가 많다면 부트스트랩 컬렉션과 첫 번째 레벨 컬렉션이 해당 레벨에 필요한 최소한의 리소스만 포함하도록 로딩 과정을 구성하세요. “Exclude” 체크박스를 활성화한 컬렉션 프록시나 팩토리를 사용하면 됩니다. 플레이어의 진행 상황에 따라 리소스를 나누세요. 이 접근 방식은 효율적인 리소스 로딩을 보장하고 초기 메모리 사용량을 낮게 유지합니다. 자세한 내용은 Live Update 매뉴얼에서 확인하세요.

Android 전용 크기 최적화

Android 빌드는 32비트와 64비트 CPU 아키텍처를 모두 지원해야 합니다. Android용으로 번들링할 때 포함할 CPU 아키텍처를 지정할 수 있습니다.

Android 번들 서명

Google Play는 게임 릴리스당 여러 APK를 지원합니다. 즉, CPU 아키텍처마다 하나씩 두 개의 APK를 생성하고 둘 다 Google Play에 업로드하여 어플리케이션 크기를 줄일 수 있습니다.

APK Expansion FilesLive Update 컨텐츠를 조합해 사용할 수도 있으며, 이는 Asset Portal의 APKX extension 덕분에 가능합니다.