ImpactJS
ImpactJS 또는 Impact는 Dominic Szablewski가 개발한 JavaScript 기반 HTML5 2차원 게임 엔진이다. 브라우저에서 2D 게임을 실행하기 위한 Canvas 렌더링, 게임 루프와 입력·사운드·충돌 기능을 제공하며, 전용 타일맵 편집기인 Weltmeiste...
| 분류 | 게임 엔진, HTML5 기반 2차원 게임 엔진 |
|---|---|
| 통용 명칭 | Impact, ImpactJS |
| 개발자 | Dominic Szablewski (phoboslab) |
| 최초 상용 공개 | 2010년 |
| 개발 언어 | JavaScript |
| 실행 환경 | HTML5, 웹 브라우저 |
| 렌더링 | HTML5 Canvas 2D |
| 실행 모델 | ig.Game, ig.Entity, ig.System, 모듈 로더 |
| 맵·레벨 도구 | Weltmeister Editor |
| 주요 기능 | 2D 스프라이트, 타일맵, 충돌, 오디오·입력 |
| 편집기 요구 | PHP 기반 파일 저장·불러오기 도구 |
| 자산 처리 | 이미지·사운드 프리로더, 빌드·압축 도구 |
| 초기 배포 모델 | 개인 개발자 유료 라이선스 |
| 오픈 소스 전환 | 2018년 5월 3일 |
| 현재 공개 라이선스 | MIT License |
| 공식 웹사이트 | impactjs.com |
| 원본 소스 | phoboslab/impact |
ImpactJS 또는 Impact는 Dominic Szablewski가 개발한 JavaScript 기반 HTML5 2차원 게임 엔진이다. 브라우저에서 2D 게임을 실행하기 위한 Canvas 렌더링, 게임 루프와 입력·사운드·충돌 기능을 제공하며, 전용 타일맵 편집기인 Weltmeister를 결합해 게임 화면을 시각적으로 제작할 수 있도록 했다. 2010년에 유료 제품으로 공개됐지만 2018년 5월 3일부터 소스 코드가 MIT 라이선스로 제공되는 무료·오픈 소스 소프트웨어로 전환됐다.[1]
ImpactJS의 실행 구조는 ig.Game과 ig.System을 중심으로 한다. 게임 코드는 엔진의 모듈 형식으로 나누어 ig.module, .requires, .defines를 이용해 의존성을 지정하고 로딩한다. 개발자는 ig.Game을 상속하여 화면의 실행 규칙과 오브젝트 갱신, 타일맵 충돌 등을 작성한다. 게임 세계에 존재하는 객체는 ig.Entity 기반 클래스로 정의할 수 있으며 이동 속도, 크기·충돌 유형, 애니메이션 상태와 그리기 기능을 관리한다.[2]
Weltmeister는 개발자가 타일을 배치하고 레벨을 저장하는 웹 기반 편집기다. 각 레벨에는 여러 타일 레이어와 엔티티가 포함되며 카메라와 이동 가능한 공간, 장애물과 적·아이템의 배치를 시각적으로 조정할 수 있다. 편집기 내부는 JavaScript로 구현됐고 역사적 배포판에서는 PHP 파일 입출력 스크립트가 레벨 데이터의 저장과 읽기를 담당했다. 따라서 게임 자체는 브라우저에서 실행될 수 있어도 편집기의 개발 환경에는 별도 웹 서버 구성이 필요했다.
그래픽스 구현은 기본적으로 HTML5 Canvas의 2차원 그리기 기능을 사용한다. 스프라이트와 배경 이미지를 출력하고 프레임 애니메이션을 계산하며, 타일맵을 화면에 표시할 수 있다. 엔진은 스프라이트와 타일맵의 충돌 검사, 키보드·마우스 및 터치 입력과 기본 오디오 처리를 제공한다. 원래의 ImpactJS가 최신 WebGL 또는 WebGPU 기반 그래픽스 API를 기본 렌더링 시스템으로 채택한 엔진은 아니므로 현대적인 그래픽스 기능이 필요하면 별도의 확장 또는 다른 구현을 검토해야 한다.[3]
프로젝트는 게임에 필요한 JavaScript 파일을 각각 모듈로 유지하면서 개발할 수 있고 출시 시에는 빌드 도구를 이용해 여러 스크립트를 하나의 파일로 묶고 압축할 수 있다. 원본 소스 저장소에는 lib 폴더의 엔진 코드, tools와 Weltmeister 관련 파일, 예제 이미지 및 게임 구성 자료가 포함된다. 이는 JavaScript 모듈 표준과 빌드 도구가 일반화되기 전의 웹 게임 제작 방식을 보여준다. 이후 사용자 커뮤니티는 다양한 확장 라이브러리와 2.5D 표시 기술 등을 제작했다.
2018년의 MIT 전환은 ImpactJS의 초기 상용 라이선스와 명확히 구별된다. 개발자는 소스 공개 발표에서 2014년 이후 업데이트가 중단된 기존 제품이 현대 그래픽·오디오 API를 충분히 지원하지 못한다는 점을 설명했다. 공개 저장소의 라이선스는 엔진 코드에 적용되며 Weltmeister가 사용하는 jQuery 등 외부 라이브러리에는 각각의 조건이 유지된다. ImpactJS는 초기 HTML5 게임 엔진과 웹 기반 시각적 레벨 편집기의 결합을 보여주는 대표적 사례다.[4]