그리고 나인 인치 네일즈 사운드트랙.

90년대 중반은 PC 역사상 가장 급변하는 변화의 시기로 손꼽힙니다. 3D 가속 카드의 등장, 단순한 텍스트 기반 DOS에서 화려한 Windows 95로의 전환, 그리고 인터넷의 출현이 이 시기에 일제히 발생했습니다. 이러한 급격한 변화의 흐름은 게임 개발자들에게 큰 과제였는데, 개발자들은 게임을 DOS용, Windows 95용, 또는 두 운영체제 모두를 지원하도록 제작해야 했기 때문입니다.
파비앵 상글라르(Fabien Sanglard)는 매우 상세한 글에서 오리지널 Quake가 TCP/IP 지원을 얻게 된 과정과, 거의 유일하게 하나의 실행 파일로 두 운영체제 모두에 대해 네이티브 지원을 구현한 게임이었음을 설명합니다.
당대의 다른 게임들, 예를 들어 Fallout, Grand Theft Auto, Mortal Kombat 3 등은 DOS와 Windows 95용으로 각각 별도의 실행 파일을 배포했습니다. 그러나 id Software는 Quake가 가능한 한 동일한 실행 파일(그리고 코드베이스)을 사용하기를 원했고, 또한 인터넷 통신 프로토콜인 TCP/IP를 지원하기를 바랐습니다. 당시 여러 사람이 원격으로 함께 플레이하는 것은 매우 신선한 개념이었으며, 진정한 의미의 멀티플레이어 게임은 주로 가정이나 사무실 내부 네트워크에 국한되는 경우가 많았습니다.
(개발사 Showcase는 64KB의 작은 실행 파일에 트리플 레벨의 Quake 급 게임을 구현하는 뛰어난 능력을 선보였습니다.)
이 두 가지 요구사항을 동시에 충족하는 것은 Quake에게 결코 쉬운 일이 아니었습니다. 게임 개발 당시 DOS는 이미 오래된 시스템이었고, 당시 하드웨어의 모든 기능을 활용하기 위해서는, 특히 640KB 이상의 메모리 접근을 위해 수많은 기술적 개선(hack)이 필요했습니다.

DOS의 한계를 극복하기 위해, 게임들은 Watcom의 DOS/4GW나 CWSDPMI와 같은 DPMI(DOS Protected Mode Interface) 확장기를 포함하기 시작했습니다. 이 확장기들은 표준화된 메모리 인터페이스, 멀티태스킹 기능 및 기타 고급 기능을 제공했습니다. 이 확장기는 기술적으로 마이크로 커널(micro-kernel) 역할을 수행했기에, DOS를 대체하는 시스템으로 이해할 수 있습니다. 일반적으로 게임들은 목표 DPMI 서버를 함께 배포하고, 해당 서버가 그들의 유일한 클라이언트 역할을 했습니다.
Quake 개발 과정에서 id는 크로스 플랫폼 개발을 용이하게 하기 위해, Doom에서 사용되던 당시 독점 컴파일러(Watcom)에서 오픈 소스 djgpp 툴킷으로 전환하고자 했습니다. 심지어 Quake는 DEC Alpha 포트까지 지원했습니다. 일반적인 방식에서 벗어나, id는 djgpp 엔지니어들에게 CWSDPMI뿐만 아니라 Windows 95에 내장된 DPMI 서버까지 지원하는 DPMI 클라이언트를 구현해 줄 것을 요청했습니다.
문제는 DPMI가 표준이었음에도 불구하고, 그 명세가 90년대 후반이 되어서야 최종 확정되었다는 점이었습니다. 이는 실질적으로 클라이언트 소프트웨어가 특정 단일 서버에 종속될 수밖에 없음을 의미했습니다. 하지만 djgpp 팀은 이를 달성했으며, 마이크로소프트의 선임 커널 엔지니어 레이먼드 첸(Raymond Chen)은 다음과 같이 분명히 지적했습니다.
“프로그램들이 외부 확장기 위에서 실행된다는 사실에도 불구하고 대체로 괜찮게 작동하는 것처럼 보이는 것은 관점에 따라 완전히 놀랍거나 아니면 완전히 자명한 것입니다.”

Quake에는 네이티브 TCP/IP 지원 코드가 포함되어 있었지만, 크로스 플랫폼으로 작동하기 위해서는 Windows 95의 Winsock TCP/IP 계층과 상호 작용하는 방법이 필수적이었습니다. 게다가, 게임 내 경기/서버 브라우저 기능은 당시로서는 완전히 새로운 개념이었습니다. 이에 id는 Mpath Interactive의 도움을 받아 그들의 Mplayer 매치메이킹 소프트웨어를 Quake에 통합함으로써 이 두 가지 난제를 한 번에 해결했습니다.
Mplayer 소프트웨어는 두 가지 구성 요소로 이루어져 있었습니다. 첫째는 설치된 Mplayer 호환 게임을 자동으로 감지하고 해당 게임들의 게임방 목록을 제공하는 "Gizmo" 게임 브라우저였으며, 둘째는 실제로 Windows의 TCP/IP 스택과 통신하는 "Chunnel"이라는 솔루션이었습니다.
상호 호환성을 완성하기 위해 Quake는 Mpath의 genvxd.dll도 함께 배포했습니다. 이것은 DOS 네트워킹 기능(이 자체가 현재 표준인 BSD 소켓 함수 호출을 사용하는 기능)을 Windows 95의 Winsock으로 변환하는 가상 장치 드라이버입니다. 이것이 장착되자 마침내 여정은 완성되었고, Quake는 별도의 설치 프로그램이나 실행 파일 없이 DOS와 Windows 양쪽에서 원활하게 구동될 수 있었습니다.
더 심도 있는 기술적 세부 사항은 Fabien Sanglard의 심층 분석 기사를 방문하여 확인하시길 바랍니다. 만약 이 글을 읽고 원본 게임을 다시 플레이하고 싶은 마음이 들었다면, 리마스터 버전(remastered version)을 다운로드하여 즐기시길 바랍니다.
최신 뉴스, 분석, 리뷰를 받으시려면 Google News에서 Tom's Hardware를 팔로우하거나 선호 출처로 추가해 주세요.