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

2026년에 닌텐도 64용 게임을 만든다는 것: 자바스크립트 엔진에서 카트리지까지

Hacker News 원문 보기

닌텐도 64는 2002년 '토니 호크 프로 스케이터 3'를 마지막으로 상업적 신작 발매가 끊긴 콘솔이다. 2023년 '제노 크라이시스'가 물리 카트리지로 이식된 것을 제외하면, N64용 신작이 실물로 출시되는 일은 거의 없었다. 이런 상황에서 개발자 도미닉 슈치베(phoboslab)가 만든 볼펜슈타인 3D 스타일의 FPS 'Xibalba 64'가 Modretro의 N64 클론 기기 'M64'의 물리 런칭 타이틀로 정식 발매됐다. 카트리지와 패키지, 매뉴얼까지 갖춘, 콘솔 수명 종료 이후 사실상 두 번째 실물 신작인 셈이다.

자바스크립트 엔진이 C를 거쳐 N64로

이 프로젝트의 출발점은 뜻밖에도 2010년에 만들어진 자바스크립트 2D 게임 엔진 'Impact'다. 저자는 2년 전 특별한 이유 없이 이 엔진을 C로 다시 작성해 'high_impact'를 만들었다. 이 C 포팅판의 핵심은 모듈성이다. 창을 열고 입력을 읽는 저수준 작업을 담당하는 '플랫폼 백엔드'(SDL2, Sokol)와, 소프트웨어·OpenGL·Metal을 고를 수 있는 '렌더링 백엔드'가 서로 분리돼 있어, 엔진의 다른 부분을 건드리지 않고 새 플랫폼을 추가할 수 있다. 바로 이 구조 덕분에 N64라는 이질적인 하드웨어를 하나의 백엔드로 붙일 수 있었다.

N64는 93MHz의 빅엔디언 MIPS CPU에 그래픽·사운드를 담당하는 두 개의 보조 프로세서(RSP, RDP)를 얹은 독특한 기계다. 닌텐도의 공식 라이브러리 'libultra'는 인터넷에 유출돼 있지만 사용하면 저작권 소송 위험이 있다. 그 대안이 최근 몇 년간 크게 성장한 홈브루 라이브러리 'Libdragon'으로, 저자는 이를 'N64용 SDL'이라 표현한다. 스프라이트와 삼각형 그리기, 사운드, 컨트롤러 입력을 모두 제공하며, high_impact용 백엔드를 붙이는 데는 며칠 밤이면 충분했다고 한다. 다만 안정판 trunk 브랜치는 뒤처져 있으니 preview 브랜치를 써야 한다는 실무적 조언도 덧붙인다.

실기 개발 환경과 에뮬레이터의 한계

주목할 만한 대목은 개발 파이프라인이다. 오랫동안 N64 에뮬레이션은 실제 하드웨어가 아니라 libultra의 '의도'만 흉내 냈기에 부정확했다. 현재 Ares의 N64 코어는 RDP·RSP를 타이밍까지 포함해 상당히 정확하게 재현하지만, 악명 높은 느린 메모리 대역폭만큼은 여전히 실기로만 확인할 수 있다. 그래서 저자는 임의의 .z64 ROM을 구동하는 오픈소스 카트리지 SummerCart64를 사용했다. 이 카트리지의 USB-C 포트로 PC와 연결해 sc64deployer로 빌드 과정에서 ROM을 직접 올리고, 10달러짜리 USB 캡처 카드로 영상을 데스크톱 창에 띄웠다. 컴파일 후 리셋 버튼만 누르면 실기에서 바로 반복 테스트가 가능한 환경을 꾸민 것이다.

'2D처럼 다룬 3D'와 렌더링 최적화

원작 Xibalba는 2014년 자바스크립트 엔진 데모였고, high_impact는 본래 2D 엔진이다. 하지만 이 게임은 고저차가 없어 사실상 2D로 취급할 수 있다. 볼펜슈타인 3D처럼 위에서 내려다보는 평면으로 봐도 물리·이동·사격이 그대로 동작하는 구조다. 저자는 vec3_t 안에 익명 구조체로 vec2_t를 품게 해, 3D 위치를 다루면서도 기존 2D 물리 함수에 비용 없이 좌표를 넘기는 방식으로 이 간극을 메웠다. 기존 레벨과 적 이식은 2주 만에 끝났고, 이후 몇 달은 콘텐츠 확장과 렌더러 최적화에 쓰였다.

최적화의 상당 부분은 N64의 4KB에 불과한 텍스처 메모리와의 싸움이었다. 최대 텍스처 크기는 64×64픽셀이고 업로드 지연도 심하다. 저자는 같은 텍스처를 쓰는 삼각형을 64비트 드로우 콜로 묶어 프레임 끝에서 정렬해 제출함으로써 텍스처 업로드를 최소화했다. 여기에는 RDP·RSP의 복잡한 처리를 감싸주는 또 다른 오픈소스 라이브러리 Tiny3D가 활용됐다. 가시성 판정은 원작의 포털 시스템 대신 시야 전체에 320개의 광선을 쏘는 레이캐스팅으로 바꿨고, 이를 재귀 분할로 더 최적화하면서 천장이 없는 타일을 만나면 스카이박스를 그리게 했다. 참고로 그 스카이박스는 32×32픽셀 텍스처 한 장을 지평선에 늘여 붙인 것이다. 이런 세공 끝에 단일 플레이는 안정적인 60FPS를 유지하며, 4인 분할 화면도 프레임이 한 자릿수로 떨어지곤 했던 '골든아이 007'과 달리 유연하게 돌아간다.

마지막으로 사운드는 카트리지 용량이라는 오래된 제약을 보여준다. Libdragon 메인테이너 조반니 바요는 2012년에야 등장한, 즉 N64보다 16년 뒤에 나온 Opus 코덱의 RSP 가속 디코더를 구현했다. 작동한다는 것 자체가 경이롭지만 게임 플레이 중에 쓰기엔 여전히 연산 부담이 크다. 그는 한 걸음 더 나아가 N64용 실시간 H.264 디코더까지 만들었다. Xibalba 64가 던지는 실무적 메시지는 분명하다. 모듈화된 엔진 설계, 성숙한 오픈소스 도구 생태계, 그리고 하드웨어 제약을 정면으로 마주하는 최적화가 결합되면, 30년 전 콘솔 위에서도 오늘의 완성도를 뽑아낼 수 있다는 것이다.

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

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

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

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

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

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

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

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

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