Kha

Kha는 Haxe를 기반으로 게임과 멀티미디어 애플리케이션을 다양한 플랫폼에서 실행하기 위해 개발한 저수준 공개 소프트웨어 프레임워크다. 일반적인 통합형 게임 엔진이 게임 오브젝트·레벨 편집기와 게임 규칙의 틀을 함께 제공하는 것과 달리, Kha는 그래픽스·오디오·입력과 실행 환경의 공...

분류게임 엔진 개발용 저수준 멀티미디어 프레임워크
개발 조직Kode / Kha 프로젝트
개발 기반Haxe, C·C++ 네이티브 런타임
주요 역할게임·미디어 소프트웨어의 플랫폼 추상화
핵심 기능GPU 가속 2D·3D 그래픽스, 오디오·입력
셰이더 컴파일러Krafix
그래픽스 APIDirect3D 9·11·12, Vulkan, OpenGL, Metal 등
웹 대상WebGL·WebGL 2 및 HTML5 Canvas 백엔드
데스크톱Windows, Linux, macOS, FreeBSD
모바일Android, iOS, tvOS
콘솔 지원PlayStation·Xbox·Nintendo Switch 계열, 별도 개발자 권한 필요
확장 환경Raspberry Pi, UWP, Node.js, Java·AWT, C#·WPF
기술 계보Armory3D·Iron Engine의 하부 멀티미디어 기술
기본 빌드Haxe 컴파일러, Kha 도구·Git 하위 모듈
개발 도구Kode Studio 또는 코드 편집기·명령줄 도구
객체 구조상위 장면·게임 규칙은 사용자 또는 별도 엔진에서 구성
소스 공개공개 저장소
라이선스zlib License
공식 웹사이트kha.tech
공식 저장소Kode/Kha

Kha는 Haxe를 기반으로 게임과 멀티미디어 애플리케이션을 다양한 플랫폼에서 실행하기 위해 개발한 저수준 공개 소프트웨어 프레임워크다. 일반적인 통합형 게임 엔진이 게임 오브젝트·레벨 편집기와 게임 규칙의 틀을 함께 제공하는 것과 달리, Kha는 그래픽스·오디오·입력과 실행 환경의 공통 API를 제공하는 데 중점을 둔다. 따라서 개발자는 Kha 위에 자신의 게임 엔진을 구성하거나 다른 게임 제작 도구의 플랫폼 처리 계층으로 이용할 수 있다. Haxe 코드와 셰이더를 플랫폼별 실행 기술로 변환하며 데스크톱·모바일·브라우저 및 여러 콘솔을 대상으로 한다.[1]

Kha는 다양한 그래픽스 API에 일관된 프로그래밍 인터페이스를 제공하는 계층적 설계를 채택한다. 프로젝트는 세대별 그래픽스·오디오 API를 제공하며, 고성능 2차원 그리기부터 3차원 렌더링을 위한 GPU 자원과 명령의 실행을 지원한다. 개발자는 게임 코드에서 플랫폼마다 다른 그래픽 장치 생성과 드라이버 호출을 반복하는 대신 Kha의 API를 이용한다. 다만 하위 API 기능과 제한은 실제 운영체제·그래픽 카드·브라우저 등에 따라 달라지므로 모든 실행 환경에 똑같은 GPU 기능이 존재한다고 간주할 수는 없다.

셰이더 처리에는 Krafix라는 크로스 컴파일 도구를 사용한다. 개발자는 GLSL 계열의 셰이더를 작성하고 빌드 과정에서 목표 플랫폼에 적합한 형식으로 변환할 수 있다. 또한 이미지·오디오와 기타 리소스는 에셋 변환 과정에서 대상 장치에 적합한 데이터로 준비된다. 이처럼 셰이더와 리소스의 변환을 하나의 빌드 흐름에 결합하면 운영체제별 차이가 사용자 게임 코드의 구조로 직접 확산되는 것을 줄일 수 있다.[2]

공식 지원 플랫폼에는 Windows의 Direct3D·Vulkan·OpenGL, Linux의 Vulkan·OpenGL, macOS의 Metal·OpenGL, 브라우저의 WebGL·Canvas, Android·iOS와 tvOS 등이 포함된다. Java·AWT 및 C#·WPF, Node.js 같은 환경으로도 출력을 구성할 수 있다. 콘솔은 플랫폼 소유자의 공식 개발자 자격과 SDK가 필요하며 해당 포팅 코드가 모두 공개 GitHub 저장소에 포함되지는 않는다. 지원 여부는 백엔드와 구성에 따라 달라지기 때문에 개발자가 특정 그래픽스 기능을 사용하려면 해당 빌드 대상의 요구 사항을 검토해야 한다.[3]

Kha는 독립 게임뿐 아니라 다른 게임 엔진 내부의 멀티미디어 계층으로 사용될 수 있다. 예를 들어 Armory3D의 엔진 코어인 Iron Engine은 Haxe로 구현된 장면·게임 객체 시스템에 Kha의 렌더링과 플랫폼 추상화 기능을 결합한다. 이 관계에서 Kha가 3D 장면 편집기나 Blender 통합 기능 전체를 자체 제공하는 것은 아니며, 상위 엔진이 해당 기능을 구현한다. Kha 자체도 다른 엔진의 플랫폼 백엔드 위에서 작동할 수 있도록 구성할 수 있다. 따라서 일반적인 범용 게임 엔진과 저수준 게임 개발 SDK의 경계를 설명하는 데 적합한 사례다.[4]

개발은 기존 프로젝트의 Git 하위 모듈로 Kha를 포함하거나 공식 템플릿을 복제한 뒤 도구가 필요한 프로젝트 파일과 자산을 생성하는 흐름으로 진행한다. Kode Studio를 이용하거나 코드 편집기와 명령줄 도구를 별도로 사용할 수 있다. 프로젝트의 공개 라이선스는 zlib License이며 엔진 기술과 빌드 도구·게임 자산·상용 콘솔 SDK에는 각각 별도 이용 조건이 있을 수 있다. Kha는 하나의 언어에서 여러 그래픽스 API와 실행 환경을 다루도록 하는 프레임워크의 장기적인 발전을 보여준다.[5]

역사

개발 목적과 기술 계보

엔진 구조 및 실행 모델

프로그램·스크립트와 객체 모델

렌더링 및 그래픽스

입력·오디오·애니메이션

게임 데이터와 자산 처리

제작 도구·개발 환경

지원 플랫폼과 빌드

버전별 호환성과 이식

라이선스·소스 공개

주요 활용과 기술적 영향

관련 문서

  1. Kha 공식 프로젝트 소개와 지원 플랫폼 ↩
  2. Kha 소스와 Krafix·에셋 변환 소개 ↩
  3. Kha 공식 백엔드 목록과 콘솔 접근 조건 ↩
  4. Kha: 다른 엔진 위에서의 동작과 확장성 ↩
  5. Kha 공식 시작 안내 ↩