- 1996년 출시된 퀘이크(Quake) 는 3D 가속기, 인터넷, 그리고 MS-DOS에서 Windows 95로의 전환이라는 세 가지 기술 변화를 동시에 맞이한 게임
- id Software는 DOS와 Windows 95 모두에서 실행 가능한 단일 실행 파일을 만들기 위해
djgpp컴파일러와 DPMI 호환 구조를 활용 - Mpath의 ‘Chunnel’ 시스템을 통해 DOS용 퀘이크가 Windows 95의 Winsock TCP/IP 스택에 접근할 수 있도록 구현
- 이 구조는
quakeudp.dll,genvxd.dll,mgenvxd.vxd등의 구성요소로 이루어져 있으며, DOS 실행 파일이 Win32 네트워크 API와 통신하도록 중계 - 이후 id Software가 Win32 전용 실행 파일(WinQuake, GLQuake) 로 전환하면서 이 복잡한 구조는 사라졌음
퀘이크와 운영체제 전환기
- 1996~1997년 사이 MS-DOS의 시장 점유율이 절반으로 감소, Microsoft는 Windows 95와 NT로 전환을 추진
- 일부 개발사(예: Blizzard North)는 Windows 95 전용 게임을 개발했으나, id Software는 하나의 실행 파일(quake.exe) 로 DOS와 Windows 모두 지원
-
quake.exe는 DJGPP의 DPMI 클라이언트를 사용해 DOS용cwsdpmi.exe또는 Windows 95의 DPMI 서버와 호환되도록 설계 - Microsoft 엔지니어 Raymond Chen은 이를 “이질적인 확장기에서 프로그램이 정상 작동하는 놀라운 사례”로 설명
DOS 환경에서의 퀘이크 실행
- DOS에서 퀘이크를 실행하려면
quake.exe,config.cfg,pak0.pak,cwsdpmi.exe네 개의 파일만 필요 - 멀티플레이어는 모뎀, NullModem, IPX, TCP/IP 네 가지 방식을 지원
- IPX는 LAN용, TCP/IP는 인터넷용이지만 DOS에는 TCP/IP 스택이 기본 제공되지 않음
- 유일한 DOS용 TCP/IP TSR은 Beame & Whiteside의 BWNFS, 가격은 395달러(1996년 기준)로 매우 비쌌음
Windows 95 환경에서의 실행
- Windows 95의 가상 DOS 박스(dos-box) 에서
quake.exe를 실행하면 동일한 방식으로 동작 - Windows 95의 DPMI 서버를 사용하므로
cwsdpmi.exe는 불필요 - 실행은 원활했지만, RAM 16MB 이상 필요, DOS보다 메모리 오버헤드가 큼
- VGA 접근이 직접 허용되어 전체화면에서도 성능 저하 없이 실행 가능
q95.bat와 Mpath의 Chunnel
-
q95.bat은 단순히 퀘이크를 실행하는 스크립트가 아니라, Mpath의 Winsock 터널링 시스템(Chunnel) 을 통해 TCP/IP 연결을 활성화 - Mpath Interactive는 온라인 게임 서비스(Mplayer) 를 운영하며, 퀘이크와 언리얼을 포함한 여러 게임의 인터넷 플레이를 지원
- 당시 Mpath 엔지니어 Larry Hastings는 퀘이크 초기 빌드에서 id Software 팀과 인터넷 데스매치를 진행한 일화를 소개
- Mpath는 퀘이크 소스 코드를 받아 Mplayer 네트워크 스택과 통신하도록 수정, Chunnel 기술을 id에 라이선스 제공
Chunnel의 기술 구조
-
q95.bat은qlaunch.exe를 실행하며, 이는quakeudp.dll을 로드-
quakeudp.dll은 Winsock(wsock32.dll)과의 브리지 역할을 수행 -
genvxd.dll을 통해 가상 장치 드라이버mgenvxd.vxd를 로드하고, 인터럽트0x48을 통해 Win32와 통신
-
- 퀘이크의 BSD 소켓 구현(
mpplc.c)은 Mpath 제공 코드로, 소프트웨어 인터럽트를 통해 네트워크 호출을 전달 -
genvxd.dll은 이 호출을 언마샬링(unmarshalling) 하여 Winsock으로 전달 -
mgenvxd.vxd의 심볼에는 John Cash의 이름이 포함되어 있음 - 이 기술은 Mpath의 독점 특허 기술로, 소스 코드는 공개되지 않음
- 1996년 12월 이후 id Software가 Win32 전용 실행 파일(WinQuake, GLQuake, QuakeWorld) 로 전환하면서 Chunnel 구조는 폐기됨
결론
- 퀘이크의 TCP/IP 지원은 DOS 실행 파일이 Windows 95의 네트워크 스택을 간접적으로 호출하는 독창적 구조로 구현
- 이는 DOS와 Windows의 경계에서 작동한 하이브리드 기술로, 1990년대 중반 게임 네트워킹의 과도기를 보여주는 사례
- 이후 Win32 전용화로 단순화되었지만, 당시로서는 운영체제 전환기에서의 기술적 도전과 혁신을 상징하는 구조였음