csuco***
2026-03-29

"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."
이번에 읽은 도서는 유니티 개발과 관련된 좀 더 심도있는 내용을 다루고 있는 도서이다. 사실 처음에 이 책을 읽을지에 대해 상당히 고민을 많이 했었다. 그 이유는 내가 이 책을 읽을만큼 유니티에 대한 지식이 충분히 있는지에 사실 자신이 없었기 때문이다. 유니티로는 습작으로 소규모 연습용 게임 정도 개발해봤던 터라, 최적화를 논하기에는 아직 좀 시기상조라는 생각이 들었지만, 그럼에도 최적화란 부분은 개발자라면 늘 평생 숙제로 중요하게 생각하는 부분이기도 하고, CPU, 메모리, 스토리지와 관련된 부분은 가슴 뛰는 일이라는 생각에 덜컥 본 도서를 읽어보게 되었다.
그러나 도서를 읽다보니 역시나 전문 유니티 개발자가 아닌 탓에 도서에서 다루고 있는 내용을 100% 소화하기에 좀 무리가 있긴 했지만, 일단 쭉 읽어나가며 잘 이해가 안가는 부분은 잠시 독서를 멈추고 관련 지식들을 좀 찾아보며 대략적으로라도 이해를 하고 넘어가는 과정을 진행하면서 도서를 읽어 나갔다.

사실 상당히 오래 전에 이 책의 저자 분의 도서인 <레트로의 유니티 게임 프로그래밍 에센스>를 출간 전 베타리딩을 수행한 적이 있었는데, 당시에도 풍부한 예제를 기반으로 이해하기 쉽게 잘 설명되어 있어 좋은 인상에 남았던 기억이 있는데 이번에 이렇게 같은 저자의 중급 도서를 읽게 되어 감회가 새롭다. 내 기억이 맞다면 저자분은 아마도 디자이너 출신으로 개발을 시작하신 것으로 알고 있는데(확실치는 않음), 당시에도 비전공자 출신임에도 그러한 개발 도서를 집필했다는 부분에 대해 참 대단하다는 생각을 했었는데, 이제는 성능 최적화까지 다루시다니, 개발자의 한 사람으로서 멋지다는 생각이 든다.
그 간 출간된 수많은 유니티 도서 중에 이렇게까지 시간 당 프레임 수, 메모리, CPU와 GPU 등의 최적화에 대한 내용을 본격적으로 다룬 도서는 보지 못했던 것 같다. 개인적인 생각에 최적화는 상용 게임 개발에 필수적인 요소라는 생각이 들고, 이러한 최적화를 위한 프로파일링 기법과 각종 관련 지식들은 특정 유니티 버전에만 해당되는 내용이 아니기에 모든 유니티 개발자들에게 상당히 유용할 것 같다는 생각이 들었다. 다만, 내용 중 macOS와 iOS 환경에서의 최적화를 다루고 있는 부분이 있어, 윈도 환경에서 개발하거나 안드로이드 용으로 개발하는 분들보다는 macOS에서 iOS용 앱을 개발하는 분들에게 조금 더 원활한 학습 진행이 될 것 같다.

이번 도서를 통해 내가 얻은 가장 유익했던 부분은 뭐니뭐니해도 유니티 프로파일러 사용에 대한 부분이다. 유니티는 습작 프로토타입 정도 개발 목적으로만 사용했기 때문에 프로파일러를 제대로 사용해본 건 이번이 처음이었는데, 상당히 파워풀한 기능들이 포함되어 있다는 느낌을 받았다.
참고로 도서의 실습 예제들은 6.3 LTS 버전으로 구성되어 있으나, 프로파일러 등 예제는 최근 새로이 나온 6.4 버전에서도 문제 없이 잘 돌아갔다. (내 PC에 원래 6.0 버전이 설치되어 있었는데, 이번 도서를 읽으면서 6.4로 업그레이드했음) 다만, 도서에서 프로파일러 설정 관련하여 언급한 "File > Build Settings" 메뉴는 현재 "File > Build Profiles" 메뉴로 변경되어 있다는 부분은 참고하면 좋을 것 같다.

본 도서에서는 다양한 형태의 성능 최적화 관련 이야기를 다루고 있는데, 유니티는 멀티 스레드를 지원하는 엔진인만큼 스레드 성능에 대한 내용도 빼놓지 않고 다루고 있다. 유니티는 기능에 따라 크게 메인 스레드, 렌더 스레드, 워커 스레드로 구분되는데, 이러한 복수 개의 스레드들이 함께 동작하는 과정에서 그 중 어떤 스레드가 성능 저하를 일으키고 있는지를 찾는 과정이 성능 최적화 활동의 핵심 요소 중 하나라고 할 수 있는데, 이러한 과정에 대한 노하우 또한 이 책에서 다루고 있어, 개선이 필요한 스레드에 대한 핀셋 교정을 하는데 있어 매우 큰 도움이 될 것 같다.
또한, 아무래도 개발자인 내 입장에서는 코딩과 관련된 C# 스크립트 최적화 부분에 대한 내용도 개인적으로 유용했다는 생각이 들었다. 예를 들면, Fake null 상태를 검사하는 방법에 대한 효율화 방안이라든지, 위치와 회전에 대한 트랜스폼 연산을 한꺼번에 수행하여 성능을 조금 더 높히는 시도라든지 등과 같은 자잘한 팁부터, 게임 오브젝트의 인스턴스화(객체 생성)에 대한 처리를 실시간이 아닌, 미리 오브젝트 풀을 만들어 두고 할당하는 방식이라든지, 계산(특히 소수점 계산) 결과를 미리 캐싱해놓고 사용한다는지..하는 유니티 플랫폼과 관계 없이 일반적인 게임 개발 시 많이 사용하는 깨알 최적화 기법들도 잘 기술되어 있어 유용하다는 느낌이 들었다.

결론적으로, 본 도서는 다음과 같은 분들이 읽으면 좋을 것 같다.
앞서 언급했듯이 이번 도서는 아무래도 유니티에 대한 실무적인 개발 역량이 이미 어느 정도 갖춘 사람에게 더 도움이 되는 도서라 할 수 있으므로, 유니티를 이제 막 입문하고자 하는 초보자 분들께는 적합하지 않은 도서이다. 유니티 개발에 어느 정도 익숙해지면서 실제로 조금씩 퍼블리싱도 수행하고 있는 분들께서 본인이 개발하고 있는 개발 산출물들을 좀 더 빠르고 동작하도록 만들면서 사용하는 리소스 또한 줄일 수 있는 어드밴스드한 고급 기법을 적용하고자 할 때 옆에 두고 참고하며 읽어보기에 유용한 도서이다.
시중에 일반적으로 나와 있는 일반적인(대중적인) 유니티 게임 개발 도서와는 분명 차별화된 난이도가 있는 도서이지만, 분명 상용 유니티 소프트웨어를 개발하고 있는 개발자분이라면 분명 한번씩 읽어봐야할 수준 높은 내용을 담고 있는 도서라 할 수 있을 것 같다. 게임 개발에 늘 관심을 갖고 기웃기웃 하고 있는 나의 경우에는, 아직은 본격적인 게임 개발을 하고 있지 않기에, 이러한 유용한 내용이 있구나 정도의 관전하는 마음가짐으로 이번 도서를 읽기는 했지만, 분명 머지 않은 미래에, 늘 옆에 두고 매우 유용하게 활용하고 있을 때가 올 것이라고 생각한다.