뚝뚝 끊기는 게임의 원인 분석부터 해결까지
유니티 개발자라면 알아야 할 성능 최적화 기법
게임을 개발하다 보면 때로는 적절한 타협이 필요하다. 제한된 자원과 시간으로 가장 빠르게, 효과적으로 최적화하는 길은 언제나 분명히 있다. 이 말인즉슨, 타협할 수 있는 ‘선’이 반드시 있다는 것이다. 적절한 선을 정하지 않으면 지극히 작고 알아채기조차 어려운 사소한 문제에 시간을 허비할 수 있다. 이 선을 결정하는 데 가장 좋은 질문은 “사용자가 이 문제를 인식할 수 있는가”다. 만약 이 질문에 대한 대답이 “아니요”라면 성능 개선은 필요가 없다. 문제가 될지 안 될지 알지 못한 채 문제가 될 거라는 의심만으로 코드를 수정하는 것은 한정된 개발 자원을 쓸데없이 낭비하는 것에 불과하다.
『최대 성능을 위한 유니티 5 게임 프로그래밍 최적화』는 프로그래밍을 최적화하기 위한 툴과 지식, 기술뿐 아니라 어디에서 기인한 문제인지 원인을 발견하고 해결하는 것까지를 다룬다. 낮은 초당 프레임 수(fps)로 인한 화면 끊김, 입력 지연, 긴 로딩 시간, 그래픽 깨짐, 지나치게 많은 배터리 소모 모두 최적화와 관련이 있다. 이러한 문제는 CPU, GPU, RAM과 같은 하드웨어뿐 아니라 물리 엔진을 비롯한 프로그램의 하부 시스템, 유니티 자체의 결함에 의해서도 발생할 수 있다. 성능 최적화란 CPU, GPU, RAM과 같은 자원이 적재적소에 분배되고 병목현상 없이 우선순위에 따라 작동하게 만드는 것이다. 최적화는 같은 하드웨어에서 더 많은 표현과 처리를 가능하게 할 뿐 아니라 더 흥미롭고 다채로운 게임을 개발하게 해준다. 게임 출시 이후 맞닥뜨리는 여러 문제를 개선하고 최적화하는 데 이 책은 분명 좋은 지침이 될 것이다.
이 책의 내용
- 1장 성능 문제를 발견하기에서는 유니티 프로파일러를 사용해 앱을 분석하고 병목현상을 찾는 문제 분석 방법을 소개한다.
- 2장 스크립팅 전략에서는 유니티 C#의 대표적인 예제들과 오버헤드 최소화, 객체 간의 상호작용 개선 등을 다룬다.
- 3장 배칭의 유용성에서는 유니티의 정적 배칭과 동적 시스템을 설명하고 렌더링 시스템의 부하를 줄이는 법을 설명한다.
- 4장 아트 자원을 활용하라에서는 아트 자원들 속에 있는 기술과 함께 불러오기, 압축, 인코딩 과정에서 빠지기 쉬운 함정을 피하는 법을 배운다.
- 5장 더 빠른 물리에서는 2D와 3D 유니티 엔진의 물리 시스템을 상세히 소개하고 물리 객체들을 적절히 구성해 성능을 높이는 비법을 소개한다.
- 6장 역동적인 그래픽에서는 렌더링 시스템의 깊은 곳까지 탐험한다. CPU, GPU에 의한 렌더링 병목현상을 개선하는 방법과 모바일 기기를 위한 특별한 기술을 배운다.
- 7장 메모리 관리의 주인에서는 ‘모노 프레임워크’라는 유니티 엔진의 내부를 살펴본다. 메모리가 어떻게 관리되는지, 프로그램을 힙 할당과 ‘실시간 폐공간 회수’로부터 보호하는 법을 소개한다.
- 8장 전략적 기술과 팁에서는 작업 속도와 화면 관리에 도움이 되는 팁을 알려준다.
대상 독자
- 중급 및 고급 유니티 개발자
- 원인 모를 병목현상 때문에 골머리 썩는 유니티 개발자
- 유니티 게임 엔진을 속속들이 알고 싶은 게임 개발자