OpenFL

OpenFL은 Haxe 언어로 게임·멀티미디어 애플리케이션을 여러 플랫폼에서 실행하기 위한 자유·오픈 소스 프레임워크다. Adobe Flash Player 및 Adobe AIR에서 사용되던 Display List와 이벤트 중심 API에 영향을 받아 제작됐으며, 현대 웹과 네이티브 환경에...

분류게임 엔진 기반용 크로스 플랫폼 멀티미디어 프레임워크
개발 언어Haxe
주요 기반Lime
실행 모델Display List, 이벤트 기반 구조
API 영향Adobe Flash 및 AIR
그래픽스WebGL, OpenGL·OpenGL ES, Canvas·Cairo
오디오·플랫폼Lime, SDL·OpenAL 등 플랫폼 구성
프로젝트 작성Haxe 코드, project.xml
빌드·배포Lime 명령줄 도구
주요 대상웹, Windows, Linux, macOS, Android, iOS, 콘솔
관련 엔진HaxeFlixel, HaxePunk
라이선스MIT License
공식 사이트openfl.org
공식 아키텍처OpenFL Core Architecture
소스openfl/openfl

OpenFL은 Haxe 언어로 게임·멀티미디어 애플리케이션을 여러 플랫폼에서 실행하기 위한 자유·오픈 소스 프레임워크다. Adobe Flash Player 및 Adobe AIR에서 사용되던 Display List와 이벤트 중심 API에 영향을 받아 제작됐으며, 현대 웹과 네이티브 환경에서 비슷한 게임·화면 처리 방식을 이용할 수 있도록 한다. 게임 실행에 필요한 주요 기반을 제공하지만 완성된 장면 편집기와 특정 게임 규칙을 강제하는 통합 게임 엔진과는 구분된다.[1]

OpenFL의 핵심 구조는 Haxe로 작성하는 앱 코드, 창·오디오·파일·입력과 자산 빌드를 담당하는 Lime, 실제 화면의 트리 구조와 렌더링을 제공하는 OpenFL API로 이루어진다. 사용자 애플리케이션은 Display Object와 부모·자식 표시 객체를 관리하고 입력 이벤트·시간 경과에 따라 상태를 갱신한다. 이 구성은 옛 Flash 게임을 Haxe로 이전하거나 새로운 앱을 구현하는 기반이 된다.

그래픽스 백엔드는 웹에서 WebGL·Canvas 또는 DOM 요소를 이용할 수 있고, 네이티브 환경에서는 OpenGL·OpenGL ES 및 Cairo 등의 경로를 사용할 수 있다. 렌더러에 따라 고급 셰이더와 텍스처 기능이 다르므로 HTML5와 Windows·Android 등에서 같은 그래픽스 기능이 완전히 동일하게 제공된다고 가정해서는 안 된다.[2]

Lime 명령줄 도구는 project.xml에 정의된 자산·라이브러리·빌드 설정을 읽고 플랫폼별 코드 변환, 패키징과 실행 과정을 수행한다. Haxe 컴파일러가 JavaScript·C++ 등 대상 언어로 컴파일하고, hxcpp와 네이티브 라이브러리를 결합하면 데스크톱 및 모바일 실행 파일을 구성할 수 있다. Flash에서 익숙한 그래픽스 인터페이스를 활용하면서 플랫폼별 SDK 설정을 포함하는 구조다.

HaxeFlixel·HaxePunk 같은 고수준 2D 게임 엔진은 OpenFL 위에서 게임 상태·캐릭터·충돌 등의 추가 API를 제공한다. OpenFL 자체는 여러 게임 장르에서 사용할 수 있는 공통 기반으로, 게임의 씬·월드와 물리·AI는 개발자가 별도의 라이브러리로 추가하거나 직접 구현할 수 있다.

공개 소스는 MIT License로 배포되며 관련 Lime·hxcpp·네이티브 라이브러리는 각각 독립적으로 관리된다. 게임 콘텐츠·이미지·글꼴과 오디오는 별도 저작권을 가진다. OpenFL은 Flash 시대의 객체·이벤트 기반 게임 개발 경험을 Haxe의 다중 플랫폼 컴파일 방식과 결합한 기술로서 의미가 있다.[3]

역사

개발 배경과 기술 계보

엔진의 실행 구조

게임 객체와 스크립팅

렌더링과 그래픽스

물리·애니메이션·입력

오디오·네트워크

콘텐츠 및 제작 도구

플랫폼 지원과 이식

라이선스와 권리 관계

기술적 영향

관련 문서

  1. OpenFL 공식 소개 ↩
  2. OpenFL Core Architecture ↩
  3. OpenFL GitHub 및 라이선스 ↩