OpenSAGE
OpenSAGE는 Electronic Arts의 고전 3차원 실시간 전략 게임에 사용된 SAGE 엔진을 자유롭게 재구현하려는 게임 엔진 프로젝트다. C#과 .NET을 사용하며 최초의 주요 대상으로 《Command & Conquer: Generals》와 확장팩 《Zero Hour》를 선택...
| 분류 | 게임 엔진, 3차원 RTS 엔진 재구현 |
|---|---|
| 정식 명칭 | OpenSAGE |
| 개발 시작 | 2010년대 중반 |
| 초기 개발자 | Tim Jones 및 기여자 |
| 원본 엔진 | SAGE, EA Pacific 계열 |
| 기술적 대상 | Command & Conquer: Generals·Zero Hour |
| 기타 계통 | Battle for Middle-earth 등 SAGE 사용 게임 |
| 구현 언어 | C# |
| 프레임워크 | .NET |
| 데이터 형식 | INI, W3D, MAP, WND, DDS 등 |
| 렌더링 | 3D 모델·지도·파티클, GUI 재현 |
| 게임 동작 | 유닛·건물·무기, 경제·전략 AI, 경로 탐색 |
| 현재 상태 | 개발 중인 호환 엔진, 완전한 상용게임 재현 미완료 |
| 플랫폼 목표 | Windows 중심, 기타 플랫폼 개발 계획 |
| 게임 자산 | 원본 EA 게임 파일 별도 필요 |
| 원본 저작권 | Electronic Arts와 별개 |
| 공식 저장소 | OpenSAGE/OpenSAGE |
| 기술 자료 | OpenSAGE Docs |
OpenSAGE는 Electronic Arts의 고전 3차원 실시간 전략 게임에 사용된 SAGE 엔진을 자유롭게 재구현하려는 게임 엔진 프로젝트다. C#과 .NET을 사용하며 최초의 주요 대상으로 《Command & Conquer: Generals》와 확장팩 《Zero Hour》를 선택했다. 원본 엔진의 소스 코드를 단순히 다시 컴파일하는 프로젝트가 아니라 게임 파일 형식과 렌더링·게임 규칙을 분석해 새로운 실행 환경을 작성하는 방식이다.[1]
기존 SAGE 엔진은 EA Pacific·EA Los Angeles 등의 RTS 제작에 사용됐으며 3D 지형과 유닛·건축물, 무기와 효과 및 AI를 통합했다. OpenSAGE는 그 자료를 다시 읽고 표현하는 코드를 독립적으로 구현하며, 게임의 동작을 정확하게 재현하기 위한 단계적인 작업 계획을 제공한다. 《The Lord of the Rings: The Battle for Middle-earth》 등 다른 SAGE 게임은 후속 연구 대상으로 거론되지만 모든 작품을 같은 수준으로 실행할 수 있는 것은 아니다.
프로젝트의 파일 처리 작업은 .map, .w3d, .wnd, .ini, .dds 및 기타 이미지·애니메이션·음향 형식을 대상으로 한다. 지형과 오브젝트의 배치를 복원하고 게임 모델 및 애니메이션을 렌더링하며 원본 UI를 표시하는 데 필요하다. 특정 형식을 파싱할 수 있다는 사실은 해당 게임을 처음부터 끝까지 플레이할 수 있는 완전한 게임 규칙 구현과 별개다.[2]
전략 시뮬레이션에서는 유닛 이동과 경로 탐색, 적 AI·무기, 생산·경제와 건축, 미션 스크립트와 네트워크 게임을 구현해야 한다. OpenSAGE의 공식 로드맵은 여러 하위 시스템이 아직 미완료이거나 개발 중이라고 명시한다. 따라서 이 엔진을 완성된 Generals 호환 게임 실행기로 설명하기보다 원본 게임의 기술을 체계적으로 복구하는 진행 중 프로젝트로 기술한다.
게임의 그래픽과 음향·맵·스크립트는 원작 콘텐츠를 사용할 것을 전제로 한다. 프로젝트 자체에는 상용 원본 자산이 포함되지 않으며 적법하게 보유한 게임 파일을 별도로 제공해야 한다. C# 기반의 재구현 코드는 원본 Electronic Arts의 SAGE 소스와 독립적이지만 원본 자료의 저작권과 상표권이 소멸하는 것은 아니다.
OpenSAGE는 개발자와 커뮤니티가 공개된 코드와 기술 문서·역공학 결과를 공유하며 진행한다. 플랫폼별 실행과 그래픽스 API의 지원 여부는 현재 구현 상태에 따라 달라진다. 저작권·라이선스는 공개 저장소의 LICENSE 및 서드파티 구성의 조건을 따르며, 후대의 연구용 도구와 원본 상용 소프트웨어를 구분하는 것이 중요하다.[3]