Exult
Exult는 1990년대의 롤플레잉 게임 《Ultima VII》를 현대 운영체제에서 실행하도록 만든 오픈 소스 게임 엔진 재구현 프로젝트다. 원본 게임의 소스 코드를 직접 이식한 것이 아니라 게임의 파일 형식과 동작을 분석하여 새로운 런타임을 작성했다. 원작인 《Ultima VII: T...
| 분류 | 게임 엔진, 게임 엔진 재구현 프로젝트 |
|---|---|
| 대상 게임 | Ultima VII, 《The Black Gate》, 《Serpent Isle》 |
| 개발 주체 | Exult 오픈 소스 커뮤니티 |
| 개발 언어 | C++ |
| 입력·멀티미디어 | SDL |
| 주요 기능 | 2D/등각투영 화면, RPG 세계·캐릭터 실행 |
| 원본 데이터 | Ultima VII 원본 게임 데이터·그래픽·음향 사용 |
| 게임플레이 | 대화, AI 일정, 월드 객체, 스크립트 |
| 제작 도구 | Exult Studio |
| 스크립팅 | Usecode 동작 및 관련 제작 도구 |
| 배포 환경 | Windows, Linux, macOS 등 |
| 프로젝트 성격 | 상용 게임 원본 코드와 독립적인 재구현 |
| 공개 라이선스 | GNU GPL v2 |
| 상용 콘텐츠 | 원본 Ultima VII 자산은 별도 라이선스 |
| 공식 사이트 | exult.info |
| 소스 코드 | exult/exult |
| 편집기 문서 | Exult Studio |
Exult는 1990년대의 롤플레잉 게임 《Ultima VII》를 현대 운영체제에서 실행하도록 만든 오픈 소스 게임 엔진 재구현 프로젝트다. 원본 게임의 소스 코드를 직접 이식한 것이 아니라 게임의 파일 형식과 동작을 분석하여 새로운 런타임을 작성했다. 원작인 《Ultima VII: The Black Gate》와 후속편 《Serpent Isle》의 데이터 및 그래픽을 이용해 게임을 실행하도록 설계됐으며, 게임 로직과 월드 시스템을 새롭게 구현하고 있다.[1]
원본 Ultima VII는 DOS 환경과 당시의 특수한 메모리 관리 및 실행 모델에 의존했으므로 현대 운영체제에서 직접 실행하기 위해서는 상당한 호환성 처리가 필요하다. Exult 프로젝트는 원본 게임의 파일 형식을 읽는 새로운 엔진을 개발하고 운영체제별 입력·화면·오디오 처리를 SDL에 맡기는 방식으로 이러한 문제를 해결한다. 주로 C++로 작성되었으며 Windows·Linux·macOS 등에서 실행할 수 있도록 만들어졌다.
엔진은 원작의 지형과 화면 타일, 객체 이미지, 지도 데이터, NPC와 스크립트를 읽어 게임 월드를 생성한다. 각 객체는 위치와 상태를 갖고 플레이어의 행동이나 게임 내 시간에 따라 반응한다. 캐릭터와 사물, 문·상자·가구처럼 상호작용 가능한 대상과 퀘스트 진행을 위한 동작을 처리해야 하므로 단순히 그래픽을 다시 그리는 렌더러가 아니라 게임의 규칙과 실행 모델도 재현해야 한다.[2]
Ultima VII의 이야기와 퀘스트 등은 게임 원본 데이터와 Usecode 형식의 프로그램에 연결돼 있다. Exult는 이 동작을 해석하고 실행해 대화와 이벤트, 게임 상태의 변화를 재현한다. 두 편의 게임은 자산과 규칙에서 차이가 있으므로 엔진은 각 작품의 콘텐츠와 실행 조건을 구분하여 처리한다. 개발 과정에서 팬 커뮤니티가 조사한 파일 형식과 게임 내부 구조가 중요한 역할을 했다.
별도 제작 도구인 Exult Studio는 게임 세계와 오브젝트를 편집하는 기능을 제공한다. 개발자는 이미지·모양 데이터를 탐색하고 지도 안에 객체를 배치하거나 NPC, 트리거 역할을 하는 'egg', 게임 스크립트를 수정할 수 있다. 지도 편집 기능은 실행 중인 Exult와 연결되어 게임 세계를 직접 확인하면서 변경 사항을 적용하는 방식으로 구현됐다. 이 도구는 원작 데이터의 수정뿐 아니라 장기적으로 독립적인 게임 세계를 만드는 수단을 지향한다.[3]
Exult의 프로그램 소스는 GNU GPL v2에 따라 공개된다. 그러나 Ultima VII의 원본 그래픽·음악·게임 데이터는 별도의 상용 저작권을 따르므로 게임을 완전히 실행하려면 원본 게임 자료가 필요하다. 이는 게임 엔진의 자유로운 배포와 특정 작품의 상용 콘텐츠 배포를 구분하는 대표적인 사례다. 프로젝트는 게임 보존·호환성 개선과 커뮤니티 제작 콘텐츠를 가능하게 하는 기술적 기반이라는 의미를 가진다.[4]