피드로 돌아가기
The Browser Was the Engine
Dev.toDev.to
Frontend

의존성 제로 기반 HTML5 native API 기반 Wolfenstein 3D 포팅

The Browser Was the Engine

Viktor Lázár2026년 5월 17일26intermediate

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) 선택 가능성 고려

원문 읽기