Game Programming/Game Engine

유니티 iOS 9.0 이상부터 용량이 늘어나는 이슈 해결법

VallistA2015. 11. 23. 11:33

유니티에서 빌드 시 iOS 9.0 이상부터 새로운 아키텍쳐를 지원하면서 용량이 커졌다.


이 현상은 적게는 50% 많게는 2배 이상 뻥튀기를 시키며 iOS의 아무것도 설정안한 앱이 100메가가 넘어가는 현상을 목격할 수 있다.

이 현상에 대해서 많은 고민을 해본결과 아래와 같은 해결법을 찾을 수 있었다.


- 1

대다수의 2D 게임의 경우 뒷 배경은 호출을 몇번 하지 않는다. 

맵이 변할때마다 가끔씩 한번 호출하여 뒷 배경의 이미지를 바꾸는 식인데. 

맵들의 경우 Texture이미지로 많이 쓰며, NGUI를 사용 할 경우 UITexture를 사용하여 뒷 배경을 뿌리게된다.

어차피 뒷 배경의 경우 드로우콜을 1개 잡는거라 생각하고 가는게 편하고, 우리는 이 뒷 배경을 깨지지 않는 상에서 용량을 줄여야 한다.

필자는 뒷 배경을 아래와 같이 설정했다.




Wrap Mode와 Filter Mode의 경우 자신의 맵이 스크롤 된다 유무 가려서 설정을 해주면 된다.

제일 중요한건 Non Power of 2 와 Texture Type, 아래의 Max Size와 Format이다.


Texture Type은 Advanced로 하여 커스터마이징 가능하도록 설정한다.

그 다음 Non Power of 2는 이미지의 사이즈 규격을 맞추는 옵션인데. None은 보통 모드이고

ToNearest를 쓰게 되면 가로와 세로가 2의 진수로 맞춰진다.


즉 612 * 300 이면 512 * 512 로 변경이 되는 것이다.

Texture는 이미지가 늘여지거나 줄여질텐데 이것은 신경을 쓰지 않아도 된다


Max Size는 자신의 이미지가 깨지지 않는 내에서 설정하도록 하자.

만약 이미지가 600 * 400 이라고 가정한다면 512 * 512 해도 깨지지 않는다.

1280 * 800 이라고 한다면 512 * 512하면 이미지가 좀 깨질 수 있으므로 체크를 해봐야 할 것이다.

Max Size를 줄이는 것 만으로도 용량을 1/4 토막을 내버릴 수 있으니 제일 중요한 옵션이라고 봐도 무방하다.


Format의 경우에는 플랫폼 별로 아래와 같다.

-Android

 RGBA Compressed DXT 5

 RGB Compressed DXT 5


-iOS

 RGBA Compressed PVRTC 4 bits or 2bits

 RGB Compressed PVRTC 4 bits or 2bits


알파블랜딩이 없는 이미지의 경우 RGA 를 쓰면 되고 반대의 경우이면 RGBA 를 쓰면 되겠다. RGB와 RGBA 는 용량 차이가 제법 심하다.

iOS의 Compressed PVRTC 의 경우 강제적으로 ToNearest와 같은 효과가 나온다. 이미지가 2의 배수로 변경이 되며 사이즈가 width height의 크기가 같아진다.


뒷 배경에서 최적화를 되도록이면 해주도록 하자. 차지하는 크기가 많으니 말이다.


- 2

유니티 플레이어 에서의 설정



유니티 플레이어 에서는 설정을 할 수 있는 곳이 있다. 바로 BuildSettings > Other Settings인데,

우리가 여기서 만질 부분은 아래와 같다.


Architecture

Target Device

Stripping Level


정도가 있겠다.


먼저 Architecture의 경우 옵션이 여러가지가 있다.

ARMv7, ARM64, Universal 세가지가 있는데.

아키텍쳐를 줄이기 위해 우리는 커다란 결정을 해야한다. 버전이 매우 아래인 버전에 대해서 구동을 하도록 설정 할 것인가에 대해서인데.

ARM64를 보통 생각하지 않고 ARMv7을 설정 해주도록 한다.


이 설정을 마치면 거의 2~30 메가가 줄어버린다.


Target Device의 경우 iPad와 iPhone중 플랫폼 하나를 포기하게 되면 용량이 줄어서 최적화를 할 수 있다.

Stripping Level의 경우 Use micro mscorlib로 설정을 해주도록 하자.


이렇게 되면 유니티 상에서의 용량 최적화는 어느정도 맞춰준 상태가 된다.

한번 셋팅을 하고 용량을 체크해 보도록 하자.

댓글

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!

자고 싶습니다. ㅠㅠ

Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today :

Total :

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment