Pyrogenesis
Pyrogenesis는 Wildfire Games가 역사적 실시간 전략 게임 《0 A.D.》를 제작하기 위해 개발한 오픈 소스 3차원 게임 엔진이다. 원래 《Age of Empires II》의 모드로 시작했던 게임 구상이 2003년 무렵 독립적인 게임 개발로 발전하면서 엔진도 자체 기술...
| 분류 | 게임 엔진, 실시간 전략 게임 전용 3D 엔진 |
|---|---|
| 개발사 | Wildfire Games |
| 게임 개발 출발 | 2001년 Age of Empires II 모드 계획 |
| 엔진 개발 | 2003년 독립 게임 개발 전환 이후 |
| 대표 게임 | 0 A.D. |
| 구현 언어 | C++, JavaScript |
| 스크립트 | SpiderMonkey JavaScript 런타임 |
| 시뮬레이션 | 유닛·건물·경제, 경로 탐색·전투와 AI |
| 그래픽스 | OpenGL 기반 장면·지형·모델 |
| 게임 데이터 | XML·JSON·JS 기반 객체 정의 및 콘텐츠 |
| 네트워크 | RTS 멀티플레이, 동기식 게임 상태 |
| 맵 도구 | Atlas Map Editor |
| 공통 프로그램 | pyrogenesis 실행기와 에디터 모드 |
| 대상 플랫폼 | Windows, Linux, macOS |
| 현재 코드 호스팅 | Wildfire Games Gitea |
| 이전 GitHub | 2024년부터 보관된 코드 미러 |
| 소스 라이선스 | GNU GPL v2 또는 이후 버전 |
| 게임의 이미지·음향 | CC BY-SA 3.0 등 자산별 별도 |
| 개발사 사이트 | Wildfire Games |
| 기술 문서 | Pyrogenesis Doxygen |
| 옛 코드 | 0ad/0ad |
Pyrogenesis는 Wildfire Games가 역사적 실시간 전략 게임 《0 A.D.》를 제작하기 위해 개발한 오픈 소스 3차원 게임 엔진이다. 원래 《Age of Empires II》의 모드로 시작했던 게임 구상이 2003년 무렵 독립적인 게임 개발로 발전하면서 엔진도 자체 기술로 구축됐다. 대규모 RTS 장면에 필요한 지형·유닛·건축물·경제, 인공지능과 멀티플레이 및 편집 도구가 핵심이며 범용 FPS 엔진과는 다른 작업량과 시뮬레이션 모델을 대상으로 설계됐다.[1]
게임의 내부 실행 구조는 게임 전체의 수명 주기와 규칙을 관리하는 CGame, 세계 객체와 자료를 보유하는 CWorld, 게임의 동작을 계산하는 CSimulation2, 화면 표시를 담당하는 CGameView 등으로 구성된다. 이 분리는 같은 게임의 상태·시뮬레이션과 화면 렌더링을 별도의 시스템으로 관리하고 게임의 실행 속도와 멀티플레이 동기화를 조절하기 위한 것이다. 그래픽스와 시뮬레이션의 객체 모델이 완전히 일치하지 않아도 각 구성 요소가 게임의 공통 자료를 이용하도록 설계되어 있다.[2]
게임 로직과 엔티티 컴포넌트 시스템의 일부는 JavaScript로 작성되며 SpiderMonkey 런타임이 이를 실행한다. 유닛의 행동·경제·자원 처리, 건물과 기술 업그레이드 및 AI 기능은 엔진이 제공하는 네이티브 기능과 스크립트·데이터를 함께 사용한다. RTS의 상태는 여러 참가자에게 같은 규칙으로 적용돼야 하므로 시뮬레이션의 결정성과 게임 명령의 동기화가 중요하다. 그래픽스는 위에서 내려다보는 장면에 많은 유닛·건물을 렌더링하는 방식으로 최적화되어 있다.[3]
렌더링은 OpenGL 기반 3D 지형·모델·애니메이션과 물·조명 및 음영 효과를 처리한다. 게임 자산은 XML·JavaScript 등 여러 자료 정의와 모델·텍스처로 구성되고, 게임과 엔진을 분리해 다른 콘텐츠나 모드를 구성할 수 있다. 제작 도구로는 Atlas 맵 편집기가 있으며 지도에 지형과 객체를 배치하고 테스트를 실행하도록 지원한다. 실행 파일의 -editor 옵션 등을 통해 편집기를 실행하는 개발 방식이 공개돼 있다.[4]
0 A.D. 소스의 역사적 GitHub 미러는 2024년 9월 읽기 전용으로 보관됐으며 그 전에 개발 작업의 중심이 Wildfire Games가 운영하는 Gitea로 이동했다. 따라서 현재의 개선 사항을 조사하려면 기존 GitHub 아카이브만을 최신 개발 저장소로 간주하지 말고 새 코드 호스팅과 공식 문서를 참조해야 한다. 플랫폼별 빌드는 컴파일러와 그래픽스 드라이버, JavaScript 엔진 및 외부 라이브러리 버전에 영향을 받는다.[5]
Pyrogenesis 엔진 코드는 GNU GPL v2 이상으로 제공되지만 《0 A.D.》에 포함된 아트·오디오는 Creative Commons Attribution-ShareAlike 3.0 등 파일별로 다른 라이선스를 따른다. 제삼자 구성 요소도 별도 조건을 유지한다. 이런 구조에서 엔진의 자유 소프트웨어 라이선스와 특정 게임의 음악·모델·음향 자료를 같은 조건으로 재배포할 수 있다는 주장은 부정확하다. Pyrogenesis는 게임 실행·시뮬레이션의 공개 코드와 커뮤니티 제작 콘텐츠를 장기적으로 연결한 RTS 전용 엔진의 사례다.[6]