Quintus
Quintus는 개발자 Pascal Rettig이 개발한 JavaScript 기반의 경량 HTML5 2차원 게임 엔진이다. 2012년 말부터 2013년에 걸쳐 공개된 초기 버전은 모바일과 데스크톱 브라우저에서 게임을 실행할 수 있도록 게임 루프, 스프라이트·장면·입력과 충돌·오디오 등을...
| 분류 | 게임 엔진, HTML5 2D 게임 개발 프레임워크 |
|---|---|
| 개발자 | Pascal Rettig (cykod) 및 공개 기여자 |
| 최초 공개 계열 | 2012년 말~2013년 |
| 개발 언어 | JavaScript |
| 실행 환경 | HTML5 웹 브라우저 |
| 개발 대상 | 데스크톱·모바일 브라우저 |
| 주요 모듈 | Core, Sprites, Scenes, Input, 2D, Touch, UI |
| 추가 모듈 | Anim, Audio, TMX, Tween 등 |
| 객체 모델 | Q.Sprite, Q.Stage, Q.Scene, Component |
| 기술적 특징 | 모듈·플러그인과 이벤트·선택자 API |
| 렌더링 | HTML5 Canvas 기반 2D |
| 충돌·물리 | 2D 움직임, SAT 및 타일 충돌 |
| 타일맵 | TMX·Tiled 레벨 데이터 |
| 입력 | 키보드, 마우스, 터치·가상 조이패드 |
| 오디오 | HTML5 Audio·Web Audio |
| 사용자 인터페이스 | Q.UI.Container, Text, Button |
| 빌드 도구 | Node.js·npm, Grunt (당시) |
| 기본 배포 | CDN 스크립트 또는 개별 모듈 |
| 공개 라이선스 | MIT License / GNU GPL v2 이중 라이선스 |
| 개발 상태 | 역사적 HTML5 게임 엔진, 현대 유지보수 제한 |
| 공식 웹사이트 | HTML5 Quintus |
| 원본 저장소 | cykod/Quintus |
| 공식 가이드 | Quintus Introduction |
Quintus는 개발자 Pascal Rettig이 개발한 JavaScript 기반의 경량 HTML5 2차원 게임 엔진이다. 2012년 말부터 2013년에 걸쳐 공개된 초기 버전은 모바일과 데스크톱 브라우저에서 게임을 실행할 수 있도록 게임 루프, 스프라이트·장면·입력과 충돌·오디오 등을 모듈 형태로 제공했다. Rettig이 《Professional HTML5 Mobile Game Development》를 저술하는 과정에서 구축한 실행 기술에 기반하며, 초기 웹 게임 프레임워크의 무거운 객체 지향 상속 계층보다 JavaScript에 자연스러운 함수·이벤트와 플러그인 구조를 강조했다.[1]
Quintus의 중심은 Quintus() 호출로 만들어지는 엔진 인스턴스와 여러 독립 모듈이다. 개발자는 Sprites, Scenes, Input, 2D, Touch, UI와 같은 기능을 .include()로 선택해 초기화한다. 코어는 게임 루프·모듈 관리·이벤트와 클래스·컴포넌트, 기본적인 파일 로딩·수학 기능을 제공하고 게임에 필요한 개별 동작은 확장 모듈이 구현한다. 이렇게 필요한 기능만을 선택해 조합하는 설계는 작은 크기의 웹 게임을 제작하면서도 프로젝트별 기능 요구를 수용하기 위한 것이다.[2]
게임 세계는 Q.Sprite와 장면을 정의하는 Q.scene(), 실제 객체가 등록되는 Q.Stage를 중심으로 구성된다. 객체는 장면에 삽입될 때 업데이트·그리기 작업에 참여하고, Stage에는 여러 장면을 겹쳐 표시하거나 전환하는 기능이 있다. 스프라이트는 기존 JavaScript 프로토타입·클래스 확장과 별도로 컴포넌트를 부착할 수 있어 기본 이동·충돌·AI 행동을 재사용하기 쉽다. this.add('2d, platformerControls')처럼 구성 요소를 연결하고 hit.sprite 이벤트를 구독하는 구조는 깊은 단일 상속 계층 대신 조합과 이벤트 전달을 활용하는 접근법이다.[3]
그래픽스에는 HTML5 Canvas 기반의 2차원 스프라이트·타일맵·애니메이션을 사용한다. 기본 Sprites 모듈은 이미지·텍스처 영역과 프레임을 관리하고 Anim 모듈은 스프라이트 시트 애니메이션과 객체 속성의 트윈을 제공한다. 2D 모듈은 기본적인 중력·이동과 충돌, 카메라 뷰포트와 타일 레이어를 제공하며, 충돌에는 SAT와 타일의 지형 판정이 포함된다. 이는 범용 강체 물리 미들웨어 전체를 기본적으로 구현한 것과 다르며 2D 플랫폼 게임·아케이드 게임의 자주 쓰이는 동작을 빠르게 작성할 수 있는 수준의 공통 구성 요소다.[4][5]
게임 자산은 Q.load()로 불러오고 이미지와 스프라이트 시트, JSON 레벨 등의 자료를 결합하여 사용한다. 타일맵에는 Tiled에서 출력한 TMX 형식과 다중 레이어·경사진 타일, 트리거·센서 등에 대응하는 기능이 개발됐다. UI 모듈에는 버튼·텍스트·컨테이너를 제공하며 입력 모듈은 키보드·마우스와 터치·가상 조이패드를 지원한다. 오디오는 HTML5 및 Web Audio 기능을 통해 재생하고 개발자는 사운드의 반복 재생·정지 등의 동작을 API로 지정할 수 있다. 당시 프로젝트는 Node.js·Grunt로 모듈들을 결합해 배포용 파일을 생성하는 방식도 제공했다.[6]
Quintus의 공개 저장소에는 MIT License와 GNU GPL v2 라이선스 문서가 모두 포함되어 있으며 두 조건 가운데 하나를 선택해 사용하는 이중 라이선스 구조다. 초기 프로젝트는 데스크톱·모바일 웹 브라우저를 대상으로 하며 특정한 그래픽스·사운드 API의 존재 여부는 당시 브라우저 환경에 따라 달라졌다. 소스와 예제는 공개돼 있지만 기존 CDN 주소와 Google+ 커뮤니티 등의 배포·지원 경로는 현재까지 유지된다고 보장할 수 없다. 게임의 실행 코드를 현대 브라우저에서 다시 사용할 때에는 오래된 JavaScript 코드와 HTTPS, 리소스 로딩·오디오 정책의 변화까지 검토해야 한다. Quintus는 Flash 중심 게임 제작에서 HTML5·Canvas와 JavaScript 기반 웹 게임으로 이동하던 시기의 모듈형 엔진 설계를 보여주는 역사적 사례다.[7]