왜?! 폰에서(아이폰5c) 프레임 드랍이 발생하는가?!
이참에 유니티 프로파일러를 배워볼까 했는데.. 자료도 찾기 힘들고 해서..
우선 어느 부분에서 프레임 드랍이 발생하는지 확인해 봤습니다.
의심이 되는 부분은 아래와 같습니다.
1. 유닛별 AI 샘플링 시간.. 기본 0.2s 로 고정
- 유닛이 많아지면 프레임 드랍이 더 심해져야 하지만.. 실제로 유닛의 수와 상관없이 프레임 드랍은 일정함
- 0.2s -> 1.0s 변경해도 프레임 향상 없음
2. 상대방 유닛을 검색하는 과정에서 사용되는 Find 함수 (1번과 똑같이 샘플링 시간 0.2s)
- Find 함수는 상대방 리스폰될때 한번씩만 사용되게 변경 하였지만... 프레임 향상은 없음
3. 카메라 이동시 프레임 드랍
- 서로 쌈박질 하거나 마지막에 결과 창이 뜨기 전, 카메라 이동이 없을때는 60fps 나옴
- 카메라 이동 함수에 문제가 있다고 판단됨
3번이 가장 유력해 보였습니다. 근데.. 카메라 이동은 단순하게 첫번째, 마지막째 유닛 중앙을 목표로 Translate함수를 이용해서 이루어져 있는데...
별다른 연산도 안하는데 이거때문에 프레임 드랍이 발생하는거 같지는 않았습니다.
'대체 왜??!! 카메라가 움직이면 프레임 드랍이 발생하는건가???'
어제 오늘 회사에서도 고민... 퇴근해서도 고민...
'그냥 저사양에서는 30fps 고정으로 갈까?'
그러던 와중에 눈에 들어온 카메라 옵션 "Occlusion Culling" ?! 이게 뭐지??
< 카메라 인스펙터 모습. 아래서 두번째 문제의 "Occlusion Culling"... >
기본으로는 체크가 되어 있는데.. 카메라에 보이지 않는 오브젝트는 렌더링 하지 않게 해주는 거라고 하네요.
요걸 꺼보고 빌드해서 폰에 올려보니.. ㅠㅠ
올레~~!!!
60fps!!!! 잘 나옵니다 ㅠㅠ 그래~!! 내 게임 고사양인 게임이 절대 아니였어!!! 구닥다리 도트 게임이잖아~!!
으아~~~ 이거 때문에 이틀이 그대로 날아가 버렸네요ㅠㅠ
좀더 찾아보니까 2D게임에서는 그다지 필요가 없어보이는 기능인거 같습니다. 실제로 사양이 낮은 폰에서는 괜히 CPU연산량만 키워서 프레임 드랍 현상을 발생시키기도 하니까요.
---------------------------------------------------------------------------------------------------------------------------------------
- 추가 내용 -
단순히 Occlusion Culling 옵션을 끄는게 답이 아니라.. Culling Mask 를 제대로 설정해 주는게 정답이었습니다!!
Occlusion Culling 적용하고 싶은 레이어만 선택하고 나머지는 꺼버리면 되네요~ (60fps 잘나옵니다~ㅎㅎ)
tamaii님 감사합니다^^
---------------------------------------------------------------------------------------------------------------------------------------
그래도 이참에 코딩도 좀 최적화 시켜줬고.. Xcode에 있는 디버그 네비게이터 기능도 사용해 보고.. 나름 성과가 있었습니다!!그래도 이참에 코딩도 좀 최적화 시켜줬고.. Xcode에 있는 디버그 네비게이터 기능도 사용해 보고.. 나름 성과가 있었습니다!!그래도 이참에 코딩도 좀 최적화 시켜줬고.. Xcode에 있는 디버그 네비게이터 기능도 사용해 보고.. 나름 성과가 있었습니다!!
< Xcode 디버그 네비게이터. 아이폰 CPU, 메모리, 베터리 사용량, FPS등 한눈에 볼 수 있다 >
Occlusion Culling 옵션이 켜져있을 때는 CPU가 100%가 되면서 프레임 드랍이 되었는데, 지금은 60%정도 수준입니다.
(아이폰6에서는 약 45%정도?)
최적화는 이쯤에서 잠시 접어두고 빨리 다음 작업에 들어가야겠습니다. 아직 할게 산더미처럼 쌓여있지만..
ps1. 혼자서 퇴근후 만들다 보니 의욕도 시들시들해지고 피곤도해서 작업속도가 더뎠는데, 요즘에는 마이피에서 활동하시는 개발자 분들의 지속적인 개발일지에 저 또한 의욕이 다시 활활 타오르고 있네요 ㅎㅎ 시들어지기전에 쭈욱 진도를 빼놔야지ㅋ
ps2. 지금 작업중인 결과 화면 떡밥을..
< 작업중인 결과창.. 좀더 이쁘장하게 꾸미고 싶다... >