jrcfore***
2021-09-20

386 시절 PC 하드웨어는 파편화에 시달렸고 여러 한계가 존재했지만, 이드 소프트웨어는 이를 극복하고 로 FPS의 문을 활짝 열어젖혔다. 이 책은 가 만들어진 모든 과정을 밝히며 게임 엔진 소스를 낱낱이 파헤친다.
둠에 이어 이번 리뷰 도서로 "울펜슈타인 3D"를 신청하였는데, 다행히 해당 도서를 리뷰할 기회가 생겨 리뷰를 진행하게 되었다.
책의 내용은 울펜슈타인 3D를 개발하는 과정에서 겪었던 노하우와 테크니컬 이슈 등으로 구성되어 있다. 무엇보다. 이 시리즈가 마음에 드는 이유는 직접 프로젝트 코드를 일일이 열거해가며 관련 코드의 탄생 배경과 로직 흐름도 그리고 동작 절차 등에 대해서 정말로 자세히 설명하고 있다는 점이다.
물론 요즘과 같이 script 언어를 위주로 공부한 세대들에게는 안 맞는 책일 수 있다. 이 책은 C언어와 intel cpu 전용 assembly로 구성되어 있기 때문이다. 따라서 어떤 이들은 이런 옛날 프로텍트 코드를 보며 배울 것이 없다며 터부시 여길지 모른다.
하지만 그러면 안 된다. 옛날 세대가 겪었던 문제들에는 지금 우리 세대에서 겪고 있는 문제가 고스란히 스며들어있으며 또한 그들의 접근했던 솔루션과 생각과 고뇌들이 지금 우리 세대가 겪고 있는 문제의 훌륭한 솔루션이 될 수 있기 때문이다.
솔직히 리뷰를 오랫동안 해왔고 이 분야에 나름 20년 넘게 있었던 내가 보아도 옛날에 개발자들이 대면했던 문제들과 지금의 개발자들이 대면하는 문제는 크게 다르지 않다. 다면 그 형태와 모양 그리고 기술의 이름만 바뀌었을 뿐, 결국은 거의 비슷한 뿌리에서 고민이 시작된다. 그렇기에 우리는 과거의 개발자들의 자취와 그들이 거쳐왔던 과정을 세세히, 그리고 자세히 탐구하여 우리의 것으로 만들어야 한다.
【책의 구성】 '게임 엔진 블랙 북: 울펜슈타인 3D'의 책의 구성은 어떠한가.
이 책은 둠과 마찬가지로 총 7장의 챕터로 구성되어 있다. 각 챕터마다, 당시의 시대상을 여실히 들어내주는 챕터 들고 구성되어 있다. 다만, 4장에 쓰여있는 소프트웨어 챕터가 이 책의 꽃이라고 봐도 무방하다. 해당 챕터에는 울펜슈타인 3D에 구현된 핵심 엔진 코드들에 관한 자세한 설명들이 수록되어 있으며 또한 당시에 개발자들의 고뇌를 살펴보기에 부족함이 없는 장이기 때문이다.
따라서 다른 챕터는 안보더라도 4장은 꼭 보자. 아니 2번 보길 권한다.
1파트 : 하드웨어
20~30년 전만 해도 우리가 사용하는 머신에 메모리가 128MB라면 엄청난 수치였었다. 오죽했으면 빌 게이츠가 컴퓨터의 램은 몇 kb 만으로 인류가 사용하기에 적합하다고 했을까.. 그만큼 당시 램에 관한 집적 기술은 지금에 비교하면 월등히 떨어졌고 (당시 기술론 혁신적이었다) 또한 소재 공학 등에 있어서도 그 갭이 상당했음을 짐작할 수 있는 챕터이다.
하지만! 당시에 고안된 하드웨어 아키텍처 설계는 지금과 크게 다르지 않다는 점과 당시의 기술을 토대로 지금의 기술이 태동했다는 것을 충분히 이해한다면 반드시 해당 부분에 대해서 꼼꼼히 이해하고 집고 넘어가야 할 부분임엔 트림 없다.
4파트 : 소프트웨어
이 챕터는 그냥 꽃이다. 이 책의 정수라 할 수 있다. 올펜슈타인을 구현하는 과정에서의 고뇌와 철학을 여실히 느낄 수 있는 훌륭한 파트이다. 알고리즘적 기법과 고뇌 그리고 그들의 철학을 엿볼 수 있는 장이다. 꼭 읽어봐야 한다. 요약을 바라시겠지만 요약은 하지 않겠다. 직접 읽어보길 권한다. 당대 최고의 개발자들의 생각을 엿볼 수 있다.
다만 해당 챕터는 앞서 말한 것과 같이 C와 어셈블리 코드 위주의 설명이다. 거기에 intel cpu instruction set으로 구성된 어셈블리를 사용하고 있다. 따라서 이와 관련된 어느 정도의 기반 지식은 충분히 확보한 상태에서 읽어보길 권한다.
클리핑. 유한 스테이트 머신, 3d 그래픽 처리, 메모리 처리 등등 게임 프로그래밍에 있어서 필요한 모든 기술들을 다루고 있다. 솔직히 해당 장만 잘 소화시키고 온전히 본인 것으로 만든다면 충분히 간단한 게임 엔진 하나는 뚝딱 만들 수 있다고 보인다.
꼼꼼히 읽어보고 곱씹어 보길 권한다.
【 "게임 엔진 블랙 북: 울펜슈타인"을 읽고서…….】
'모든 지식은 무엇인가에 뿌리를 두고 있다.' 예전에 "둠" 책을 리뷰할 때, 리뷰어가 했던 말이다. 그렇다 모든 지식은 무엇인가에 뿌리를 두고 있다. 그 뿌리가 무엇이 되었건 어떤 것이 되었건 모든 것은 뿌리가 있다. 뿌리를 잘 내려두면 줄기와 잎을 뻗쳐나가는 것은 시간이 지나면 절로 해결될 문제이다. 다만 뿌리를 좋은 곳에 내려야 줄기와 잎이 무성히 자라 훌륭한 나무가 될 수 있다. 그렇기에 모든 학문에 있어서 그 뿌리를 어디에 두어야 할지 그리고 어떤 식으로 학습하여 속을 채울지 항상 생각해 봐야 할 일이다.
더욱이 개발자라는 직업은 시대의 트렌드에 맞춰 여러 기술적 갈증과 새로운 니즈를 충족시키기 위해서 스스로를 꾸준히 갈고닦아야 하는 직업이다. 솔직히 어느 직업이건 이 부분은 동일할 것이다. 한때 자동차가 도입되면 세상이 망한다고 했던 사람들처럼, 한때 문제가 공급되면 세상 사람들이 멍청해질 것이라 했던 과거의 우리 조상들처럼 항상 새로운 기술은 새로운 반대를 무릅쓰고 그 태동을 시작했고 세상을 변화시켰다. 그렇기에 개발자들은 새로운 기술에 자신만의 창작과 새로움을 더해 더욱 창의적인 창작을 끊임없이 추구해야 한다.
하지만 그 변화는 완전한 새로움. 즉 무에서 유로 창조된 것이 아니다. 기존의 것들과 어울리고 조화되어 최종적으로 융합이라는 새로운 가치로써 창작하는 것에 목적을 둬야 한다. 그렇기에 개발자라는 직업은 쉬운 직업은 아니다. 어찌 보면 괴로운 직업이며 상당히 피로한 직업이라 할 수 있다.
그렇다 할지라도 너무 기죽지 말자. 당신이 구현한 코드 한 줄이, 당신이 추가한 어셈 니모닉 한 개가 세상을 구하는 단초가 될지 모른다. 때론 그것이 누군가에겐 새로운 창작의 씨앗이 될 수도 있다. (단적으로 시드마이어의 간디를 보아라! 그 게임에서의 평화주의자 간디의 핵 사랑은 개발자의 코드상 실수가 아니었다면 창조되지 않았다.)
변화를 두려워하지 말라. 그러나 너무 변화만 사랑하지 말라. 때로는 옛것 기초 지식에 대해서 곰곰이 생각해 봐야 한다.
#본 도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.