FXGL
FXGL(FX Game Library)은 JavaFX를 기반으로 2차원 게임을 제작할 수 있도록 개발된 공개 게임 엔진이자 프레임워크다. Almas Baimagambetov가 시작한 프로젝트로, Java 및 Kotlin으로 게임을 작성하고 기존 JavaFX 그래픽스·사용자 인터페이스 기...
| 분류 | 게임 엔진, JavaFX 기반 게임 개발 프레임워크 |
|---|---|
| 전체 이름 | FX Game Library |
| 개발자 | Almas Baimagambetov |
| 개발 언어 | Java, Kotlin |
| 사용 언어 | Java, Kotlin 및 JVM 언어 |
| 기반 플랫폼 | JavaFX, Java Virtual Machine |
| 주요 용도 | 2D 게임, 교육, UI 중심 대화형 앱 |
| 3D 지원 | 실험적인 3D 기능 |
| 핵심 구조 | GameApplication, GameSettings, Entity·Component |
| 게임 실행 | 엔진 수명 주기, 게임 루프와 장면 관리 |
| 기능 | 입력, 충돌·물리, 애니메이션, 파티클, UI·오디오 |
| 배포 형식 | JAR, Java 네이티브 이미지 등 |
| 실행 대상 | Windows, Linux, macOS 및 환경별 모바일·웹 |
| 빌드 통합 | Maven, Gradle |
| 라이선스 | MIT License |
| 공식 프로젝트 | FXGL 웹사이트 |
| 소스 코드 | AlmasB/FXGL |
FXGL(FX Game Library)은 JavaFX를 기반으로 2차원 게임을 제작할 수 있도록 개발된 공개 게임 엔진이자 프레임워크다. Almas Baimagambetov가 시작한 프로젝트로, Java 및 Kotlin으로 게임을 작성하고 기존 JavaFX 그래픽스·사용자 인터페이스 기능과 연동하는 것을 특징으로 한다. 일반적인 게임 엔진의 실행 루프, 충돌·물리, 개체 관리와 오디오 같은 기능을 패키지로 제공하면서도 JavaFX 애플리케이션 개발자가 익숙한 클래스와 레이아웃·UI 체계를 활용할 수 있다.[1]
FXGL은 별도의 전용 에디터를 반드시 거치지 않고 JVM 언어 코드로 게임을 구성하는 방식이다. 기본적인 게임 클래스는 GameApplication이며, 실행 설정은 GameSettings를 통해 화면 크기나 제목 등을 지정한다. 초기화 단계에서는 입력 처리와 게임 변수, 게임 객체를 설정하고 이후 엔진이 관리하는 실행 주기에서 상태를 업데이트한다. 개발자는 IDE와 Maven·Gradle을 사용해 프로젝트를 구성할 수 있으므로 기존 Java 개발 과정과 쉽게 결합된다.[2]
게임 세계의 오브젝트는 Entity와 Component 방식으로 구성한다. 위치와 시각 표현, 이동·물리 충돌 같은 동작을 개별 구성 요소로 관리하고, 필요한 구성 요소를 결합해 캐릭터·배경·발사체와 사용자 인터페이스 요소를 표현할 수 있다. 객체의 생성과 삭제, 게임 상태의 변화 및 이벤트는 프레임워크의 공통 실행 기능에 연결된다. 인터폴레이션 기반 애니메이션과 파티클 효과 등 자주 사용하는 게임 동작을 지원하므로 작은 게임의 구현 비용을 줄인다.
FXGL은 JavaFX를 확장하는 프레임워크인 만큼 일반적인 JavaFX 컨트롤과 레이아웃을 게임 장면과 함께 사용할 수 있다. 이는 점수 화면과 메뉴, 대화형 응용 프로그램 UI, 교육용 데모 제작에서 유용하다. 프로젝트는 2D 플랫폼 게임·아케이드·롤플레잉 게임 등을 주요 사용 분야로 소개하며, 3D 기능은 실험적인 용도로 설명한다. 시각적 콘텐츠뿐 아니라 키보드·마우스 입력과 충돌 처리, 게임 규칙 및 오디오를 공통 API로 제공한다.[3]
공식 자료는 Windows·macOS·Linux를 비롯해 Android·iOS와 웹 등 여러 대상 환경에서의 사용 가능성을 안내한다. 실제 빌드와 배포는 JavaFX의 플랫폼 포팅 기술, JDK와 FXGL 버전, 패키징 도구에 따라 달라진다. 실행 결과는 JAR 형식으로 배포하거나 네이티브 이미지 등으로 패키징할 수 있다. 서버 측 JVM 앱과 달리 그래픽스와 입력 장치가 필요한 클라이언트 환경이므로 JavaFX 지원 상태를 함께 확인해야 한다.[4]
FXGL은 교육 및 취미 개발에서 시작해 다양한 2D 게임·실험용 3D 프로젝트와 UI 중심 업무용 응용 프로그램으로 활용 범위가 확대됐다. 개발자 문서는 기존 libGDX 등 범용 엔진을 그대로 대체하기보다 JavaFX 사용자에게 게임 제작의 개념과 도구를 제공하려는 목적을 설명한다. 소스 코드는 MIT License로 공개돼 자유롭게 확인·수정·재사용할 수 있다. Java·Kotlin과 JavaFX의 기존 생태계를 게임 제작에 연결하는 프레임워크로 기술사적 의미가 있다.[5]