Review
게임 프로그래밍 패턴 후기

코드베이스의 규모가 커져가면서 디자인 패턴의 중요성이 커지고 있는 것 같다. 그러나 게임 개발에서는 흔히 이야기하는 디자인 패턴을 적용하기 어렵다고 느끼는 순간들이 있다. 게임 프로그래밍에서는 많은 요소들이 서로 연결되어 있고, 성능을 위해서 한눈에 알아보기 어려운 코드를 작성해야 할 경우도 많기 때문이다. 그렇지만 오히려 게임 코드의 구조가 이렇게 복잡하기 때문에, 조금이라도 커플링을 줄이고 유지보수하기 쉽게 하는 설계가 더 중요한 분야인 것 같다.
이 책은 총 19가지의 패턴을 각각 설명해 준다. 몇 개는 다른 디자인 패턴 책에서도 볼 수 있는 유명한 디자인 패턴이고, 몇 개는 게임 프로그래밍을 위한 디자인 패턴이다.
디자인 패턴 다시 보기 파트에서는 유명한 패턴들의 장단점을 분석하고 이런 패턴이 게임의 어떤 부분에 적용될 수 있을지를 설명해 준다. 순서 패턴 파트에는 게임의 큰 구조를 결정하는 업데이트 패턴 등이 있다. 언리얼, 유니티 같은 많은 게임 엔진도 이 방식을 따르기 때문에 유용하다. 행동 패턴 파트에서는 게임 프로그래밍의 특성상 많은 비슷한 객체와 중복 코드들을 깔끔하게 다를 수 있는 패턴을 다룬다. 디커플링 패턴 파트에서는 게임에서 흔히 생기는 객체들의 의존 관계를 해결할 수 있는 방법들을 설명한다. 마지막인 최적화 패턴 파트는 게임 프로그래밍에서 흔히 사용되는 성능 최적화 방법들을 알려준다.
이 책에서 디자인 패턴이 항상 좋다고 하는 것이 아니라 패턴을 적용했을 때 얻는 것과 잃는 것을 확실히 분석한다는 점이 마음에 들었다. 특히 게임 코드에서는 이런 디자인 패턴을 적용했을 때 보이지 않는 곳에서 성능적인 문제가 발생할 수도 있다. 이 책에서는 그런 작은 부분까지 놓치지 않고 패턴을 분석해 준다. 또한 디자인 결정 사항들을 나열하면서 구체적인 구현 방법을 고민하게 해 주는 점도 좋았다.
제목이 게임 프로그래밍 패턴이고 책에서 다루는 예시도 모두 게임이지만, 다른 분야의 프로그래머에게도 유용한 책이라고 생각한다. 실제로 도움이 될 만한 내용도 많을 뿐만 아니라, 이 책의 디자인 패턴에 대한 관점도 배워둘 만하다고 생각한다. 디자인 패턴에 대한 개념이 전혀 없는 독자에게는 내용이 와닿지 않을 수도 있지만, 디자인 패턴이란 걸 접하고 어디에 적용할 수 있을지 궁금한 독자에게 딱 적합한 내용일 것 같다.
웬만해서 같은 책을 여러 번 읽지는 않는데, 이 책은 여러 번 읽었을 만큼 마음에 들었다. 그렇지만 인쇄가 잘못돼서 글씨가 번져 보여서 좀 불편하긴 했다.