Oxygine
Oxygine은 C++로 작성된 오픈 소스 2차원 게임 엔진 및 게임 제작 프레임워크다. 처음에는 iOS·Android의 모바일 게임을 대상으로 개발됐으며 Windows·macOS·웹용 Emscripten 이식 등 여러 환경에서 동일한 코드와 게임 자산을 재사용할 수 있게 했다. 엔진...
| 분류 | 게임 엔진, C++ 기반 2차원 게임 개발 프레임워크 |
|---|---|
| 개발 주체 | Oxygine 개발팀 |
| 구현 언어 | C++ |
| 주요 구조 | 장면 그래프, Actor·Sprite 계층 |
| 설계 영향 | Flash Display List |
| 주요 대상 | 모바일 2D 게임 |
| 렌더링 | OpenGL·Direct3D 기반 2D |
| 게임 기능 | 스프라이트, 트윈·애니메이션, 입력·이벤트 |
| 자료 관리 | 텍스처 아틀라스, 자원 로더 |
| 주요 대상 운영체제 | Android, iOS, Windows, macOS |
| 웹 | Emscripten 빌드 지원 |
| 추가 플랫폼 | Linux 관련 프로젝트·포크 |
| 외부 확장 | Box2D, Cocos 도구 등 연동 |
| 배포 | SDK, 예제와 테스트 게임 |
| 라이선스 | MIT License |
| 공식 저장소 | oxygine/oxygine-framework |
| 프로젝트 문서 | Oxygine Wiki |
Oxygine은 C++로 작성된 오픈 소스 2차원 게임 엔진 및 게임 제작 프레임워크다. 처음에는 iOS·Android의 모바일 게임을 대상으로 개발됐으며 Windows·macOS·웹용 Emscripten 이식 등 여러 환경에서 동일한 코드와 게임 자산을 재사용할 수 있게 했다. 엔진 자체는 장면 그래프·스프라이트와 애니메이션, 이벤트·입력 등을 제공하며 게임은 C++ 코드로 규칙과 객체를 정의한다.[1]
장면 구조는 Flash의 Display List와 유사한 부모·자식 객체 그래프로 표현된다. Actor와 Sprite 등의 객체는 좌표와 변환, 화면에 그릴 이미지와 애니메이션 상태를 보유하며 부모 객체의 변환이 자식에게 영향을 준다. 게임 로직에서 객체의 이벤트를 처리하고 프레임마다 갱신함으로써 버튼과 캐릭터·배경 및 UI 요소를 한 화면에 조합할 수 있다.
그래픽스는 OpenGL·Direct3D 등 플랫폼의 렌더링 API를 이용하며 스프라이트와 텍스처 아틀라스, 색상·알파·크기와 회전 등의 2D 변환을 처리한다. 엔진은 GPU 호출을 효율적으로 묶어 많은 2D 요소를 그릴 수 있게 하며 메모리와 리소스의 관리 기능을 제공한다. 완전한 3차원 범용 게임 엔진보다 2D 모바일 콘텐츠 제작에 맞는 API를 중심으로 한다.[2]
게임 제작에 필요한 이미지·사운드와 애니메이션의 원본 자료는 엔진의 리소스 처리 기능을 통해 실행 시 불러온다. 게임 오브젝트와 화면 효과는 C++ API로 조합하며, Box2D와 같은 외부 물리 라이브러리를 결합해 충돌·운동을 확장할 수 있다. 프로젝트의 공식 저장소는 SDK와 샘플·빌드 도구를 제공해 플랫폼별 앱 제작 과정에 활용하도록 한다.
Android·iOS 및 Windows·macOS는 공식 저장소에 안내된 주요 플랫폼이며 웹에서도 Emscripten을 이용한 빌드가 소개된다. Linux 지원은 포크·빌드 구성에 따라 달라져 특정 릴리스의 지원 여부를 구분해야 한다. 예전 모바일 SDK와 Xcode 및 그래픽스 도구를 요구하는 일부 소스는 현대 환경에서 수정이 필요할 수 있다.
엔진의 소스 코드에는 MIT License가 적용된다. Oxygine 자체와 그 위에 구축된 개별 게임의 상용 자산은 서로 다른 권리를 가지며 외부 확장 라이브러리도 제각각의 라이선스를 따른다. Oxygine은 Flash의 객체 계층 모델을 C++ 모바일·데스크톱 게임에 적용하여 장면 그래프 중심의 2D 제작 방식을 제공한 역사적 게임 프레임워크로 볼 수 있다.[3]