[책 리뷰] 게임 프로그래밍 패턴

PenguinGod·2022년 9월 25일
1
post-thumbnail

이 책의 가치

"게임 프로그래밍" 하면 가장 먼저 떠오르는 것은 무엇일까요? 사람마다 다르겠지만 저는 1프레임이라도 더 뽑기 위한 CPU, GPU 최적화, 현실적인 물리, 충돌 작업, AI와 같이 수학적이고 어려운 내용이 먼저 떠오릅니다. 그리고 대기업에 있는 훌륭한 개발자분들은 그런 부분들에 대해서 타의 추종을 불허할거 같다는 생각을 합니다.

제 생각은 적어도 EA기준으로는 맞는 것 같습니다. 책의 저자인 로버트 나이트스트롬(aka 밥)은 2001년에 EA에 들어가 제가 언급한 내용과 다른 부분에서 굉장히 훌륭한 코드가 많았고 이를 보고 감동을 받았다고 합니다.

하지만 이런 훌륭한 코드들은 임기응변식 구조에 얽혀 있었고, 화이트보드 앞에서 코드 구조에 대해서 논의할 것 같았지만 빡빡한 일정에 쫓기며 코드를 작업했다고 합니다.

그러다보니 최선을 다해서 짠 훌륭한 코드는 어딘가에 숨겨져 있는 경우가 많았고, 팀 동료가 이미 해결책이 있는데도 낑낑대면서 다시 작업을 하느라 고생하는 모습을 많이 보았고 이 책은 그런 문제를 해결하기 위해 나온 책입니다.

이미 있는 해결책을 다시 개발하지 말고 진짜 새로운 걸 개발하는데 더 많은 시간을 투자하자는 것이죠.

어떤 고민을 해결하는데 적합한가?

우선 이 책은 [GoF의 디자인 패턴]에서 나온 몇몇 패턴과 순서, 행동, 디커플링, 최적화와 같이 여러 용도에 사용할 수 있는 총 20개의 패턴을 다룹니다.

저자인 밥은 이 많은 패턴을 은행이나 직원 정보가 아닌 상대적으로 재밌게 다가오는 게임으로 예제 코드를 보여줍니다.

그리고 단순함을 미덕으로 삼습니다. 코드를 최대한 간결하게, 코드를 읽으면 바로 의도를 알 수 있도록, 코드를 고칠 때 머리에 담아야 할 코드 양을 최대한 줄이는 방향으로 코드를 작성하고자 합니다.

다양한 패턴을 다루는 만큼, 그리고 초반에 말한대로 이미 있는 내용들이다보니 알고 있는 패턴이 많이 있을 수 있습니다. 처음 패턴을 볼 때는 "뭐야 아는거네~", "아 나만 생각한게 아니구나" 등 여러 생각이 들 수도 있습니다.

하지만 이 책은 그 패턴을 정확히 왜 사용하는지부터, 더 체계화하여 사용하는 방법을 알려줍니다. 그저 존제하기에 사용하는것이 아니라 장단점을 명확하게 알고, 장점은 극대화시키고 단점은 최소화시키는 방향으로 말입니다.

많은 게임 튜토리얼이 플레이어를 구현할 때 switch문과 enum을 이용해 상태 패턴을 구현합니다. 하지만 이 책은 상태마다 하나의 객체를 만들어 각 상태에 맞는 동작과 데이터를 캡슐화하거나, 그 상태를 Stack에 넣어 상태를 되돌리는 기능까지 다룹니다.

게임 루프와 업데이트 매서드는 게임 엔진에서 구현하고 있는 패턴들이고 우리는 그 패턴에 기반하여 제공하는 기능들을 사용하고 있습니다. 하지만 그저 사용할 뿐이죠. 이책은 어떤 의도를 가지고 그런 식으로 구현했는지 어떻게 개발하는지를 다룹니다.

유니티와 언리얼 엔진 모두 컴포넌트 패턴을 적극적으로 사용하고 있는 건 쉽게 알 수 있지만, 책에서는 우리의 코드에 적용해 상호작용하는 요소들을 디커플링하고 거기에 인터페이스를 추상화해서 컴포넌트를 전략 패턴처럼 갈아 끼우는 부분까지 다룹니다.

이외에도 최적화, 데이터 관리 여러 패턴에 대해 알아가시다 보면 여러 문제점에 대한 해결책을 알아가면서 게임 개발에 대한 시각이 넓어지실 겁니다.

profile
수강신청 망친 새내기 개발자

0개의 댓글