Ouzel

Ouzel은 C++로 작성된 자유롭게 사용할 수 있는 크로스 플랫폼 2차원 중심 게임 엔진이다. 게임 렌더링과 소리·입력·애니메이션 등 공통 하위 시스템을 제공하며 Windows·Linux·macOS·Android·iOS·tvOS 및 웹용 이식 코드를 포함한다. 프로그램의 자체 게임 로...

분류게임 엔진, 2D 중심 크로스 플랫폼 엔진
개발자Elviss Strazdins (elnormous)
구현 언어C++
주요 버전 계열Ouzel 0.x
개발 구조렌더링·오디오·게임 실행 스레드 분리
장면 구조2D·3D 객체, 장면 및 액터
렌더러Direct3D 11, OpenGL, OpenGL ES, Metal
오디오 백엔드XAudio2, CoreAudio, OpenAL, ALSA, OpenSL ES
게임 기능애니메이션·입자, GUI, 자산 캐시
입력키보드·마우스·게임패드 및 모바일
주요 운영체제Windows, Linux, macOS
모바일·TVAndroid, iOS, tvOS
웹Emscripten 샘플
라이선스Unlicense, 퍼블릭 도메인 공개
공식 소스elnormous/ouzel

Ouzel은 C++로 작성된 자유롭게 사용할 수 있는 크로스 플랫폼 2차원 중심 게임 엔진이다. 게임 렌더링과 소리·입력·애니메이션 등 공통 하위 시스템을 제공하며 Windows·Linux·macOS·Android·iOS·tvOS 및 웹용 이식 코드를 포함한다. 프로그램의 자체 게임 로직을 네이티브 코드로 작성하고 플랫폼별 그래픽스와 오디오 차이를 공통 인터페이스에 통합하는 개발 방식에 초점을 맞춘다.[1]

엔진은 장면과 액터 중심으로 게임 객체를 구성하고 위치·회전 등 변환과 애니메이션을 관리한다. 2D 스프라이트·문자열과 GUI·입자 효과 등의 콘텐츠를 장면에 결합할 수 있고, 일부 3D 장면 관리 기능도 지원한다. 렌더링·사운드·게임 로직 작업을 별도 스레드로 구성하는 설계는 사용자 게임 코드와 실제 GPU·오디오 장치 작업을 분리한다.

그래픽스 백엔드로 Direct3D 11과 OpenGL 2·3·4, OpenGL ES 2·3 및 Metal 등이 사용된다. 각 백엔드는 같은 엔진의 화면 그리기 명령을 해당 플랫폼의 GPU 기능으로 연결하지만 하드웨어별 셰이더·렌더 타깃 지원과 성능에는 차이가 있다. 텍스처·글꼴과 자원 캐시, 여러 뷰포트를 사용하여 다수의 화면 요소를 처리할 수 있다.[2]

오디오 백엔드는 Windows의 XAudio2, macOS·iOS의 CoreAudio, Linux의 ALSA·OpenAL 및 일부 Android용 OpenSL ES 등의 기술을 선택해 사용한다. 입력은 키보드·마우스·게임패드와 모바일 이벤트를 추상화하며 GUI 헬퍼와 액터 애니메이션, 트위닝을 게임에 결합할 수 있다. 이미지와 음악·사운드 및 모델 파일은 자원 관리 계층을 거쳐 로딩된다.

공개 저장소의 빌드 자료에는 Windows·macOS와 Linux 외에 Android·iOS·tvOS, Emscripten과 Raspberry Pi에서 실행하는 예제가 소개돼 있다. 이 플랫폼 목록은 프로젝트 특정 버전의 빌드 구성과 SDK를 전제로 하므로 오늘날 모든 기기에서 이전 설정을 그대로 사용하면 동작한다는 뜻은 아니다. 웹에서는 Emscripten을 통해 C++ 코드와 플랫폼 계층을 변환한다.

Ouzel 코드베이스는 Unlicense를 통해 퍼블릭 도메인과 이에 준하는 자유 이용을 의도하여 배포됐다. 외부 SDK와 제삼자 라이브러리 및 콘텐츠는 별도의 라이선스를 따른다. 이 엔진은 작은 네이티브 C++ 게임 코드에서 여러 운영체제의 그래픽스·오디오 백엔드를 재사용하는 크로스 플랫폼 설계의 사례다.[3]

역사

개발 목적과 기술 계보

엔진 구성과 실행 구조

객체·장면 모델

렌더링과 그래픽스

프로그래밍·스크립팅

물리·애니메이션·입력

오디오·사용자 인터페이스

자산 파이프라인과 제작 도구

지원 플랫폼과 배포

라이선스·소스 공개

활용 사례와 영향

관련 문서

  1. Ouzel 공식 저장소 ↩
  2. Ouzel README 기술·백엔드 목록 ↩
  3. Ouzel 라이선스 및 원본 코드 ↩