오래된 기억인데, 학창시절 나를 무척 흥분 시킨 게임이 있었다. 기지 구석구석을 돌아다니며, 나치와 괴물들을 찾아 무찌르는 게임, 울펜슈타인 3D가 그것이다. 지금 기준으로 하면, 이게 무슨 3D야 할 수 있을지 모르겠으나, 당시에는 1인칭 시점의 긴장감 최고의 게임이었다. 좌우 정신없이 돌아다니다 보니, 오바이트 유발 게임으로도 유명했던 기억이 있다.
'게임 엔진 블랙 북 : 울펜슈타인 3D'은 바로 오래된 레트로 게임 울펜슈타인 3D의 개발과정, 뒷이야기를 담은 책으로 '나 때는 말이야'하며 조용하게 옛이야기를 들려주는 것과 같은 느낌이 드는 책이다. 그렇다고 눈치 없는 꼰대 부장이 하는 따분하고 재미없는 이야기가 아니다. 당시 개발자의 모습, 게임 제작 당시의 컴퓨터 하드웨어와 소프트웨어의 상황에 각종 개발 난제, 그 극복 과정이 고스란히 책에 담겨 있어 마치 인간극장과 같은 다큐멘터리를 보는 재미를 준다.
나처럼 연식이 좀 있는 분들이 이 책을 본다면, 최면에 걸리듯이 옛 추억에 쉽게 빠져들 것이다. 지금은 게임도 4K, 8K의 해상도를 얘기하고 있지만, 당시에는 640x480, 320x200였다. 컬러도 트루컬러가 아니었다. 256, 16컬러로 게임들이 만들어지던 시절이었다. 사운드도 애드립, 사운드블라스터가 막 나오고 있던 시절이었다. 우리가 아는 옥소리 카드는 그 뒤에 등장을 했었다.
5.25인치, 3.5인치 플로피 디스크라는 것도 있었다. 이것을 조금이라도 싸게 사려고 남대문 시장을 갔던 기억도 나고, 돈 없는 학생 신분에 프로그램 구할 길이 없어, 송탄 미군부대 근처까지 가서 불법 복제품을 구한 기억도 떠오른다. 80메가 하드를 80만 원 넘게 주고 샀던 기억도 난다. 80테라가 아니다 80메가다. 당시에는 친구들이 그걸 보고 그 많은 용량을 어디에 쓰냐고 했다. 지금 생각하면 웃기는 말이다. 무손실 음악파일 flac 하나만 해도 20메가가 넘는데 말이다.
'게임 엔진 블랙 북 : 울펜슈타인 3D'에는 이러한 당시 PC 환경을 책 초반에 담고 있다. 당시 컴퓨터 상황에 대한 이해가 없으면, 뒤에 나오는 코드를 왜 그렇게 만들었는지 전혀 이해할 수 없기 때문이다. 386 CPU 경우 당시에는 하드웨어 부동 소수점 장치가 없었다. Float 연산이 있긴 했지만, 소프트웨어로 하는 거라 속도가 많이 느렸다. 그 때문에 필요한 경우 수치 연산을 위한 값비싼 코프로세서라는 것을 별도로 꽂아야 했다. 당시 개발자도 코프로세서를 구경도 못한 사람이 많다는 게 웃기는 일이다.
그뿐만이 아니다. 지금도 전자기기에 들어가는 마이콤 개발에는 메모리나 용량 제한이 큰데, 당시 컴퓨터도 마찬가지였다. 현재 아두이노나 라즈베리파이만도 못한 성능이라 해도 될 정도이다. 나도 한참 프로그램 공부를 하던 시절이라, 그놈의 640kbyte 제한 때문에 무척 고생했던 기억이 있다. 뭐 좀 멋지게 짜려고 하면, 메모리 초과로 에러가 나고 작동하다 멈추기 일쑤였다. XMS, EMS 메모리 기술이 등장한 이유기도 하다. 책에서는 이런 확장 메모리를 당시 개발자들이 사용했는지 어떤 고충이 있었는지 잘 설명하고 있다.
그리고 요즘 프로그램은 하드웨어에 대한 이해가 많이 필요하지는 않지만, 과거에는 하드웨어에 대한 이해는 필수였다. 게다가 도스나 윈도우 구조 또한 제대로 알지 못하면, 한계 극복은 할 수 없었다. 인터럽트, 어셈블리에 대한 이해도 필요했다. API 함수의 지원도 지금처럼 많지 않은 데다, 함수에 따라 속도 차이가 많이 나서, 개발자가 일일이 시간 테스트하며 직접 개발하곤 했다. 유니티나 언리얼 같은 도구는 있지도 않았다. 그러다 보니 책을 보면, 울펜슈타인 게임을 만들기 위해 얼마나 별별 짓을 다 했는지 알 수 있다. 곳곳에 어셈블리 코드가 나오고 있고, 기발한 방법들이 펼쳐진다. 볼랜드 C++로 개발을 했지만, 스케일, 텍스처, 각종 움직임, 효과음 등에서 어셈블리 코드들이 등장하고 있다.
현재는 컴퓨터 사양이나 개발 프로그램이 고사양화되어 있다 보니, 별거 아닌 것도 컴파일하고 보면, 엄청난 크기의 파일들이 쏟아져 나온다. 난 옛사람이라서 그런지 사이즈를 보면, 내가 잘못 짠 게 아닌가 하는 걱정이 들곤 한다. 최적화에 대한 고민을 하게 된다. 개발 일정에 쫓기다 보면, 최적화가 더러 무시되는 경향이 있는 거 같다. 그런데 이 책은 우리가 자꾸 망각하는 최적화에 대한 노력, 기발한 아이디어에 대한 영감을 자극한다.
그렇기 때문에 '게임 엔진 블랙 북 : 울펜슈타인 3D'는 코드 리뷰라는 관점에서도 참 좋은 책이다. 개발자에게 코드 리뷰는 자신의 실력을 좀 더 업그레이드할 수 있는 계기가 된다. 코딩 기술도 습득하고, 생각을 확장할 수 있게 돕는다. 비록 울펜슈타인 3D가 오래된 게임이지만, 책에 나온 코드 설명들을 보면서, 지금의 개발자에게도 도움이 되는 요소들이 많다고 느꼈다.
이 책에는 울펜슈타인 3D 개발에 관한 모든 것들이 나온다. 연필로 그린 인물 스케치도 나오고, 회색 박스에 존 카맥과 같이 당시 게임 개발과 관련된 사람들의 생생한 증언도 담고 있다. 이 게임은 당시 대학살 등급 PC-13이었다고 한다. 게임에서 워낙 많은 적을 죽이고, 화면도 빨갛게 변하곤 했으니 당시 기준으로 그럴 만도 하다.
그 밖에 책에서는 토막상식을 통해 용어 설명이나 내용 설명을 보강하고 있고, 당시 기술적 정황, 참고할 것들도 다루고 있으며, 참고할 인터넷 주소나 문헌도 주석에 잘 추가되어 있다.
'게임 엔진 블랙 북 : 울펜슈타인 3D'은 역사 기록과 같은 책이다. 울펜슈타인 3D의 모든 것을 잘 정리해서 담은 책이다. 내가 프로그램 공부하던 시절에 이런 책이 있었다면, 아마도 게임 개발 쪽에 심취했을 것이다. 당시에 몰랐던 많은 것들을 알 수 있었다. 아울러 레트로 감성에 빠져 추억 소환도 되었고, 보는 내내 재미있었다. 예전이나 지금이나 개발자의 삶은 확실히 쉽지 않은 거 같다. 변한 건 개발 환경과 컴퓨터 사양뿐이다.
아무튼 언제나 비슷한 프로그래밍 책에 지쳤다면, '게임 엔진 블랙 북 : 울펜슈타인 3D'을 읽어보라고 하고 싶다. 분명 다른 느낌을 받을 것이다. 머리 식히기도 좋고, 내가 어떤 개발자가 될지 고민도 하게 만드는 책이다. 적어도 난 그랬다.