
추억의 도스 게임, 클릭 한 번이면 끝
혹시 어릴 때 검은 화면에 'C:\>' 깜빡이던 도스(DOS) 화면 기억하세요? 거기서 cd games 치고 prince나 doom 입력해서 게임 돌렸던 그 시절요. DOS Zone이라는 사이트는 그 시절의 게임과 프로그램 수천 개를 브라우저에서 바로 실행할 수 있게 해줘요. 설치도, 회원가입도, 별다른 설정도 필요 없이 그냥 클릭하면 끝이에요.
이게 단순히 '레트로 게임 페이지' 정도가 아니라, 기술적으로 꽤 흥미로운 프로젝트라서 한 번 살펴볼 만해요. 어떻게 30년 전 x86 도스 프로그램이 현대 크롬에서 부드럽게 돌아가는지, 그 안을 들여다보면 웹 기술이 어디까지 와 있는지 실감하게 되거든요.
핵심 기술: WebAssembly로 컴파일된 DOSBox
DOS Zone의 심장은 js-dos라는 프로젝트예요. 이게 뭐냐면, 오래전부터 PC에서 도스 게임을 돌릴 때 쓰던 그 유명한 에뮬레이터 DOSBox를 WebAssembly로 컴파일한 버전이에요.
WebAssembly(줄여서 Wasm)는 비교적 최근에 나온 웹 표준인데요, C나 C++ 같은 언어로 짠 프로그램을 브라우저에서 거의 네이티브에 가까운 속도로 돌릴 수 있게 해줘요. 자바스크립트보다 훨씬 빠르고, 메모리 사용도 효율적이거든요. DOSBox는 원래 C++로 쓰인 데스크톱 프로그램이었는데, 이걸 Emscripten이라는 도구를 써서 Wasm으로 빌드한 거예요.
동작 흐름을 쉽게 풀어볼게요. 사용자가 게임을 클릭하면 브라우저가 ① 해당 게임의 도스 파일들이 들어 있는 zip 또는 가상 디스크 이미지를 받아오고, ② 메모리 위에 가상 파일시스템을 만들어서 그 안에 풀어 놓고, ③ js-dos가 그 파일들을 마운트한 가상의 도스 환경을 띄워서 게임을 실행해요. 우리 눈에는 그냥 게임 화면이 뜨는 걸로 보이지만, 안에서는 '브라우저 안에 가상 PC 한 대가 돌고 있는' 상태인 셈이에요.
성능도 꽤 괜찮아요. 90년대 도스 게임들은 요즘 컴퓨터 입장에선 매우 가벼우니까, 일반적인 노트북에서도 거의 끊김 없이 60fps로 돌아가요. 사운드도 사블라스터(Sound Blaster) 같은 옛날 사운드카드를 에뮬레이트해서 그 시절 특유의 음악까지 그대로 재현해줘요.
단순 컬렉션이 아니라 플랫폼이다
DOS Zone이 인상적인 또 다른 이유는 사용자가 자기 게임을 올려서 공유할 수 있는 플랫폼 구조라는 점이에요. 그러니까 운영자가 미리 깐 게임만 돌리는 게 아니라, 사용자가 가진 옛날 도스 프로그램의 zip 파일을 업로드하면 거기에 맞는 실행 설정이 자동으로 잡혀서 공유 링크로 만들어져요. 친구한테 '이 링크 눌러봐' 하면 친구 브라우저에서 바로 실행되는 거죠.
이런 구조는 인터넷 아카이브(Internet Archive) 의 도스 게임 컬렉션과 비교해보면 차이가 잘 드러나요. 인터넷 아카이브도 비슷한 기술로 도스 프로그램을 웹에서 돌릴 수 있게 해주지만, 거기는 큐레이션된 아카이브 성격이 강해요. DOS Zone은 좀 더 가벼운 SNS 같은 느낌으로, 컬렉션을 만들고 좋아요를 누르는 식의 커뮤니티 요소가 있어요.
비슷한 흐름의 프로젝트들
웹 에뮬레이션 쪽은 요즘 꽤 활발해요. 닌텐도 게임을 브라우저에서 돌리는 EmulatorJS, 윈도우 95를 브라우저 안에서 통째로 부팅시키는 v86, 심지어 리눅스를 브라우저에서 돌리는 시도들까지 있어요. 이게 다 WebAssembly와 SharedArrayBuffer 같은 웹 표준이 성숙해진 덕분에 가능해진 일들이에요.
특히 v86은 한 발 더 나아가서, x86 CPU 자체를 자바스크립트와 Wasm으로 시뮬레이션해요. DOSBox가 '도스에 특화된 에뮬레이터'라면 v86은 '아예 PC를 통째로 시뮬레이션하는' 접근이죠. 둘 다 장단점이 있는데, DOS Zone처럼 도스 환경에 집중한다면 DOSBox 기반이 더 가볍고 호환성이 좋아요.
한국 개발자에게 주는 인사이트
첫째, WebAssembly의 실전 사례로 보기 좋아요. 'Wasm이 빠르다더라'는 말은 많이 들어봤지만, 실제로 어떤 식의 프로젝트에 효과적인지 체감하기는 쉽지 않잖아요. 도스 에뮬레이션처럼 CPU 집약적인 작업을 브라우저에서 그것도 부드럽게 돌리는 걸 보면 Wasm의 활용 폭이 감이 잡혀요. 영상 인코딩, 이미지 처리, 게임 엔진, 보안 도구 같은 분야가 비슷한 패턴으로 웹으로 옮겨가고 있어요.
둘째, '설치 없는 경험'의 힘을 다시 생각해보게 돼요. 우리가 모바일 앱 만들 때도 그렇잖아요. 설치 단계 하나 줄이는 게 사용자 진입 장벽을 얼마나 낮추는지요. 웹 에뮬레이션은 그 극단적인 사례예요. 옛날 같으면 DOSBox 깔고, 게임 다운받고, 마운트 설정하는 30분 짜리 작업이 이제 클릭 한 번이에요.
셋째, 사이드 프로젝트 아이디어로도 좋아요. 한국에도 90년대 PC통신 시절 도스 게임 추억 가진 분들 많잖아요. 그 시절 국산 게임이나 교육용 소프트웨어를 합법적인 선에서 아카이빙하고 웹에서 돌릴 수 있게 해주는 프로젝트가 있다면 의미 있는 작업이 될 거예요. 물론 저작권 정리는 별개의 큰 과제고요.
마무리
한 줄 정리: 30년 전의 도스 게임이 오늘날 크롬 탭에서 부드럽게 돌아간다는 사실은, 웹이 더 이상 '문서 플랫폼'이 아니라 '범용 런타임'으로 진화했다는 가장 즐거운 증거예요.
여러분이 추억으로 간직하고 있는 옛날 PC 게임이나 프로그램이 있으세요? 그리고 우리 일에서 WebAssembly를 한 번이라도 진지하게 검토해보신 적 있다면, 어떤 케이스에서 효과를 봤는지 궁금하네요.
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공