화요일, 10월 27, 2020

[독서광] (번역서) 게임 엔진 블랙 북: 울펜슈타인 3D

정말 간만에 번역서로 독자 여러분들을 찾아뵙게 되어 무척 기쁘다. 이번에 새로 선보일 책은 게임 엔진을 분석하는 블로거로 유명한 파비앙 상글라르가 집필한 게임 엔진 블랙 북 시리즈 중 첫번째 책인 울펜슈타인 3D다. PC에서 FPS의 신기원을 열었다고 평가받는 울펜슈타인을 만드는 과정에서 직면한 여러 가지 제약 사항을 극복하면서도 정말 재미있는 게임을 만들어나가는 내용이 담긴 이 책은 게임 제작자는 물론이고 게임 애호가들의 열정을 다시 한 번 불어일으키기게 충분하다는 생각이다.

무엇이 존 카맥을 움직여 이렇게 재미있는 게임을 만들게 했을까? 개발 팀원들 사이에서 협력은 어떻게 이뤄졌을까? 게임 파이프라인을 어떤 식으로 구축해 최단 기간 내에 완성도 높은 작품을 만들 수 있었을까? 단순히 연대기 순으로 개발 일지를 기록하는 방법도 있지만 이 책은 울펜슈타인의 원본 소스 코드를 중심으로 그 당시 열악한 하드웨어/소프트웨어 환경, 부족한 자료를 채우기 위한 아이디어 구상, 게임성을 높이기 위한 애셋과 지도 설계, 다양한 게임기로 이식 과정에서 일어난 절충안을 알기 쉽게 설명하고 있다.

번역과 교정지 검토가 끝난 다음에 출판사에 보낸 역자 서문(주의: 아래 글은 초안이며, 출판된 책과 다소 차이가 날 수 있음에 주의하자)을 여기 옮겨본다.


오픈 소스로 나온 소프트웨어를 분석하려면 가장 처음 버전부터 살펴보라는 조언이 있다. 가장 첫 버전은 이 소프트웨어가 추구하는 목표가 명확하며 아키텍처와 핵심적인 알고리즘이 한 눈에 들어오기 때문이다. 시간이 지날수록 사용자의 환경이나 요구에 따른 변화가 늘어나기 시작하며 꼭 있어야 하지는 않지만 있어도 좋은 기능이 추가되기 시작한다. 그리고 참여 개발 인원이 늘어남에 따라 일관성도 조금씩 균열이 가기 시작한다. 예외를 처리하기 위한 온갖 보호 코드가 들어가고 다양한 테스트 케이스가 추가된다. 어느 정도 안정화된 버전 3이 넘어가면서부터는 방대한 코드 기반이 자리를 잡게 되지만 그만큼 분석이 매우 어려워지고 전문적으로 프로젝트에 관여하지 않는 이상 소스코드에서 뭔가 더하거나 빼기 어려운 상황이 된다. 그렇다면 게임 부문은 어떨까? 대화 상자를 하나 띄우기 위해서도 온갖 프레임워크와 라이브러리 사용에 매몰되는 현 시점에서 진짜 게임 개발이란 무엇이며 게임의 핵심을 정확하게 파고드는 방법이 있긴 할까? 다행스럽게도 이드 소프트웨어가 공개한 울펜슈타인에서 답을 찾을 수 있다.

CPU가 장착된 물건을 보면 울펜슈타인을 포팅하려고 든다는 이야기가 탄생한 배경은 두 가지 때문이라는 생각이다. 먼저 소스 코드가 상위레벨(역공학으로 분석한 어셈블리어가 아닌 C와 같은 고급 프로그래밍 언어)로 존재해야 하며, 다음으로 재미있는 게임을 위한 핵심적인 알고리즘과 다양한 제한을 푸는 문제 해결의 열쇠가 소스 코드에 녹여져 있어야 한다. 울펜슈타인은 놀랍게도 기존에 바이너리 롬 이미지로만 존재하는 여느 게임과는 달리 두 가지 요건을 모두 충족하며 그 결과 뭔가 직접 만들고 싶어하는 개발자들이 다양한 환경에서 동작하게 이식 작업을 진행할 수 있었다. 울펜슈타인 애호가들은 지도를 편집하거나 애셋을 추가하는 방법으로 게임을 풍부하게 만들었고 최고의 실력자들은 자신이 보유한 컴퓨터나 게임기에서 동작할 수 있게 직접 소매를 걷어붙이고 뛰어들었다. 과거 추억이 떠올라 현재 보유한 컴퓨터에서 울펜슈타인을 돌려보는 애호가들도 많다. <[SW] Wolfenstein-3D 를 Windows용으로 컨버전 하기> 글에서는 윈도우 10에서 울펜슈타인을 돌리기 위해 개발 환경 설정부터 컴파일과 라이브러리 파일/애셋 설치에 이르기까지 전반적인 경험을 공유하고 있다. 개발 환경 구축이 어렵다면 비록 원본 코드와 거리가 멀긴 하지만 HTML5로 만들어진 코드를 이용해서 웹 브라우저에서 실행해볼 수도 있다. 무한한 가능성은 우리의 상상력이 제한할 뿐이다.

