- 2003년 Windows 전용 TPS 게임 GunZ: The Duel을
→ WebAssembly + WebGL 기반으로 브라우저에서 실행 가능하게 포팅 - 설치 없이 크롬에서 URL만 열면 바로 플레이 가능 https://gunz.sigr.io/
- Linux, macOS, 모바일까지 거의 모든 환경에서 동작
- 기존 C++ 코드 거의 수정 없이 유지
- 새로 작성된 코드의 약 99%는 AI가 생성
왜 의미 있는가
- 기존 PC 게임:
- 다운로드/설치 필요
- Windows 종속
- 이번 결과:
- 완전 동일한 게임을 브라우저에서 실행
- “비슷한 구현”이 아니라 원본 그대로 이식
- 과거에는 “이론상 가능하지만 현실적으로 불가능” 영역이었음
과거 시도와 실패
- 과거 접근:
- JavaScript + Three.js로 엔진을 새로 구현
- 결과:
- 맵 렌더링까지만 성공
- 전체 엔진 재구현 난이도가 너무 높아 중단
- 결론:
- “재구현 방식”은 현실적으로 불가능에 가까움
핵심 문제: Windows 의존성
- GunZ는 C++ 기반 + Direct3D 의존
- 문제:
- Direct3D는 Windows 전용 API
- 브라우저(WebGL)에서는 직접 사용 불가
- 단순 wasm 컴파일로는 해결되지 않음
- 즉:
- 플랫폼 독립 코드만 wasm 가능
- 그래픽 API 의존 부분이 가장 큰 장벽
기존 접근 방식들의 한계
- 게임 코드 직접 수정
- 수만 줄 수정 필요
- 유지보수 불가능
- 자동 변환 (D3D → WebGL)
- API 의미 차이로 기계적 변환 불가
- 결론:
- 기존 방식은 모두 비현실적
핵심 아이디어: “번역 레이어”
- 접근:
- 게임 코드는 그대로 유지
- Direct3D 호출을 가로채서
- 실시간으로 WebGL로 변환
- 구현:
- D3D9 API와 동일한 인터페이스를 가진 WebGL 래퍼
- 게임 ↔ 그래픽 API 사이에 삽입
- 효과:
- 게임 코드 수정 거의 없음
- Windows 의존성 제거
- 이식 비용을 “래퍼 구현”으로 한정
AI의 역할
- 사용 도구:
- Google Antigravity
- Claude Code (Max 플랜)
- 결과:
- 대규모 코드 분석 및 수정 자동화
- 수주 걸리던 문제를 몇 시간 내 해결
- 사실상 인간이 못 할 작업을 대신 수행
- 특히:
- D3D → WebGL 래퍼 구현 대부분을 AI가 담당
핵심 요약
- “게임을 다시 만드는 것”이 아니라
→ 기존 코드를 그대로 살리는 방향으로 해결 - 핵심 기술:
- WebAssembly
- Direct3D → WebGL 번역 레이어
- 핵심 변화:
- AI 덕분에 대규모 레거시 포팅이 현실적인 작업이 됨
- 시사점:
- 앞으로 과거 게임/소프트웨어의 웹 이식 난이도가 급격히 낮아질 가능성
댓글과 토론
어젠가 인벤 기사를 봤었는데 Direct3D 번역 레이어를 구성해서 처리한 것이군요.
테스트해본다고 1분도 안돼어서 했을 땐 먼가 화질이 별로였다 라는 생각이 강했는데 그게 새로 처음부터 만드는 개념보단 번역 레이어를 거쳐서 그대로였다는걸 생각하면 그럴 수 있다고는 생각하네요...
다만, 원본 블로그는 좀 위험하게 운영할 예정인듯 싶네요. 번역글이라고 명시하거나 원본이라고 명시해야하는데...본인인 척 하는 듯한 느낌이 강하게...댓글에도 지적한 부분이 있는데 답글이 없네요.
(애초에 원본 블로그의 참조 글이 다 일본어쪽으로 되어있습니다.)
말이 안되는 부분이 한화 기준 안티 그래비티 돈이 월 3000원짜리 플랜이없습니다. 이미지 등은 다 일본어가 나타나있습니다. 심지어 어느 이미지는 영어가 들어가지요.
그럴 바엔 처음부터 한글로 변환해서 쓰지 않았을까 싶습니다.
보다보면 본인인가 싶은 느낌도 있습니다.
sigr.io로 접속했을때 떠 있는 문구도 에스파의 노래 가사고,
Gunz 프로젝트 이름도 Whiplash Gunz로 에스파 곡명인데,
velog 핸들도 aespa로 일관성 있게 에스파를 좋아하는 느낌이 있어서 본인이 번역 돌려서 velog에 올린건가? 하는 생각도 드네요.