유니티로 만드는 게임이 크게 복잡하지 않다보니 모바일에서도 60프레임이 가능하도록 만드는 것을 목표로 하고 있습니다. 물론 모바일에서의 게임 프레임은 게임의 쾌적한 실행 이외에도 배터리 사용, 발열 등도 고려해야 하기 때문에 유니티에서는 공식적으로 30프레임을 추천하고 있는 듯 합니다. 하지만 이것은 발매시에 최종 프레임 레이트를 결정하려고 하고 우선적으로는 프로파일링으로 병목을 찾아서 제거하여 속도는 최대로 내려고 합니다. 참고로 유니티에서 최고 프레임 레이트는 Application.targetFrameRate = 60;와 같이 한줄을 추가하면 쉽게 설정할 수 있습니다. 이 예에서는 60프레임으로 설정하였습니다.
만드는 게임이 복잡하지 않는 게임이라 나온지 몇 년된 혹은 저 사양 기기에서도 쾌적한 게임 속도가 나오는 것을 목표로 하고 있습니다. Unity로 만드는 게임의 안드로이드 버전 테스트는 현재 가지고 있는 LG V10, Samsung S7에서 하고 있습니다. 해당 기기의 사양은 아래와 같습니다.
LG V10
2015년 10월에 나온 폰으로 스냅드래곤 808 MSM8992(ARM Cortex-A57 듀얼코어, ARM Cortex-A53 쿼드코어, Adreno 418 GPU), 1440 x 2560의 사양을 가지고 있습니다.
해당 년에 나온 프리미엄 폰이기는 한데 스냅드래곤 810의 발열 문제로 808을 채용한 관계로 해당 년에 나온 삼성폰 보다 성능이 조금 떨어지며 사운드에 신경을 써서 사운드 출력의 품질이 좋습니다. 안드로이드는 7.0이 현재 인스톨되어 있습니다.
Samsung S7
2016년 2월에 나온 폰으로 엑시노스 8 Octa(8890)(Samsung Exynos M1 쿼드코어, ARM Cortex-A53 쿼드코어, Mali-T880), 1080 x 1920의 사양을 가지고 있습니다.
삼성의 프리미엄 폰으로 안드로이드는 8.0이 현재 인스톨되어 있습니다.
지금까지는 성능 개선을 위해서 상대적으로 느린 기기에서 프로파일링을 잡고 성능 개선을 하는 것이 좋다고 생각했는데 이 두 기기를 사용하다 보니 의외로 생각이 변하였습니다. 성능을 개선 할 때 S7은 성능이 좋아서 그런지 개선할 때 마다 프레임이 올라가는게 보이는데 V10은 고해상도이고 GPU가 상대적으로 좀 더 느려서 그런지 프레임이 올라가는 것을 느끼기 힘들었습니다. 결국 S7에서 여러 최적화로 성능 개선을 하여 60 프레임을 만들고 해당 버전을 V10에서 테스트하니 그제서야 V10에서 프레임이 올라가는 것이 보였습니다.
이 경험을 하다보니 최적화는 고성능 기기에서 상대적 저성능 기기 순서로 테스트하며 하는 것이 좋을거 같다는 생각이 들었습니다. 고성능 기기에서 최고의 성능을 만들고 그 뒤로 상대적 저성능 기기에서 최고의 성능을 만드는 것이 최적화에 따른 성능 향상을 느끼는데 좋은거 같습니다.
마지막으로 하위 호환성을 최고로 가져가기 위하여 만들고 있는 게임에 최신 폰의 기능이나 최신 OS의 기능을 사용하지는 않았습니다.
'개발 라이브러리 & 툴 > 유니티' 카테고리의 다른 글
Unity 최적화 작업 후에... #1 (0) | 2022.01.22 |
---|---|
Unity iOS 크래시 그리고 Exception (0) | 2022.01.11 |
Unity FPS 체크 소스 (1) | 2022.01.03 |
Unity 최적화: 모바일 파티클 매터리얼 (0) | 2022.01.01 |
Unity 최적화: Update 함수 (0) | 2021.12.28 |
Unity 안드로이드 개발시 알아두면 좋은 것들 (0) | 2021.12.27 |
Unity 안드로이드 빌드 시 화면 멈춤(Freezing) 현상 해결 (0) | 2021.12.26 |
Unity 여러 개의 카메라를 이용하여 여러 개의 포스트 이펙트 적용하기 (0) | 2021.12.03 |