Crafty

Crafty 또는 CraftyJS는 브라우저에서 실행하는 2D 게임을 위한 JavaScript 기반 오픈 소스 게임 엔진·라이브러리다. 객체의 동작을 여러 컴포넌트로 조합하는 방식과 이벤트 시스템을 제공해 HTML5 게임 개발을 지원한다. 전체 게임 제작 환경이 아닌 코드 라이브러리로,...

분류게임 엔진 또는 개발 프레임워크
개발 주체CraftyJS 개발 공동체
작성 언어JavaScript
게임 개발 언어JavaScript
주요 기술2D ECS형 컴포넌트, 이벤트·DOM·Canvas 렌더링
지원 플랫폼웹 브라우저
라이선스MIT License
공식 웹사이트공식 사이트
구조엔티티·컴포넌트
렌더링 방식Canvas·DOM
객체 통신Event Binding
배포JavaScript 라이브러리
개발 상태공개 저장소

Crafty 또는 CraftyJS는 브라우저에서 실행하는 2D 게임을 위한 JavaScript 기반 오픈 소스 게임 엔진·라이브러리다. 객체의 동작을 여러 컴포넌트로 조합하는 방식과 이벤트 시스템을 제공해 HTML5 게임 개발을 지원한다. 전체 게임 제작 환경이 아닌 코드 라이브러리로, 개발자가 웹 페이지 또는 JavaScript 프로젝트에 직접 포함하여 사용한다.[1]

게임의 각 엔티티는 2D 위치와 화면 렌더링, 움직임·충돌 등 여러 컴포넌트를 조합해서 구성할 수 있다. 새로운 클래스를 복잡한 상속 구조로 만드는 대신 필요한 기능을 붙이고 이벤트를 발생시키는 개발 방식이다. 이벤트 바인딩은 객체 간의 상호작용과 사용자 입력을 게임 규칙에 연결하는 데 사용된다.

렌더링에는 브라우저의 Canvas와 DOM 기술을 활용할 수 있다. 스프라이트와 이미지·도형의 크기와 위치를 관리하고 키보드·마우스 입력에 따라 화면을 업데이트한다. 브라우저별 그래픽스 성능과 API 차이가 있으므로 같은 게임이라도 렌더링 방식에 따라 실행 비용이 달라질 수 있다.

Crafty는 표준 JavaScript 도구와 결합할 수 있고 별도의 게임 전용 언어를 사용하도록 강제하지 않는다. 웹 개발자는 npm 또는 빌드한 JavaScript 파일을 사용해 라이브러리를 포함하고 외부 오디오·UI 코드와 연결할 수 있다. 프로젝트 공식 사이트는 단순한 예제를 통해 컴포넌트와 이벤트를 정의하는 방식을 소개한다.[2]

엔진 소스는 MIT 라이선스로 공개되며 개발자가 자체 게임에 통합하거나 수정할 수 있다. 프로젝트의 공개 저장소에는 게임 코어와 빌드 도구가 제공되지만 전체 장면 편집기·3D 모델링 도구를 갖춘 통합 개발 환경은 아니다. Phaser·Ct.js 등 다른 JavaScript 게임 제작 기술과 비교할 때 Crafty는 컴포넌트 조합 중심의 작은 라이브러리라는 성격이 뚜렷하다.

역사

개발 조직·기술 계보

아키텍처와 실행 구조

그래픽스와 렌더링

게임 객체·장면·맵

스크립팅과 프로그래밍

에셋 및 편집 도구

입력·물리·사운드

멀티플레이 및 지원 플랫폼

라이선스와 공개 범위

활용 작품과 관련 기술

관련 문서

  1. CraftyJS 공식 소스 ↩
  2. CraftyJS 공식 예제 ↩