TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 25 READS

Quake를 안전한 Rust로 다시 쓰다: 브라우저에서 돌아가는 1996년 고전

id 소프트웨어가 1996년에 내놓은 Quake는 지금도 그래픽 엔진의 역사에서 한 획을 그은 작품으로 꼽힌다. 당시로서는 드물게 완전한 3차원 공간을 소프트웨어 렌더링만으로 그려냈고, 이후 수많은 게임 엔진의 뿌리가 되었다. 1999년 id가 소스 코드를 GPL로 공개한 덕분에 Quake는 그동안 온갖 플랫폼으로 이식되며 일종의 기술 실험장 역할을 해왔다. 이번에 Hacker News의 Show HN으로 공개된 'quake-srp'는 그 계보에 Rust와 WebAssembly라는 비교적 최근의 조합을 올려놓은 프로젝트다.

핵심은 제목 그대로다. 원본 C 소스를 '안전한(safe) Rust'로, 그것도 외부 의존성 없이 이식했고, 이를 WebAssembly로 컴파일해 브라우저에서 바로 실행할 수 있게 했다. 무료 배포판인 셰어웨어 에피소드(id가 배포했던 quake106.zip, 9.1MB)가 함께 포함되어 있어, 별도 설치 없이 페이지를 여는 것만으로 첫 에피소드를 플레이할 수 있다. GPU를 쓰지 않고 소프트웨어 렌더링으로 화면을 그린다는 점도 명시되어 있는데, 이는 그래픽 API나 하드웨어 가속에 기대지 않고 CPU 연산만으로 원작의 렌더링 방식을 그대로 재현한다는 뜻이다.

'안전한 Rust'가 갖는 의미

실무자 입장에서 이 프로젝트가 흥미로운 지점은 게임 그 자체보다 '안전한 Rust'라는 제약 조건이다. Quake의 원본 C 코드는 포인터 연산과 직접적인 메모리 조작에 크게 의존한다. 이를 unsafe 블록 없이 Rust의 소유권·수명 규칙 안에서 재구성했다는 것은, 메모리 안전성을 컴파일 단계에서 보장하면서도 20여 년 전 엔진의 동작을 충실히 유지했다는 의미가 된다. 의존성이 전혀 없다는 점 역시 같은 맥락이다. 외부 크레이트 없이 표준 범위 안에서만 구현했기 때문에 빌드 재현성이나 공급망 측면의 위험이 작고, 코드를 통째로 읽어 내려가며 이해하기도 상대적으로 수월하다.

WebAssembly로의 컴파일은 이 접근의 자연스러운 귀결이다. 의존성이 없고 메모리 접근이 엄격하게 통제된 코드는 WASM이라는 샌드박스 실행 환경과 잘 맞는다. 설치나 플러그인 없이 브라우저 탭 하나에서 네이티브에 가까운 고전 게임이 돌아간다는 사실은, 레거시 C 코드베이스를 현대적인 안전 언어로 옮기면서 동시에 배포 경로까지 단순화하는 하나의 사례로 읽을 수 있다.

직접 보유한 데이터를 더하는 방식

셰어웨어만으로는 1번 에피소드까지만 즐길 수 있다. 정식판을 가진 사용자는 자신의 사본에서 id1/pak1.pak 파일을 추가해 2~4번 에피소드를 열 수 있고, 미션팩을 가지고 있다면 hipnotic/pak0.pak이나 rogue/pak0.pak을, CD 음악이 있다면 track02.ogg 같은 음원 파일을 함께 넣을 수 있다. 눈여겨볼 부분은 처리 방식이다. 파일이나 Quake 폴더 전체를 페이지 위에 끌어다 놓거나 선택하면 되는데, 이 데이터는 모두 해당 브라우저 안에만 머문다. 서버로 업로드하지 않고 클라이언트에서만 다룬다는 설계로, 저작권이 있는 원본 에셋을 외부로 내보내지 않으면서 기능을 확장하는 현실적인 절충안이다. e1m1 맵으로 바로 이동하거나 demo1(e1m3) 데모를 재생하는 단축 경로도 제공된다.

다만 명확히 짚어둘 한계도 있다. Quake는 여전히 id 소프트웨어의 상표이며, quake-srp는 id와 아무런 제휴 관계가 없고 공식 승인을 받은 것도 아니다. 즉 이 프로젝트가 활용할 수 있는 범위는 GPL로 공개된 소스 코드까지이며, 게임 데이터와 상표권은 별개의 문제로 남는다. 2~4번 에피소드를 열려면 결국 사용자가 정식판을 보유해야 한다는 조건이 붙는 것도 이 때문이다. 연락처 겸 법적 통지 창구가 별도로 안내되어 있다는 점은 이런 상표·라이선스 경계를 의식한 운영으로 보인다.

소스 코드는 GitHub에 공개되어 있어, 결과물을 플레이하는 데 그치지 않고 안전한 Rust로의 이식이 어떤 식으로 이뤄졌는지 직접 뜯어볼 수 있다. 고전 C 엔진을 메모리 안전 언어로 옮기는 작업, 의존성 없는 코드베이스를 유지하는 전략, 그리고 WASM으로의 이식 경로를 고민하는 개발자라면 하나의 참고 구현으로 삼을 만하다. 화려한 신기술 발표는 아니지만, 검증된 레거시 코드를 더 안전하고 이식성 높은 형태로 다시 짜는 작업이 실제로 어디까지 가능한지를 보여주는 구체적인 결과물이라는 점에서 의미가 있다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://quake-srp.pages.dev/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...