필요한 선수 지식
요구 학력 : 컴퓨터 관련 학부생 3학년 이상
예제 코드 : C#, Unity
난이도 : ★☆☆☆☆
책의 구성 중 마음에 들었던 주제
CHAPTER 02 수학과 물리
2.2 위치와 이동
도입부에서는 원점을 기준으로 좌표를 구성하는 방식들을 설명하는데 이후 스칼라에서 벗어나 벡터의 간단한 설명과 함께 연산하는 방법들을 설명한다. 벡터는 게임에 있어서 오브젝트의 이동을 구현할 때 필수적이다. 간단히 걷기로 표현되고 중학교 때 배운 거속시 공식(거리 = 속도 * 시간; s = vt)이라던가, 중력이 작용하는 상황에서 자유 낙하를 표현하는 등가속도 운동 공식(v = v0 + at)을 실제 게임에서 이루어지는 많은 이동 상황에 비추어 설명한다.
2.3 각과 회전
이 단원에서는 각과 회전으로 대표되는 라디안과 삼각함수를 중점으로 설명한다. 고등학교에 다닐때 많은 친구를 수포자의 길로 이끈 게 삼각함수였는데 게임에서의 삼각함수는 필수적이다. 수포자들을 위해 여러 삽화를 추가하여 그래프를 바탕으로 삼각함수를 쉽게 설명하고 있다.
CHAPTER 03 게임 프로그래밍에 필요한 기법
3.6 충돌 처리 알고리즘
게임에서의 많은 상호작용은 충돌로 이루어진다. 충돌을 감지하는 알고리즘은 대표적으로 AABB, OBB 등이 있는데 이 단원에서는 이런 알고리즘들을 바탕으로 충돌을 감지하는 방법들을 설명한다.
CHAPTER 04 게임 프로그래밍 방법론
4.3 게임 디자인 패턴
4.4 안티 패턴
디자인 패턴은 일반적인 소설 잘 쓰는 방법과 같이 내가 작성한 코드를 다른 사람이 읽기 쉽게 서로 약속한 규칙이라고 이해하면 쉽다. 이 단원에서는 게임에서 자주 사용하는 패턴인 상속(Inheritance), 상태(State), 싱글톤(Singleton), 옵저버(Observer), 커맨드(Command)를 실제 사례를 빗대어 설명한다.
읽고 난 후
이 책에서는 각 챕터 별로 맨 앞에 ‘왜 배워야 할까?’라는 소단원이 있어 배워야 하는 이유를 논리적으로 설명하고 있다. 또한, 이해가 다소 어려울 수 있는 부분에는 손으로 그린 듯한 삽화들이 첨부되어 있어 이해를 돕는다. 다만, 게임 개발을 하면서 발생하는 많은 문제를 해결하는 데 도움을 주는 책이라기보다는 게임 개발을 처음 시작하기 전에 간단히 읽고 넘어가는 개론서로 보는 것이 좋을 것 같다.
게임을 만들 정도의 프로그래머라면 상당한 전문성을 갖췄다고 생각한다. 기본적으로 게임 엔진에 대한 이해도와 해당 게임 엔진에서 사용하는 언어 숙련도, 좌표계 및 벡터에 대한 논리적 사고가 뒷받침되어야 하기 때문이다. 특히 게임을 개발하다 보면 처음 보는 버그나 예기치 못한 문제를 마주치는 일이 흔한데 이를 빠르게 찾아내고 해결하는 과정에서 전문성이 낮았더라도 결국에는 전문성이 향상된다.
어떤 프로그래밍 언어를 중급자 정도 구사할 수 있다고 생각될 때마다 해당 언어로 게임을 개발해 봤었는데 문제 해결 능력을 키우고 데이터 구조, 알고리즘, 그래픽스 처리 등 다양한 컴퓨터 과학 개념을 실전에 적용해 보는 좋은 기회가 되었다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.