추억 속의 레트로 게임을 모던 개발 툴로 제작하는 거의 모든 방법
잠시 1980년대 말로 돌아가자. 당신은 지금 8비트 컴퓨터 앞에 앉아 ‘MSX BASIC 게임’ 같은 책을 보고 있다. 의미도 모른 채 한 글자 한 글자 코드를 입력한 끝에 "RUN"을 치자 게임이 실행될 때의 감격, 하지만 곧 게임 중 뜬 "Syntax error" 앞에 좌절했던 기억. 그땐 게임이 어떻게 돌아가는지, 에러가 왜 나는지도 몰랐지만, 그 환희의 순간을 잊지 못해 지금도 게임을 만들거나 플레이하고 있지는 않은가. 그때는 완성하지 못했던 MSX 게임, 지금이라면 완성할 수 있다.
이 책은 크게 MSX와 MS-DOS를 중심으로, 레트로 플랫폼에서 작동 가능한 게임을 오늘날의 도구와 C 언어로 개발하는 방법을 파헤친다. 이를 위해 저자는 MSX 하드웨어 스펙이나 MS-DOS의 메모리 모델 등 오늘날 찾기 어려운 ‘과거의’ 지식을 치밀하게 발굴하고 정리해 현세대 개발자들이 이해할 수 있게 설명한다. 버전 이슈를 막고 실습 편의를 높이기 위해, 각종 툴을 포함한 배포판, 예제 소스 코드, 동영상, 도구 링크 등의 자료를 온라인으로 제공한다.
MSX와 MS-DOS용 코드를 작성하고 빌드하는 데에서 그치지 않고, 이를 윈도우, 안드로이드, MS-DOS(MSX의 경우) 등으로 포팅하며 크로스 플랫폼 프로그래밍 기법을 익힌다. 또한 로직 작성만큼이나 디버깅을 중요시하여, 곳곳에 동적 디버깅을 도입해 개발 시간을 줄이고 플랫폼에 대한 이해도 높일 수 있게 했다. 마지막으로 MSX와 MS-DOS에서의 개발 방식을 확장해 코모도어 64, 패미컴, 아미가 등 10개 레트로 플랫폼에서 게임을 개발하는 방법도 개괄함으로써 유일무이한 레퍼런스로서의 가치를 노정한다.
386, 486도 아니고 8비트 컴퓨터의 각종 제약을 극복하며 게임 제작에 필요한 개발 스킬을 익히는 것이 이 책의 핵심이다. 엔진과 프레임워크에 매몰되어 초심을 잃은 게임 개발자라면, 이 책을 통해 ‘세대를 초월한 프로그래밍의 재미’를 되찾고 다시 타오를 수 있을 것이다.
책의 구성
1부는 MSX 플랫폼을 개괄하고, 빌드 시스템 및 WSL 환경을 구축한다. 2부의 핵심은 C 언어로 작성된 ubox MSX 라이브러리를 활용한 게임 제작이다. 비주얼 스튜디오 코드로 간단한 샘플 코드를 작성하는 것에서 시작해, 〈왕가의 계곡〉과 유사한 완성도 높은 게임 소스 코드를 분석하며, 맵, 스프라이트, 사운드 등 리소스 사용법과 간단한 제작법까지 살펴본다. 여기까지의 코드를 대상으로, 3부에서 처음으로 디버깅과 크로스 플랫폼 프로그래밍을 설명한다. 4부는 실제 MSX 내에서 MSX-C, MSX 베이직, 어셈블리 등으로 개발하는 방법을 살펴보고, SDCC, HI-TECH C 컴파일러, Fusion-C 등 관련 도구, 그리고 샘플 프로젝트들을 분석한다.
5부는 MSX 개발에서 배운 지식을 바탕으로 MS-DOS에서 작동하는 게임을 만드는 방법을 알아본다. MS-DOS 개발의 가장 큰 걸림돌인 메모리 관리 모델을 자세히 설명하고, 개발 및 디버깅의 편의를 위해 두 운영체제를 활용하는 ‘듀얼 시스템’ 방법론을 도입한다. 도스박스, DJGPP, VGALIB, 알레그로4 등으로 샘플 소스들을 빌드해보며 모던 개발 환경에서 MS-DOS 게임을 제작하는 방법을 익힌다. 디버깅 또한 한 챕터를 할애해 좀 더 자세히 다루고, SDL과 HX 도스 익스텐더를 사용한 더욱 확장된 크로스 플랫폼 프로그래밍의 가능성에 대해서도 살펴본다.
6부는 앞에서 익힌 지식을 바탕으로, 코모도어 64, (슈퍼)패미컴, 아미가, PC 엔진, 메가 드라이브, 게임보이 (어드밴스), 3DO, 세가 새턴 등 10가지 레트로 플랫폼에서 게임을 개발하고 빌드하는 방법을 간단히 살펴본다.