Haaf's Game Engine
Haaf's Game Engine(HGE)은 Haaf라는 이름으로 알려진 Alexander Parpura가 개발한 하드웨어 가속 2차원 게임 엔진이다. 원래 Microsoft Windows 환경에서 C++로 게임을 간단하게 제작하기 위해 설계됐으며 Direct3D 8·9를 이용한 화면...
| 분류 | 게임 엔진, 하드웨어 가속 2D 게임 프레임워크 |
|---|---|
| 약칭 | HGE |
| 원 개발자 | Haaf (Alexander Parpura) |
| 개발 시작 | 2000년대 초반 |
| 원본 구현 언어 | C++ |
| 초기 실행 환경 | Microsoft Windows |
| 그래픽스 API | Direct3D 8·9 |
| 플랫폼 추상화 | 윈도 시스템·입력·렌더링·오디오의 HAL |
| 기본 구성 | HGE System Layer와 헬퍼 클래스 |
| 게임 제작 기능 | 스프라이트, 입자, 애니메이션, 글꼴, GUI |
| 자산 관리 | Resource Manager, 텍스처·사운드 로딩 |
| 오디오 | BASS 라이브러리 (별도 라이선스) |
| 주요 역사적 버전 | 1.54, 1.6, 1.81 |
| 추가 이식 | hge-unix를 통한 Linux·macOS 지원 |
| 공개 라이선스 | zlib/libpng License (HGE 1.6 이후) |
| 공식 배포 자료 | SourceForge HGE |
| 기술 문서 | HGE Overview |
| Linux·macOS 이식 | hge-unix |
Haaf's Game Engine(HGE)은 Haaf라는 이름으로 알려진 Alexander Parpura가 개발한 하드웨어 가속 2차원 게임 엔진이다. 원래 Microsoft Windows 환경에서 C++로 게임을 간단하게 제작하기 위해 설계됐으며 Direct3D 8·9를 이용한 화면 표시와 게임 루프, 입력·오디오, 이미지·애니메이션 및 간단한 사용자 인터페이스 기능을 공통 API로 제공한다. 제작자가 운영체제의 창 메시지나 저수준 그래픽스 코드부터 직접 작성하지 않고 2D 게임의 로직과 콘텐츠에 집중할 수 있도록 하는 것이 핵심 목표다.[1]
HGE의 엔진 구조는 시스템 기능을 제공하는 저수준 계층과 게임 개발에 자주 쓰이는 도우미 클래스, 자산·도구 지원으로 구분할 수 있다. 시스템 계층은 Windows에서 창 생성과 장치 초기화·게임 루프, 시간 갱신·입력, 텍스처·그래픽스 및 소리 재생 등을 담당한다. 개발자는 HGE의 공통 함수를 호출해 게임을 초기화하고 업데이트·렌더링 콜백을 등록함으로써 실행 흐름을 구성한다. 엔진의 하드웨어 추상화 계층(HAL)은 게임 코드가 운영체제·DirectX 초기화의 내부 세부 사항에 직접 종속되는 것을 줄이는 역할을 한다.[2]
그리기 기능은 이미지와 사각형·텍스처, 변환, 회전·확대·색상 혼합을 조합하여 스프라이트 중심의 게임 화면을 만든다. 보조 클래스로 hgeSprite, hgeAnimation, hgeParticleSystem, hgeFont, hgeGUI, hgeResourceManager 등이 제공된다. 개발자는 이러한 요소를 이용하여 캐릭터·배경과 폭발·입자 효과, 메뉴·점수 화면과 게임 자산 로딩을 구현할 수 있다. 복잡한 월드와 게임 규칙은 C++ 코드에서 직접 정의하고 필요한 객체를 엔진의 기본 자료로 표현한다.[3]
오디오 재생에는 BASS 라이브러리를 결합한 배포판이 사용됐으며, 이 라이브러리는 HGE 코드와 독립적인 이용 조건을 가진다. HGE 자체는 1.6 버전부터 zlib/libpng 라이선스로 공개되어 상업적 게임에도 무료로 사용할 수 있지만, BASS는 일반적으로 상업적 이용에 별도 라이선스 조건이 적용된다. 따라서 HGE를 이용해 상업적 게임을 배포할 때에는 엔진 소스 코드의 자유로운 사용과 오디오 라이브러리의 저작권·이용 계약을 구분해야 한다.[4][5]
HGE는 2006년 1.54·1.6 버전을 거쳐 2008년 1.81 버전 등으로 발전했다. 버전에 따라 스프라이트·애니메이션과 GUI, 글꼴·입자 시스템, 그래픽스의 오류 수정과 제작 도구가 추가됐으며, 역사적인 HGE 개발 문서와 소스 아카이브는 SourceForge 및 후대 GitHub 저장소에 보존돼 있다. 독립 제작자가 자신의 컴파일러와 개발 도구를 활용할 수 있도록 설계됐고 당시 Visual C++·MinGW 등 여러 Windows용 C++ 환경에서 사용할 수 있었다.[6]
Windows 이외의 환경에서는 Ryan C. Gordon 등이 개발에 참여한 hge-unix가 기존 1.81 API를 Linux·macOS에서 사용할 수 있도록 구현했다. hge-unix는 HGE의 API를 유지하면서 그래픽스·오디오·입력의 플랫폼별 동작을 다른 기술로 옮기는 이식 프로젝트다. 원래의 Direct3D 기반 Windows 라이브러리와 후속 오픈 소스 이식판을 구분해야 하며, 호환성은 게임이 사용하는 외부 라이브러리 및 콘텐츠 형식에 영향을 받는다. HGE는 소형 2D 게임에 맞춘 단순한 C++ 인터페이스를 제공하면서도 다양한 제3자 플랫폼 포팅을 가능하게 한 고전 게임 엔진이다.[7]