게임 Lobsters · 1일 전

90년대 386 컴퓨터로 실사 지형 뽑아냈던 전설의 게임 '코만치' 맵 데이터 뜯어본 후기

핵심 요약
  • 1992년 혁신적인 복셀 그래픽으로 화제를 모았던 헬리콥터 시뮬레이션 게임 '코만치'의 맵 데이터 역공학 분석이 공개되었습니다.
  • 높이 맵과 컬러 맵을 추출하기 위해 헥스 에디터로 .DTA 파일을 분석한 결과, 개발자 카일 프리먼의 시그니처와 함께 당시 DOS 표준 PCX 이미지의 압축 구조를 사용했음이 드러났습니다.
  • 이를 바탕으로 원본 데이터를 디코딩해 현대적인 BMP 이미지로 변환하는 C 프로그램 구현으로 이어졌습니다.
요약 1992년 노바로직(NovaLogic)이 출시한 헬리콥터 비행 시뮬레이션 게임 '코만치: 맥시멈 오버킬(Comanche: Maximum Overkill)'은 대다수 3D 게임이 폴리곤을 사용하던 시절, 카일 프리먼(Kyle Freeman)이 고안한 '복셀 스페이스(Voxel Space)' 알고리즘을 도입해 당대 386 PC 환경에서도 실사 수준의 굴곡진 산맥과 협곡 지형을 렌더링하며 큰 충격을 안겼던 고전 명작입니다. 개발자 구스타보 페치는 이 복셀 스페이스 지형 렌더링에 사용된 원본 맵 데이터를 추출하기 위해 당시 MS-DOS 원본 게임 설치 파일을 리버스 엔지니어링하는 과정을 상세히 공개했습니다. 복셀 스페이스 렌더링에는 지형의 높낮이를 기록한 높이 맵(Heightmap)과 조명 및 그림자가 사전 적용된 색상 맵(Colormap) 등 두 장의 1024×1024(각 1MB) 크기 8비트 인덱스 컬러 이미지가 필요합니다. 게임 폴더 내부의 여러 파일 중 접두사 C와 D가 붙은 8개의 .DTA 파일(C1~C4, D1~D4)을 헥스 에디터로 분석한 결과, 파일 시작 부분에서 개발자 서명인 'Kyle DTA' 시그니처가 발견되었습니다. 이어 오프셋 분석을 통해 1023(1024 해상도 좌표) 및 128바이트 헤더 구조가 확인되었으며, 헤더 이후의 압축 바이트 패턴을 살펴본 결과 당시 DOS 환경에서 표준처럼 널리 쓰이던 ZSoft의 'PCX' 이미지 포맷과 동일한 RLE 압축 구조를 띄고 있다는 결정적 단서를 확인했습니다. 분석자는 이를 통해 원본 압축 데이터를 풀어 BMP 이미지로 변환하는 C 프로그램을 구현해 냈습니다.
Sponsored · 광고