FNA
FNA는 Microsoft XNA Game Studio 4.0 Refresh의 프레임워크 API와 동작을 정확하게 재현하기 위해 개발된 오픈 소스 게임 엔진 프레임워크다. 게임 포팅 개발자 Ethan Lee가 주도하며, 기존 XNA 게임이 원래 코드를 가능한 한 적게 변경한 상태에서 W...
| 분류 | 게임 엔진, XNA 게임 프레임워크 재구현 |
|---|---|
| 개발 주체 | Ethan Lee와 기여자 |
| 대상 API | Microsoft XNA Game Studio 4.0 Refresh |
| 주요 구현 언어 | C# |
| 핵심 목표 | XNA 호환성과 이식성 |
| 그래픽스 | FNA3D·플랫폼별 백엔드 |
| 입력·오디오 | SDL, FAudio 등 통합 |
| 주요 환경 | Windows, Linux, macOS 등 |
| 콘텐츠 | XNA Content Pipeline 출력 형식과 호환 |
| 개발 모델 | 게임 업데이트·그리기 루프 |
| 주요 활용 | 기존 XNA 게임의 현대 플랫폼 이식 |
| 유사 프로젝트 | MonoGame과 별개 |
| 공개 라이선스 | Microsoft Public License(Ms-PL) |
| 공식 웹사이트 | FNA |
| 소스 코드 | FNA-XNA/FNA |
FNA는 Microsoft XNA Game Studio 4.0 Refresh의 프레임워크 API와 동작을 정확하게 재현하기 위해 개발된 오픈 소스 게임 엔진 프레임워크다. 게임 포팅 개발자 Ethan Lee가 주도하며, 기존 XNA 게임이 원래 코드를 가능한 한 적게 변경한 상태에서 Windows 이외의 운영체제와 현대 그래픽스·입력 환경에서도 실행되도록 하는 것이 목표다. 새로운 게임을 직접 제작할 때도 사용할 수 있지만 XNA 호환성에 대한 높은 충실도가 핵심 철학이다.[1]
XNA는 Microsoft가 C# 게임 개발을 위해 제공하던 관리형 프레임워크로 게임 루프, 그래픽스 장치와 리소스, 입력·오디오 등의 인터페이스를 정의했다. FNA는 XNA 4.0 Refresh에 맞추어 같은 네임스페이스와 클래스, 실행 동작을 재현하려고 한다. 프로젝트 문서에서 특정 게임에만 적용되는 별도 편법을 추가하기보다 프레임워크의 정확한 동작을 재현한다는 원칙을 강조한다.[2]
FNA를 사용하는 게임의 핵심 구현은 C#과 XNA 스타일의 Game, Update, Draw 및 그래픽스 관련 API를 중심으로 구성된다. 입력 장치, 2D 스프라이트, 3D 그래픽스와 오디오 처리 및 콘텐츠 로딩을 게임 로직과 분리한다. 네이티브 플랫폼 계층은 운영체제에 따라 윈도우·입력과 그래픽스·오디오 기능을 제공하며, FNA는 가능한 한 기존 게임 코드에 같은 실행 모델을 노출한다.
렌더링 하위 계층은 FNA3D를 사용하고 입력 및 플랫폼 지원에 SDL, 오디오 처리에 FAudio 등의 라이브러리를 활용한다. 원본 Direct3D 및 XNA의 그래픽스 동작과 렌더링 상태를 다른 백엔드에서 최대한 유사하게 처리하는 것이 중요하다. 게임의 셰이더나 콘텐츠가 원래 빌드 도구에 의존하는 경우 별도의 변환 및 포팅 작업이 필요할 수 있으므로 실행 라이브러리의 호환과 콘텐츠의 호환을 구분해야 한다.[3]
FNA는 기존 XNA 타이틀을 다른 운영체제로 이식하는 데 사용되며, 프로젝트 개발진은 여러 상용 게임 포팅 경험을 토대로 라이브러리의 동작을 검증한다. MonoGame과 비슷한 역사를 공유하지만 두 프로젝트는 서로 별도로 발전하며 API 구현 정책과 의존성·목표에서 차이가 있다. FNA는 독자적인 완성형 레벨 에디터보다 게임 코드와 프레임워크의 이식성에 초점을 맞춘다.
소스의 주요 라이선스는 Microsoft Public License(Ms-PL)이며 일부 가져온 코드와 디코더에는 해당 파일의 다른 라이선스가 적용될 수 있다. FNA 자체의 공개 라이선스와 XNA로 제작된 상용 게임의 이미지·음악·프로그램 자산은 별도로 취급해야 한다. FNA는 단종된 개발 프레임워크의 인터페이스와 게임을 현대 기술 환경에서 보존하고 이식하는 사례로서 의미가 있다.[4]