Ebitengine
Ebitengine은 Go로 2차원 게임을 개발할 수 있도록 만든 오픈 소스 게임 엔진이다. Hajime Hoshi가 시작한 프로젝트로 이전에는 Ebiten이라는 이름을 사용했다. 독립적인 시각적 편집기를 중심으로 게임을 만드는 도구라기보다 Go 응용 프로그램에 라이브러리를 추가하고 코...
| 분류 | 게임 엔진, 2D 게임 개발 라이브러리 |
|---|---|
| 이전 명칭 | Ebiten |
| 설계·개발 | Hajime Hoshi와 기여자들 |
| 개발 언어 | Go |
| 주요 버전 계열 | Ebitengine v2 |
| 핵심 인터페이스 | Game, Update, Draw, Layout |
| 주요 기능 | 2D 렌더링, 이미지 변환, 입력, 오디오 |
| 그래픽스 | GPU 가속 기반 2D 이미지·셰이더 |
| 주요 플랫폼 | Windows, macOS, Linux, FreeBSD |
| 기타 플랫폼 | Android, iOS, WebAssembly, 일부 게임 콘솔 |
| 개발 방식 | Go 패키지를 프로그램에 직접 통합 |
| 공개 라이선스 | Apache License 2.0 |
| 공식 웹사이트 | ebitengine.org |
| 소스 코드 | hajimehoshi/ebiten |
Ebitengine은 Go로 2차원 게임을 개발할 수 있도록 만든 오픈 소스 게임 엔진이다. Hajime Hoshi가 시작한 프로젝트로 이전에는 Ebiten이라는 이름을 사용했다. 독립적인 시각적 편집기를 중심으로 게임을 만드는 도구라기보다 Go 응용 프로그램에 라이브러리를 추가하고 코드를 작성해 화면·입력·소리를 제어하는 방식이다. 단순한 공개 API와 다양한 배포 플랫폼을 주요 특징으로 삼는다.[1]
Ebitengine에서 게임 프로그램은 Game 인터페이스를 구현하여 실행 흐름을 정의한다. Update는 프레임마다 게임의 상태와 규칙을 갱신하고 Draw는 대상 화면 이미지에 출력할 내용을 그리며 Layout은 논리적인 화면 크기와 창 표시 사이의 관계를 결정한다. 업데이트와 렌더링을 구분함으로써 게임이 입력에 반응해 상태를 변경하는 과정과 최종 화면의 생성을 독립적으로 작성할 수 있다. 게임 루프 자체는 엔진이 관리한다.
2D 렌더링은 이미지 객체에 다른 이미지를 배치하거나 변환해 그리는 방식을 중심으로 구성된다. 개발자는 이동·회전·확대·축소·투명도와 색상 처리를 조합해 스프라이트, 인터페이스와 간단한 특수 효과를 구현한다. 이미지 셰이더와 오프스크린 이미지도 사용할 수 있으며, 이러한 기능은 게임 오브젝트를 자체 자료 구조로 관리하는 프로그램에 적합하다. 엔진 자체가 특정 장면 계층이나 게임 세계 설계를 반드시 요구하지는 않는다.[2]
입력 시스템에서는 키보드·마우스와 게임패드 상태를 읽을 수 있고, 모바일 환경에서는 터치 입력을 처리할 수 있다. 오디오 기능은 음향 데이터를 재생하거나 반복하는 기능과 포맷별 디코더 등을 제공한다. 개발자는 게임 규칙, 충돌 검사와 자산 관리의 상위 구조를 직접 작성하거나 다른 Go 라이브러리를 결합할 수 있으므로 작은 게임과 시제품뿐 아니라 별도의 내부 프레임워크를 구축하는 데에도 활용한다.
공식 배포 대상에는 Windows, macOS, Linux, FreeBSD, Android, iOS, WebAssembly가 포함된다. 일부 콘솔 플랫폼도 지원하지만 일반 개발자가 이용할 수 있는 범위와 필요한 도구·계약은 플랫폼에 따라 달라진다. 브라우저에서는 Go 코드를 WebAssembly로 컴파일해 실행하며, 모바일 배포에서는 Cgo와 플랫폼별 빌드 체계를 사용할 수 있다. 운영체제와 브라우저 버전에 따른 API 및 그래픽스 지원 범위는 릴리스별 문서를 확인해야 한다.[3]
Ebitengine은 Apache License 2.0으로 공개되며 소스 코드, 예제와 API 문서를 통해 엔진의 동작 방식을 살펴볼 수 있다. Ebitengine v2 계열은 예전 Ebiten 코드의 발전형이며, 예전 문서와 최신 예제에서 패키지 경로나 인터페이스가 다를 수 있다. 외부 라이브러리와 이미지·음원 콘텐츠의 저작권은 엔진 자체와 별도로 관리된다. 엔진의 Go 중심 설계는 네이티브 게임 개발과 브라우저 배포를 동일한 언어 기반으로 연결하는 사례다.