피드로 돌아가기
Dev.toFrontend
원문 읽기
의존성 제로 기반 HTML5 native API 기반 Wolfenstein 3D 포팅
The Browser Was the Engine
AI 요약
Context
2012년 당시 파편화된 브라우저 환경 및 낮은 JavaScript 엔진 성능으로 인한 게임 실행 제약 발생. 외부 Game Engine이나 프레임워크 도입 시 발생하는 추상화 계층의 오버헤드와 의존성 관리 비용이 병목 지점으로 작용.
Technical Solution
- Browser native API를 Engine으로 정의하여 추상화 계층을 제거한 Direct Architecture 설계
- script 태그의 로드 순서를 통한 단순 선형 Dependency Graph 구현으로 Module Loader 오버헤드 제거
- Canvas 2D를 Stable Rendering Target으로 채택하여 IE9를 포함한 광범위한 브라우저 호환성 확보
- XMLHttpRequest를 이용한 HTML fragment 기반의 Dynamic UI 로딩 구조로 메모리 점유 최적화
- Global Subsystem Object(game, raycast, maps 등) 패턴을 통한 상태 관리 및 기능 분리
- localStorage를 활용한 Client-side Persistence 구현으로 별도 서버 프로세스 없이 독립적 구동 환경 구축
실천 포인트
- 추상화 계층이 실제 물리적 제약(브라우저 API)과 너무 멀어지지 않았는지 검토 - 복잡한 Bundler나 Framework 도입 전, 해결하려는 문제의 본질이 단순한 정적 파일 서빙으로 가능한지 확인 - 호환성이 최우선인 환경에서 최신 표준(WebGL 등)보다 안정적인 레거시 API(Canvas 2D) 선택 가능성 고려