언어:
페이지 정보
엔진 버전:
언리얼 엔진

iOS 패키징된 게임 크기

언리얼 엔진

iOS 패키지 게임 크기에 영향을 끼치는 것은, 레퍼런싱된 콘텐츠에서 선택한 빌드 환경설정에 이르기까지 여러가지 있습니다.

대상 환경설정

가장 크게 차이가 나는 부분 중 하나는, 대상 환경설정을 Development 대신 Shipping 으로만 바꿔줘요 31 MB 정도 절약됩니다. Shipping 환경설정은 최적화가 더욱 잘 된 세팅을 사용하며, 디버깅 심볼과 로깅 및 프로파일링 코드 다수를 제거하여 실행파일 크기가 훨씬 작아집니다.

예제: 태피 치킨

4.0.1 브랜치에서 iOS 용 태피 치킨을 쿠킹 및 패키징할 때 따온 예제 수치는 다음과 같습니다.

심볼 시스템을 벗겨낸 실행파일 관련 수치입니다.

전체 Shipping IPA 크기는 미압축 43.8 MB (압축 34.8 MB) 로, 나눠보면 다음과 같습니다:

  • 3.9 MB - 로딩 화면과 아이콘 (거의 동일하게 압축)

  • 25.5 MB - 실행파일 (미압축)

    실행파일 압축은 하지 않는데, App Store 업로드시 암호화되어 전혀 압축하지 않기 때문입니다.

  • 10.6 MB - 엔진 콘텐츠 (압축 4.8 MB)

  • 3.7 MB - 게임 콘텐츠 (압축 0.7 MB)

실행파일은 절대 압축되지 않고 아이콘/화면은 이미 압축되어 있지만, 게임과 엔진 콘텐츠는 꽤 압축이 잘 됩니다.

엔진 콘텐츠에 필요한 크기를 줄이는 작업뿐만아니라 실행파일 크기에 대한 최적화작업 역시도 계속 해나갈 것입니다.

로딩 화면과 아이콘은 .png 파일로, 변종을 적게 하거나 (태피 치킨에는 모든 디바이스에 대해 하나), 더욱 단순한 아이콘을 사용하여 크기를 더욱 줄일 수도 있습니다.

게임 콘텐츠 레퍼런스

게임 콘텐츠 크기는 전적으로 여러분의 손에 달린 일입니다. 태피 치킨같은 작은 게임의 경우 적당한 수준으로 끝났지만, 여분의 콘텐츠를 많이 추가하면 쉽게 불어날 수 있습니다.

게임에서 레퍼런싱된 콘텐츠가 있으면 쿠킹된다는 점을 이해하는 것이 중요합니다. 주로 실수하게 되는 부분은, 별달리 사용되지도 않는 거대한 텍스처를 머티리얼 함수 또는 머티리얼의 텍스처 샘플 기본값으로 레퍼런싱한다든가, 블루프린트의 미사용 변수 또는 연결이 끊긴 노드에 미사용 콘텐츠를 레퍼런싱한다든가 하는 부분입니다. 그런 것들이 있게 되면 모든 머티리얼 인스턴스에서 다른 것으로 대체한다 할지라도 레퍼런싱된 것으로 치게됩니다. 쿠킹된 애셋 폴더를 살펴서 예상치 못했던 애셋을 발견한 경우, 레퍼런스 뷰어 를 사용하여 무엇이 레퍼런싱하는지를 찾아볼 수 있습니다.

주: 툴바의 Launch (실행) 버튼으로 쿠킹을 하는 경우 선택된 맵에 레퍼런싱된 콘텐츠만 쿠킹되지만, 프로젝트를 패키징 하는 경우, 레퍼런싱되지 않았더라도 게임 내 모든 콘텐츠가 쿠킹될 것입니다.

슬레이트 끄기

콘텐츠 전용 프로젝트의 경우, 어떤 플러그인이나 라이브러리를 사용하게 될 지 알 수 없기 때문에 실행파일이 커지게 됩니다. 보통 C++ 로 전환을 하거나, (EnabledPluginsProject.Build.csProject.Target.cs 파일을 통해) 컴파일 시간에 불필요한 플러그인이나 라이브러리를 꺼 줌으로써 실행파일 크기를 약간 줄일 수 있습니다. 하지만 Slate 를 사용하지 않는 콘텐츠 전용 게임의 경우, 슬레이트 애셋을 사용하지 않도록 하여 30 MB 이상의 최적화가 가능합니다. 슬레이트를 사용하지 않는 C++ 프로젝트를 만든 경우, Project.Target.csTargetRules 클래스의 생성자에 bUsesSlate = false 설정을 해 주면 이 공간을 줄일 수 있습니다.