학교에서 열리는 E스포츠 대회에서 전시를 위해 빌드본을 뽑아내며 느낀 것... 우리 게임 빌드본의 용량이 너무 크다는 것이다!! 앞만 보고 바쁘게 개발해서 최적화는 신경도 쓰지 못했는데...
거의 800mb가 되는 용량에 충격을 먹은 나머지... 최적화해야겠다는 생각을 했다...
텍스쳐 리사이징
가장 시급한 텍스쳐부터 최적화를 했다. 게임이 3D다 보니 노멀맵이나 AO 등등... 텍스쳐가 정말 많다. 개발에 급급해서 신경도 쓰지 않고 있던 텍스쳐 몇 백개를 리사이징 하려니 꽤 힘들었다. 미리 해놓을 걸...
2048로 되어있던 너무나도 큰 텍스쳐의 Max Size를 Albedo는 1024, Normal, AO, Height은 512로 리사이징을 해주었다. 에셋을 임포트 해놓고 안 쓰는 텍스쳐도 깔끔하게 지워주었다.
그리고 2의 거듭제곱수(POT)가 아니라 압축을 할 수 없는 파일들을 모두 고쳐주었다. POT가 아닌 친구들이 왜 이렇게 많은 거야!!!! 3.3MB > 341.KB로 변했다!
거의 모든 텍스쳐의 Max Size를 변경해주고 압축을 가능한 크기로 변경해주니(압축 불가능한 크기의 텍스쳐는 별로 없긴 했다만...) 시간이 훌쩍 지나버렸다.
최적화를 에셋 임포트할 때 했다면 얼마나 좋았을까...?
메쉬 최적화
텍스쳐 다음으로 많은 용량을 차지했던 메쉬도 최적화해주었다.
Mesh 압축을 해주었고
Animation을 쓰지 않는 모델들도 Animation을 임포트 하지 않게 바꿔주었다.
그 밖에 모델에 따라 임포트가 필요 없는 옵션들은 꺼주었다.
워낙 최적화에 신경쓰지 않고 앞으로 빠르게만 진행하던 프로젝트라, 특별히 어려운 걸 한 게 없는데도 몇 시간 안에 빌드 용량을 이렇게!! 많이 줄일 수 있었다. 거의 500MB나 줄였다.
이런 쉽고 간단한 걸 왜 미리 미리 해놓지 않았을까...
그래도 이제는 에셋을 임포트할 때 빌드 용량을 신경쓰면서 해야겠다는 생각이 들었다. 최적화는 프로젝트 전에 시작하고 계획해야하는 부분이구나...
아직 세밀하게 텍스쳐나 메쉬에 대한 최적화나... 스프라이트나 플레이 중 프레임 드랍이나... 메모리 최적화나... 그런 것에 대해서는 한참 부족하다만! 아직 공모전까지 남았으니 Unity Analytics나 Sprite Atlas나... 이런 것들을 사용해서 최적화를 해나가야겠다.
'Unity' 카테고리의 다른 글
[Unity] Scriptable Object를 JSON으로 저장할 때의 문제점 (0) | 2022.12.26 |
---|---|
[Unity][C#] 모두의 마블 게이지 만들기 (1) | 2022.11.13 |
[Unity][C#] 유니티 - 스프레드 시트 연동하기 (1) | 2022.11.05 |