루 1.5.9버전 업데이트 및 최적화 작업, IL2CPP빌드
이번에 Lu 를 1.5.9버전으로 업데이트하면서 최적화 중심으로 작업을 진행하였다.
최적화 작업을 이전에도 여러번 했는데도 불구하고 최적화 작업은 항상 할게 많다...
이번 업데이트는 외관상 큰 변화는 없지만 퍼포먼스는 조금더 개선됬다고 생각한다.
1) 게임플레이 개선, 수정 사항
Planet Monster AI수정: 기존에는 중앙에 고정시켰는데 어색해 보여서 움직이게끔 바꿨다.
초반에 보스가 스폰될때 Dissolve효과가 있다.
우측상단에 FPS 표시
2) Editor Log활용: Apk 용량 줄이기
Console창 구석에 있는 아이콘을 오른쪽 클린하면 Open Editor Log라는 창이 있다.
이 창을 열면 Text형식의 Log창이 뜬다.
그리고 프로젝트를 빌드 후 Editor Log창을 클릭하면 Log내용에서 Build Report을 확인할 수 있다.
(꼭 빌드 후에 해야지 Build Report Log가 남는다)
여기서 자신의 프로젝트가 어느 부분에서 용량을 차지하는지 확인 할 수있다.
대부분 프로젝트가 그렇듯이 용량을 가장 많이 자치하는 부분 중 하나는 텍스쳐일것이다.
내 프로젝트도 가장 용량을 많이 차지한 부분이 텍스처이다
사진을 보면 알 수 있듯이 Particle Effect에 들어가는 Texture그리고 보스몹에 들어가는 tga형식의 Texture가 지나치게 높은것을 확인 할 수 있다. 이걸 최적화하면 된다.
최적화하는 가장 쉬운 방법 중 하나는 Unity가 제공하는 기능중 하나인 Texture Compression 기능이다.
Texture를 Compress 하게 되면 용량이 많이 줄어든다.
참고로 Texture를 Compress하려면 Texture파일이 높이와 폭이 4^n꼴이어야한다 ex) 512x512, 1024x512 등등
그렇기 때문에 만약 Texture사이즈가 4^n꼴이 아니면 이것부터 수정하는 작업을 해야한다.
(참고로 Texture크기를 수정하면 Texture를 사용하고 있는 GameObject도 같이 바뀌기 때문에 꼭 확인해야한다)
(또 지나치게 Compress를 많이하면 Texture가 Blur하게 보이기 때문에 적절한 수치를 찾아야한다)
(Font도 용량을 은근히 많이 먹는다. 종류가 다른 Font가 지나치게 많이 사용되면 APK 용량이 커질수 있다는걸 알 수 있다...)
아무튼 Texture의 크기를 수정하고 적절하게 Compress해주면
용량이 확 줄어든다!
내 프로젝트는 62MB -> 46MB으로 줄어들었다
3) IL2CPP빌드
IL2CPP이란 말그대로 IL(Intermediate Language, 중간어) 를 CPP(c++)로 바꿔주는 빌드이다.
더 자세한 내용은 다음 링크에서 보면 된다.
https://blogs.unity3d.com/kr/2015/09/22/kr-csharp-compile-il2cpp/
IL2CPP빌드를 왜 하냐? 여러가지 이유가 있지만
유니티 공식 문서에 따르면
" IL2CPP는 Unity 프로젝트의 성능, 보안 및 플랫폼 호환성을 개선하는 등의 용도로 사용됩니다. "
라고 한다...
APK를 크랙할때 크랙프로그램을 통해 프로젝트를 뜯을 수 있는데
IL로 빌드된 APK같은 경우 보안에 최약하다고 한다.
쉽게 뜯기고 코드도 쉽게 찾을 수 있다고 한다...
하지만 IL2CPP로 빌드하면 뜯어도 알아보기 힘든 형태로 있기때문에 크랙하기 더 복잡하다고 한다.
유명한 게임아니면 시간투자해서 크랙하는것 자체가 시간낭비기 때문에
IL2CPP로 빌드하는것 자체가 나름 보안을 강화하는 역할을 한다.
내 프로젝트는 자체가 작음에도 불구하고
빌드시간이 IL2CPP로 10분정도 걸린것 같다. (Mono로 했을때 2분)
(참고로 빌드한 컴퓨터 사양이 낮다. 그래서 더 오래걸린 것도 있다
컴퓨터 사양 : i3 4179, gtx960, ram 8g)
규모가 정말 크다면 빌드하는데 몇시간 걸리지 않을까 싶다.
추가) 처음 IL2CPP빌드했을때 10분정도 걸렸지만 그 이후에 다시 한번 빌드하니 3분정도 걸린것 같다
현재 이 프로젝트가 원래 무겁지 않은 탓인지 Mono이나 IL2CPP로 빌드 했을때 플레이어가 느끼는 성능차이는 없다고 생각이든다.
나름 현재 기준으로 오래된 기종인 갤럭시 S3에서도 큰 무리없이 돌아갈 정도로 프로젝트가 가볍기 때문이다.
그래서 IL2CPP가 내 프로젝트에 큰 의미가 있을까 싶었지만 이것보다 큰 프로젝트에서는 성능의 차이를 느낄 수 있을 것이다.
그나마 내 프로젝트에서는 체감되는 부분은 UI를 다룰때 살짝(?) 차이가 있다.
현재 Dotween 이라는 에셋을 사용하여 UI Tweening동작을 하고 있는데 게임이 처음 로딩된 후 초반에 부드럽게 Tweening이 이루어지지 않고 프레임드랍이 조금씩 발생했다. 하지만 이번에 IL2CPP로 빌드한 후에는 초반에도 부드럽게 Tweening동작이 이루어진다.
'Game Development > 프로젝트: 루' 카테고리의 다른 글
유니티) 보스의 공격 범위 표시 (0) | 2019.01.07 |
---|---|
유니티) FPS와 관련된 Trouble (0) | 2019.01.05 |
유니티 프로젝트 루 플레이 동영상 (0) | 2019.01.04 |