늘 같은 책을 소모적으로 읽고 또 읽는 굴레에서 벗어나기 위한 첫 번째 책, 첫 타선으로 나선 책이 바로 이 책, 게임 프로그래밍 패턴이다. 이전에 읽을 때는 아직 이노스파크에 있을 때였고, 빌려서 읽었는데다가 내공도 딸리고 지금보다 더더욱 대충 읽었을 때였기 때문에 책에 대한 대략의 느낌만이 아련히 남아있다.

이 책의 서문에서 저자는 [실제 게임 내부며, 대가들이 만든 코드를 볼 수 있을 거라는 생각에 잠이 오지 않았다. <매든 NFL=""> 시리즈 같은 거대한 게임의 아키텍처는 어떻게 되어 있을까? 서로 다른 시스템들이 어떻게 상호작용할까? 한 코드 베이스에서 멀티 플랫폼 게임을 어떻게 만들어낼까?]라고 말하고 있는데 아마 프로그래머라면 누구나 큰 프로젝트의 코드에 대한 이런 환상을 가져봤으리라 확신할 수 있다. 나도 꼬꼬마 프로그래머일 때는 이런 환상을 가지고 있었다. 처음의 회사는 코드 베이스가 깊이 있는 편이 아니었기 때문에 이 환상은 꽤 오래 지속됐다. 하지만 저자의 환상이 박살난 것과 비슷한 경위를 거쳐서 나의 환상도 박살이 났다. 그리고 이어서 ‘구조화의 늪’에 빠지는 것까지, 남들이 하는 실책은 모두 겪어오면서 현재의 내가 되었다.

이 책이 가치가 있는 부분은 ‘게임’에 특화된 패턴들을 다루고 있다는 점이다. 당장 초반에 다루고 있는, 드로우에 밀접한 연관을 가지는 경량 패턴, Update 함수(혹은 Tick)로 대표되는 게임 루프, 업데이트 메서드, WOW에서 루아 사용으로 대표되는 바이트 코드. 금과옥조와 같은 패턴들을 다루고 있으면서 그 패턴들이 가지는 디테일을 조심스럽게 다루어 글로 옮긴다.

여러 패턴들을 보면서 차마 생각하지 못했던 구조화의 헛점을 발견한다던가, 이 부분은 나도 적용할 수 있겠다, 그리고 내가 모르던(혹은 외면하던) 근간들과 직접적으로 마주하는 부분들은 나를 꽤 자극시켰다.

하지만 이렇게 겪어오면서 결국 실패를 통해 느꼈지만, 과도한 구조화는 안하니만 못하다는 점을 늘 상기해야 하겠다.. 임백준 님은 자주 무협지를 비유로 들며 ‘주화입마’라고 표현했었는데 딱 그 짝이다. 코드가 이 코드 저 코드를 넘나드는 것은 머릿 속을 구조 파악으로 가득 채워서 실질적인 문맥 파악을 힘들게 만든다.

여러모로 깊이 있는 부분들이 제법 있어서, 그리고 게임에 그 근간을 두고 있어서 즐겁게 읽을 수 있는 책이다.

재밌었다.

다 읽은 건 꽤 됐는데, 새로운 책 정리 기법을 적용하다 보니 독후감이 늦어졌다.. 이렇게 작성하는 독후감의 효용성에도 의구심이 들긴 하지만.