UDN
Search public documentation:
MobileLoadTimesAndInstallPackageSizeKR
English Translation
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
모바일 로드 시간과 인스톨 패키지 크기
문서 요약: 모바일 어플리케이션 로드 시간과 최종 인스톨 파일 크기를 줄이는 데 흔히 쓰이는 방법에 대한 글입니다. 문서 변경내역: Bryant Freitag? 작성. 홍성진 번역.개요
로드 시간
셰이더
셰이더 키
UE3 모바일 플랫폼에서의 셰이더는 고유 셰이더 키로 구분됩니다. 이러한 구현 내용에 대한 설명은 모바일 머티리얼 참고서의 해당 부분을 참고해 주시기 바랍니다. 셰이더 키의 수를 줄인다는 것은 어플리케이션의 머티리얼 총 갯수를 줄이는 것으로 간단히 해결되는 문제가 아닌데, 머티리얼은 일정한 세팅에 따라 다양한 키를 만들어 낼 수 있기 때문입니다.셰이더 키 줄이기
모바일 셰이더 분석기 (MobileShaderAnalyzer)
MobileShaderAnalyzer 툴은 어플리케이션이 셰이더 키를 몇 개나 생성하는가, 어느 머티리얼에서 생성되었는가, 머티리얼을 어떻게 변경해야 키를 줄일 수 있는가 등을 측정하는 데 도움이 됩니다. 이 툴 사용법 관련 정보는 위의 링크를 참고해 주시기 바랍니다.중복 키
MobileShaderAnalyzer 문서에 언급했듯이, 머티리얼이 어떻게 사용되는지 엔진은 알지 못하기 때문에 일부 세팅에는 여러가지 중복 버전이 있을 수 있습니다. 이러한 머티리얼의 의도를 명시적으로 엔진에 알려주므로써 어플리케이션에서 중복된 것을 다수 제거할 수 있습니다:- 스키닝(Skinning). 반드시 스킨을 입힌 메시에만 사용된다 알고있는데 셰이더가 스킨을 입힌 버전과 입히지 않은 버전 둘 다 보인다면, 어플리케이션의 DefaultEngine.ini 내 MobileMaterialCookSettings 섹션 아래 그 머티리얼 이름을 ‘+SkinningOnlyMaterials=
’ 줄로 추가해 주면 됩니다. 그러면 쿠킹할 때 이 셰이더는 스킨을 입힌 버전만 생성되어, 이 머티리얼이 생성하는 키의 수를 바로 절반으로 줄일 수 있습니다. 예:
[MobileMaterialCookSettings] +SkinningOnlyMaterials=M_FireChest +SkinningOnlyMaterials=M_IceChest
- 포그(Fog). 타이틀에 포그를 사용하도록 설정하면, 엔진은 포그 있는 셰이더와 없는 셰이더를 생성한 다음, 가능한 상황에서는 포그 없는 셰이더로 렌더링하는 식으로 퍼포먼스를 높이고 있습니다. 포그 버전 셰이더를 항상 사용해도 퍼포먼스상에 무리가 없는 경우라면, 어플리케이션 DefaultSystemSettings.ini 의 [SystemSettings] 섹션 아래 bMobileMinimizeFogShaders=true 설정을 추가하여 이러한 셰이더 중복을 피할 수 있습니다.
- 파티클(Particle) 세팅. 셰이더 안에서 on/off 상태 중복을 하게 만드는 파티클 세팅이 다수 있습니다. 활용하지 않겠다 싶은 키 세팅 토글을 확인한 경우, 머티리얼에서 그 기능을 꺼 주세요.
머티리얼 인스턴스 불변 (MaterialInstanceConstant)
셰이더 키 생성을 최소화시키기 좋은 방법은 마스터 머티리얼과 머티리얼 인스턴스 불변(MIC)을 가급적 많이 사용하는 것입니다. 자손 머티리얼의 MIC 는 변경해도 마스터 머티리얼에서 생성되는 셰이더 키에 순열이 새로 추가되지 않습니다. 콘텐츠 저작 초기부터 마스터 머티리얼을 사용하도록 하면 프로젝트 후반부에 셰이더 키가 폭발적으로 증가하는 현상을 방지할 수 있습니다. 자세한 정보는 머티리얼 인스턴스 페이지를 참고해 주시기 바랍니다.추가적인 셰이더 키 고려사항
셰이더 그룹
셰이더 그룹이 셰이더 키를 줄이는 데 직접적인 도움이 되지는 않지만, 키 워밍 일정 부분집합을 어플리케이션 내 다른 지점으로 유예시키는 것이 가능합니다. 가장 흔한 예라면 맵 로딩입니다. 앱에서 각 레벨에 대해 셰이더 그룹을 간단하게 만들 수 있으며, 그러면 쿠커는 해당 맵에 대한 모든 키를 자체 셰이더 그룹에 추가시키고 그 레벨이 로드될 때 해당 키를 자동으로 워밍시켜 줍니다. 물론 맵 로딩 시간이야 약간 늘어나겠지만, 보통 전체적인 어플리케이션 로딩 시간은 현저히 줄어들 것입니다. 맵별 셰이더 그룹 생성은 Engine.ini 파일의 MobileShaderGroups 섹션을 통해 다음과 같이 이루어집니다:[Engine.MobileShaderGroups] .ShaderGroup=MyGroup .Package=MyMapName
Commandlet->AddDynamicMobileShaderGroup(FName(*GroupName), FName(*PkgFilename));
GMobileShaderInitialization.StartCompilingShaderGroup(FName(*ShaderGroupName), TRUE);
워밍되지 않은 키
참고로 엔진이 자동으로 워밍해 주지 않는 셰이더 키가 있을 수도 있는데, 주로 엔진 렌더링 파이프라인에 써드 파티 소프트웨어가 묶여 있는 경우가 그렇습니다. 그러한 키는 다음과 같이 DefaultEngine.ini 파일에 수동 추가해 주면 스타트업 때 워밍되도록 할 수 있습니다:[Engine.StartupShaderKeys] .Key=0x1980000000_0x3000000000000000
부팅 시간 프로파일링
부팅 시간 프로파일링 관련 꼼수는 프로파일링 기초 문서를 참고해 주시기 바랍니다.어플리케이션 크기
IPA Viewer (iOS)
IPAExamine /?
IPAExamine <full path to your ipa file>
쿠킹된 데이터 조사하기
유용한 커맨드렛
PkgInfo
쿠킹된 패키지 (.xxx) 파일의 콘텐츠를 조사하기 위해서는 PkgInfo 커맨드렛을 사용하면 되며, 자세한 내용은 커맨드렛 명령 목록 페이지를 참고해 주시기 바랍니다. 예를 들어 다음 명령의 출력은:Gamename.exe PkgInfo <path to package> -exports –simple –platform=<platform> > myfile.txt