- 2003년 Windows 전용 TPS 게임 GunZ: The Duel을
→ WebAssembly + WebGL 기반으로 브라우저에서 실행 가능하게 포팅
- 설치 없이 크롬에서 URL만 열면 바로 플레이 가능 https://gunz.sigr.io/
- Linux, macOS, 모바일까지 거의 모든 환경에서 동작
- 기존 C++ 코드 거의 수정 없이 유지
- 새로 작성된 코드의 약 99%는 AI가 생성
왜 의미 있는가
- 기존 PC 게임:
- 이번 결과:
- 완전 동일한 게임을 브라우저에서 실행
- “비슷한 구현”이 아니라 원본 그대로 이식
- 과거에는 “이론상 가능하지만 현실적으로 불가능” 영역이었음
과거 시도와 실패
- 과거 접근:
- JavaScript + Three.js로 엔진을 새로 구현
- 결과:
- 맵 렌더링까지만 성공
- 전체 엔진 재구현 난이도가 너무 높아 중단
- 결론:
핵심 문제: Windows 의존성
- GunZ는 C++ 기반 + Direct3D 의존
- 문제:
- Direct3D는 Windows 전용 API
- 브라우저(WebGL)에서는 직접 사용 불가
- 단순 wasm 컴파일로는 해결되지 않음
- 즉:
- 플랫폼 독립 코드만 wasm 가능
- 그래픽 API 의존 부분이 가장 큰 장벽
기존 접근 방식들의 한계
- 게임 코드 직접 수정
- 자동 변환 (D3D → WebGL)
- 결론:
핵심 아이디어: “번역 레이어”
- 접근:
- 게임 코드는 그대로 유지
- Direct3D 호출을 가로채서
-
실시간으로 WebGL로 변환
- 구현:
- D3D9 API와 동일한 인터페이스를 가진 WebGL 래퍼
- 게임 ↔ 그래픽 API 사이에 삽입
- 효과:
- 게임 코드 수정 거의 없음
- Windows 의존성 제거
- 이식 비용을 “래퍼 구현”으로 한정
AI의 역할
- 사용 도구:
- Google Antigravity
- Claude Code (Max 플랜)
- 결과:
- 대규모 코드 분석 및 수정 자동화
- 수주 걸리던 문제를 몇 시간 내 해결
- 사실상 인간이 못 할 작업을 대신 수행
- 특히:
- D3D → WebGL 래퍼 구현 대부분을 AI가 담당
핵심 요약
- “게임을 다시 만드는 것”이 아니라
→ 기존 코드를 그대로 살리는 방향으로 해결
- 핵심 기술:
- WebAssembly
- Direct3D → WebGL 번역 레이어
- 핵심 변화:
- AI 덕분에 대규모 레거시 포팅이 현실적인 작업이 됨
- 시사점:
- 앞으로 과거 게임/소프트웨어의 웹 이식 난이도가 급격히 낮아질 가능성