처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.30 45

1997년 그 시절 그대로 Quake를 컴파일해보기 — 옛날 코드를 다시 빌드한다는 것의 의미

Hacker News 원문 보기

도입: 왜 굳이 옛날 방식으로 빌드할까

게임 엔진 해부로 유명한 개발자 Fabien Sanglard가 재미있는 도전을 했어요. id 소프트웨어의 전설적인 게임 Quake(퀘이크, 1996~97년작)의 원본 소스 코드를, 그 시절에 실제로 쓰이던 도구들로 똑같이 컴파일해보는 거예요. "그냥 요즘 컴파일러로 돌리면 되는 거 아냐?"라고 생각할 수 있는데, 바로 거기에 함정이 있어요. 20년도 더 된 코드는 요즘 환경에선 그대로 빌드되지 않거든요. 이 작업이 흥미로운 이유는, 단순한 추억팔이가 아니라 '소프트웨어가 시간이 지나면 어떻게 빌드 불가능 상태가 되는가'라는 진지한 문제를 보여주기 때문이에요.

1997년의 빌드 환경은 이랬어요

Quake가 나오던 시절을 떠올려볼게요. 지금처럼 64비트 Linux나 최신 Visual Studio가 있던 게 아니에요. 당시 PC 게임은 주로 DOS 위에서 돌았고, 컴파일러는 Watcom C/C++(왓콤)라는, 지금은 거의 잊힌 도구를 썼어요. Watcom이 당시 게임 업계의 사실상 표준이었던 이유는, DOS에서 16비트의 한계를 넘어 32비트 코드를 잘 뽑아냈기 때문이에요. 여기서 DOS 익스텐더(DOS extender)라는 게 등장하는데요, 이게 뭐냐면 16비트짜리 옛날 DOS에서 32비트 프로그램을 돌릴 수 있게 다리를 놔주는 장치예요. Quake는 'DOS/4GW'라는 유명한 익스텐더를 썼는데, 게임 시작할 때 화면에 뜨던 그 문구를 기억하는 분들도 있을 거예요. 빌드도 요즘처럼 cmake가 아니라 Watcom의 wmake 같은 도구로 돌렸고요.

옛날 코드는 왜 그냥 안 빌드될까

핵심 개념이 바로 '비트로트(bit rot)', 우리말로 풀면 '소프트웨어의 노화'예요. 코드 자체는 텍스트 파일이라 멀쩡히 남아 있는데, 정작 그걸 빌드하는 데 필요한 주변 환경 — 컴파일러 버전, 운영체제, 라이브러리, 헤더 파일 — 이 다 사라지거나 바뀌어버려서 빌드가 불가능해지는 현상이에요. Quake 코드도 마찬가지예요. 그 시절 C 코드는 요즘 컴파일러 기준으론 문법이 느슨하거나(예전엔 허용되던 게 지금은 에러), DOS 전용 메모리 접근 방식을 쓰거나, 사라진 라이브러리에 의존하거든요. 그래서 1997년 방식으로 빌드하려면 당시의 Watcom 컴파일러와 DOS 환경을 에뮬레이터(DOSBox 같은 가상 환경)로 되살려서, 퍼즐 맞추듯 옛 도구들을 다시 모아야 해요. 이게 생각보다 만만치 않은 고고학적 작업이에요.

업계 맥락: 재현성이라는 큰 흐름

이 도전은 단순한 레트로 취미를 넘어서, 요즘 업계가 고민하는 '빌드 재현성(reproducibility)' 문제와 정확히 맞닿아 있어요. 위에서 다룬 Nix 같은 도구나 도커(Docker), 그리고 소프트웨어 보존을 위한 디지털 아카이브 활동들이 다 같은 질문에서 출발하거든요. "지금 잘 빌드되는 이 코드를, 10년 뒤에도 똑같이 빌드할 수 있을까?" Quake처럼 역사적으로 중요한 코드일수록 이 질문이 무거워져요. 그래서 옛 도구체인을 통째로 박제해두려는 시도들이 의미가 있는 거예요. id 소프트웨어가 소스 코드를 공개한 덕분에 이런 보존과 분석이 가능하다는 점도, 오픈소스의 또 다른 가치를 보여주죠.

한국 개발자에게 주는 시사점

당장 Watcom으로 DOS 게임을 빌드할 일은 없겠지만, 이 이야기의 교훈은 지금 우리 프로젝트에도 똑같이 적용돼요. 지금 빌드되는 코드도, 환경을 박제해두지 않으면 몇 년 뒤엔 빌드 불가능한 화석이 될 수 있다는 것. 그래서 컴파일러 버전, 의존성 버전을 명확히 고정(lock 파일, 버전 명시)하고, 빌드 환경 자체를 도커 이미지나 Nix로 재현 가능하게 박아두는 습관이 중요해요. 오래된 사내 레거시 시스템을 유지보수해본 분이라면 이 고통을 뼈저리게 알 거예요. "빌드할 줄 아는 사람이 퇴사해서 아무도 못 고치는 코드"가 바로 비트로트의 현실판이거든요.

마무리

한 줄로 정리하면 이래요. 코드를 남기는 것만으로는 부족하다. 그 코드를 다시 살려낼 환경까지 남겨야 진짜 보존이다. 여러분이 지금 만지는 프로젝트, 10년 뒤에 새로 들어온 후배가 클론해서 한 번에 빌드할 수 있을까요? 옛날 코드나 레거시를 되살려본 경험이 있다면 그 무용담도 들려주세요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.