게임 업계에 울펜슈타인이 남긴 업적은 단순히 하드웨어적으로 적합하지 않아 보이는 업무용 PC에 3D 효과가 담긴 1인칭 게임의 가능성을 훌쩍 뛰어넘어서 이렇게 게임을 즐기고 만들고 싶어하는 모든 사람에게 불을 밝혀주는 등대가 되었다는 이정표라고 말해도 과언이 아니다. 게임을 만들고 싶어하는 많은 사람들이 울펜슈타인 코드를 읽으면서 시작했으며 처음 등장한지 28년이 지난 지금에 와서도 배울 교훈은 충분하다고 본다. 파편화되고 열악한 하드웨어, GPU는 고사하고 레지스터 레벨에서 저수준 조작을 가해야 가까스로 성능을 맞출 수 있는 그래픽 카드, 제한적인 메모리와 운영체제 지원 등 게임을 만들지 못할 이유를 열거하라면 끝도 없지만 창의력은 제약에서 나온다는 말이 있듯이 이드 소프트웨어의 열정적인 개발자들은 이 모든 어려움을 극복하고 FPS의 원형을 만들어내는 데 성공했으며 오픈소스로 공개하기 전부터 이미 다른 게임 제작자에게 엔진을 제공해 당시 게임 수준을 한 단계 높일 수 있었다.

그렇다면 호기심이나 장래 게임 제작의 뜻을 품고 울펜슈타인 코드를 보고 싶은 개발자라면 어디서 출발해야 할까? 지금은 존재하지도 않는 하드웨어와 찾기도 어려운 개발 환경을 이해하고 코드 이면에 숨어 있는 제약을 파악하는 과정은 결코 쉽지 않을 것이다. 다행히 이 책은 울펜슈타인이 동작하는 하드웨어 환경, 개발 환경, 소프트웨어 개발 과정에서 직면한 다양한 문제와 이를 해결하는 방안을 체계적으로 정리하고 있다. 원래 x86의 메모리 제약이 어떤 문제를 일으키며 이를 해소하기 위한 메모리 관리 기법은 무엇인가? 부동소수점 연산을 소프트웨어적으로 구현하려면 어떻게 해야 하는가? 그래픽 카드에 제약 사항을 해소하기 위해 어떤 방식을 사용해서 이중 버퍼링을 구현할까? 3차원 그래픽을 위해 수학을 어느 정도 알아야 하고 복잡한 연산을 회피하기 위해 어떤 기교를 부려야 할까? 적들의 상태를 관리하기 위해 상태 머신을 어떻게 구현해야 할까? 제한된 화면 해상도와 색상으로 어떻게 그럴싸하게 화면을 구성할까? 이와 같은 질문에 대한 대답이 이 책에 잘 정리되어 있다. 지금은 하드웨어가 발전하고 소프트웨어 개발 환경이 엄청나게 전문화되고 고도화되었기에 이 모든 질문과 대답이 무의미해보일지도 모르겠다. 하지만, 이런 온갖 제약에도 불구하고 사람들이 푹 빠져들만한 재미있는 게임을 만들기 위해 어떤 설계 결정을 내렸고 이런 설계 결정에 맞춰 알고리즘을 어떻게 구성하고 어떻게 구현했는지에 초점을 맞추면 또 다른 세계가 열릴 것이다.

이 책을 번역하는 동안 정말 간만에 옛날 생각이 많이 났었다. 80286 AT 컴퓨터에서 터보 C를 사용해 프로그램을 만들다 포인터 버그 때문에 프로그램이 시작하자 마자 바로 죽은 기억, 크롬 모니터와 허큘리스 그래픽 카드에서 게임을 하기 위해 램 상주 프로그램(TSR)인 CIMCGA를 설치한 기억, 사운드블래스터 사운드 카드를 구입한 다음에 IRQ 맞추고 충돌을 방지하느라 애를 먹은 기억, 게임을 할 목적으로 XMS/EMS 메모리 관리를 위해 AUTOEXEC.BAT과 CONFIG.SYS를 이리저리 수정한 기억 등이 지금도 엊그제처럼 생생하게 떠오른다. 역자와 마찬가지로 독자 여러분들도 1990년대 초반으로 돌아가 해커, 광기의 랩소디 : 세상을 바꾼 컴퓨터 혁명의 영웅들(복간판) 3부에 등장한 1980년대 게임 해커들의 정신을 이어 받아 몇 단계 진일보한 열정 넘치는 개발자들의 활약상을 함께 즐기면 좋겠다.


인터넷 서점에서 절찬 예약 판매 중이며, 과거 게임의 개발 역사가 궁금하신 분이라면 무척 흥미롭게 빠져들 것이다.

앞으로도 출판사에서 이런 고전을 펴내고야 만다는(한빛미디어 담당자에게 다시 한 번 감사 말씀 드린다) 어려운 결정을 내릴 수 있게 독자 여러분들의 많은 성원 부탁드리겠다.

EOB

댓글 5개:

  1. 구글 플레이에서 책 구매하고 싶은데 pdf로만 있는거 같아요.
    (제가 킨들을 써서 화면 크기가 작아 pdf 포맷으로 된 책은 보기 힘들더라구요)

    혹시 epub으로도 지원 가능하신지요?

    답글삭제
    답글
    1. 아직 출판사에서 전자책 출간 계획은 없는 것으로 알고 있습니다. 향후 진행 상황을 보고 전자책 출간이 결정되면 어떤 형식인지 말씀드리겠습니다.

      삭제
  2. 전자책은 출간 후 2개월 이내에 출시될 텐데 아쉽게도 pdf로 나올 겁니다. 전문서는 레이아웃 문제로 epub 제작이 많이 어렵네요. :(

    답글삭제
    답글
    1. 아 이미 나왔네요. https://ridibooks.com/books/443000839

      삭제
    2. 말씀주신 대로 전자책(PDF)로 출간되었습니다. 제가 깜빡 잊어먹고 소식을 전하지 못했습니다. 댓글로 알려주셔서 정말 감사합니다.

      삭제