나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2023-08-11 04:01:37

XNA

파일:Microsoft 로고.svg파일:Microsoft 로고 화이트.svg
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px); word-break:keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#393939,#737373><colcolor=#fff>제품군
하드​웨어Surface · Xbox · HoloLens · PixelSense · Zune · Pluton · IVAS
소프트​웨어Windows · Office · Edge · Media Player · Hyper-V · Defender · Visual Studio Code · Visual Studio · Windows Terminal · Microsoft Store · Xbox App · PowerToys · Internet Explorer · MS-DOS · Windows Movie Maker · Autoruns · Clipchamp
서비스Microsoft Azure · OneDrive · Microsoft Copilot · Bing · LinkedIn · Microsoft Docs · Skype · MSN · 정품인증 · Xbox Game Pass · Xbox Cloud Gaming · Xbox network
관련 기술ASF · ASP · Blazor · COM · DCOM · DirectX · 파일 시스템(FAT · NTFS · ReFS) · MFC · .NET(.NET Core · .NET Standard · C# · F# · Visual Basic .NET · Windows Forms · WPF · UWP · .NET MAUI · ASP.NET · ML.NET) · OLE · Q# · Silverlight · Visual Basic · VBA · WASAPI · Windows 커널 · Windows 디자인 · Windows API · Windows Runtime(UWP · WinUI 3) · WMA · WMV · Xamarin · XNA · 하복 엔진 · SAMI · PowerShell · Windows Modern Standby
산하 계열사 및 사업부GitHub · .NET Foundation · Microsoft Gaming · LinkedIn
관련 인물빌 게이츠(은퇴) · 폴 앨런(은퇴) · 스티브 발머(퇴사) · 게이브 뉴웰(퇴사) · 마이크 이바라(퇴사)
사티아 나델라 · 필 스펜서 · 브래드 스미스
기타제니맥스 미디어 인수 · 액티비전 블리자드 인수 · 시작 메뉴 · 빌 게이츠의 굴욕
관련 틀365 제품군 · 하드웨어 제품군 · Surface 제품군 · Windows 제품군}}}}}}}}}

{{{#!wiki style="margin:-10px"<tablealign=center><tablebordercolor=#fff,#2d2f34><tablebgcolor=#fff,#2d2f34> 파일:Xbox 로고.svg파일:Xbox 로고 화이트.svg XBOX
게임 엔진 및 개발도구
}}}
{{{#!wiki style="margin: 0 -10px -5px;"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1px -11px"
게임 엔진
슬립스페이스 엔진 ForzaTech id Tech 엔진 크리에이션 엔진
보이드 엔진 STEM 엔진 IW 엔진
개발자 프로그램
개발 라이브러리 및 개발 소프트웨어
DirectX XNA Simplygon
기타
하복 엔진 (Microsoft Gaming 소관 아닌 DirectX 팀에서 개발)
KEX 엔진 (Microsoft Gaming 소관 아닌 핵심 협력사인 나이트다이브 스튜디오가 개발)
엑스박스 관련 문서마이크로소프트 게이밍
}}}}}}}}} ||
1. 개요2. 게임 제작 라이브러리3. 장점
3.1. 다중 플랫폼3.2. 개발상의 이점3.3. 오픈 소스
4. 단점5. 다운로드 & 설치

1. 개요

마이크로소프트에서 배포하는 C#용 게임 개발 도구. 게임 개발 프로그램으로도 알려져 있지만 엄밀히 따지자면 조금 다른 개념이다. 뜻은 XNA's Not Acronymed. 직역하면 'XNA는 약어(略語)가 아니다'

프리웨어이고 설치도 간단하여 다른 윈도우 프로그램처럼 원클릭 설치가 가능하다. 현재 최신 버전은 비주얼 c# 2010 베이스의 xna 4.0 이며, 닷넷 프레임워크 4.0을 필요로 한다. 따라서 다 합치면 용량이 꽤 된다.

2013년 1분기 마이크로소프트의 로드맵에 의하면 XNA는 더이상 업데이트가 없다. 실버라이트와 마찬가지로 사망선고를 받았지만, 관련 기사 이후 오픈소스 기반의 포크인 MonoGame과 FNA가 등장해 멀티플랫폼 게임 개발에도 사용할 수 있게 되었다.

2021년 현재도 드물게 인디 게임을 중심으로 사용되고 있다.

2. 게임 제작 라이브러리

RPG 쯔꾸르와 달리 게임을 제작하는 프로그램이 아니고, 그저 프로그래밍 언어의 라이브러리 중 하나이기 때문에 기본적으로 프로그래밍 능력이 받쳐 줘야 한다. 당연히 C#으로 코딩해야하기 때문에 C#을 할 줄 알아야 한다.[1] 하지만, 프로그래머라면 같은 패러다임의 언어를 새로 익히는 건 크게 어려운 일이 아니니, 주류 객체 지향 언어를 익힌 사람이라면 큰 문제가 아니다. 다만, 프로그래밍 능력이 없다면 아무리 좋은 라이브러리를 가지고 있어도 아무것도 만들 수 없다. RPG 쯔꾸르를 생각하면 안된다.

예를 들자면, RPG 쯔꾸르와 같은 프로그램으로 게임 제작하는 과정은 이미 지어져 있는 건물을 꾸미고 채워나가는 과정에 비유할 수 있다. 반면, XNA와 같은 라이브러리로 게임을 제작하는 과정은 각종 공구와 재료만 가지고 새로운 건물을 짓고, 채워나가는 과정으로 볼 수 있다.

3. 장점

3.1. 다중 플랫폼

큰 특징 중 하나로는, XNA를 통해 제작한 게임은 PC와 Xbox 360, 윈도우폰7 어느 것으로도 플레이할 수 있다는 것이다. 물론 그냥 다 된다는 건 아니고 컨트롤러 설정을 바꿔 줄 필요가 있다. 그러나 XNA를 통해 제작한 게임을 Xbox 360에 넣으려면 일종의 등록 절차가 필요한데, 현재 한국내의 아마추어가 개발자 등록을 하고, Xbox Live에 게임을 등록하는 과정은 상당히 번거롭다. XNA 홈페이지에서 하는 공모전 비슷한 걸 참가신청하면 임시 아이디가 발급되는데, 이 아이디로 Xbox Live에 등록해야 한다. 혹은 MS의 학생 개발자 지원 프로그램인 드림스파크를 통해서도 등록할 수 있다. 하지만, 마켓플레이스에서 유료로 판매하는 것은 안된다. 유료로 판매하려면 연회비 $99의 크리에이터스 클럽에 가입해야 하지만, 한국에서는 가입 및 결제가 불가능하다.

3.2. 개발상의 이점

게임 제작에 본격적으로 입문하는 사람을 위해 좋은 도구이다. 게임 개발 초반에 골머리를 앓게 되는 그래픽 처리, 사운드 처리, 물리 처리를 하나의 라이브러리로 묶어서 제공한다는 점은 큰 메리트이다. 다른 언어+openGL, DX 조합으로 게임 개발할 때는 게임 엔진이라고 할만한 것을 만드는 데 큰 시간이 든다. 그래서 각종 게임엔진이 있는 것이고. XNA는 프레임워크에 가까운 게임 라이브러리이지만, 게임 엔진의 수준의 방대하고 표준화된 라이브러리를 가지고 있기 때문에 게임 엔진으로 취급할 만큼 엔진파트보다는 게임 그 자체에 집중하여 개발할 수 있다는 장점이 있다. 또한 MS의 뛰어난 인재들이 편리한 게임 개발을 위해 많은 연구를 하여 만든 라이브러리이기 때문에 배울점이 많다. 무엇보다 라이브러리 자체가 실제 게임 개발을 고려해서 설계되었기 때문에, 많은 게임들 어떤 식으로 돌아가는 지 파악하는 데도 큰 도움이 된다. 또한, 기존에 아마추어가 접근하기 힘들었던 콘솔(XBOX360)용 게임을 아마추어가 개발하고 런칭할 수 있다는 것은 매력적이다.

3.3. 오픈 소스

상술했듯 XNA는 이미 사망했으며, 이를 MonoGameFNA가 이어받으며 오픈소스로 바뀌었다. 타 상용화 엔진으로 게임을 개발하면 개발자가 소스를 자유로 공개하더라도 그 소스가 돌아가야할 엔진 자체는 오픈소스가 아니므로 그 소스로 수익을 내려면 결국엔 엔진 라이센스를 구매해야해서 엔진 개발사에 돈을 갖다 바쳐야 한다는 제약이 있는데, MonoGame과 FNA는 라이브러리 자체도 오픈소스이므로[2] 그런 문제로부터 완전히 자유롭다.

MonoGame과 FNA는 둘 다 XNA에서 포크한 프로젝트지만 약간의 차이가 있는데, FNA는 XNA 4.0을 완전히 재구현하도록 설계되었고, MonoGame은 일부 API에서 차이가 있다. 자세한 차이점은 이 링크를 참조.

4. 단점

하지만 CC++과 같이 네이티브 바이너리로 빌드되는 언어로 개발하는 것보다는 퍼포먼스는 제약된다. 하지만, 게임의 메인 루프에서 가장 큰 병목이 일어나는 그래픽 처리나 사운드 처리, 물리 처리등을 최적화 된 라이브러리에서 처리해주기 때문에 큰 문제는 없다. 간단하게 말해서, 머신의 한계까지 그래픽을 뽑아낼 생각이 아니라면 별 문제 없다는 말이다.
그리고 크로스 플랫폼을 위해서는 순수 C# 으로 코드를 작성해야만 한다.

또한 과거에는 XNA로 개발된 게임을 플레이하려면 XNA와 .NET 프레임워크를 설치해야 하기에 윈도우 계열의 디바이스에서만 플레이가 가능하다는 문제점이 있었으나, .NET 프레임워크는 이미 Mono라는 대체제가 있고, XNA는 MonoGame이라는 오픈소스 프로젝트에서 이어받아 개발되고 있으므로 이런 상황은 없어졌다. 다만 닷넷이든 모노든 일반 사용자 입장에서 완성된 게임을 실행하기 위해서 별도의 프로그램을 추가로 설치해야 된다는 것은 큰 약점이다.

5. 다운로드 & 설치

프리웨어이므로 공식 사이트에서 다운받을수 있다. 비주얼 스튜디오 Express Edition에서도 사용할 수 있고, C#만 가지고 프로그래밍할 경우 이 편이 훨씬 낫다. 또한, Express Edition은 한달 뒤 cd-key를 요구하는데, MSN아이디만 있으면 간단히 등록해서 계속 사용할 수 있다!
http://www.xna.com(영어)
http://creators.xna.com(위 사이트와 마찬가지로 영어이다. 예제는 물론이고 질문도 올릴 수 있고, 어떤 게임이 등록되어 있는지 확인도 할 수 있다.)


[1] 약간의 편법을 활용하면, 같은 계열의 언어인 VisualBasic.Net에서도 사용할 수 있다.[2] 정확히는 마이크로소프트 공증 라이센스(MS-PL) 아파치 라이센스와 비슷하게 오픈소스이되 코드 공개 의무는 없는 라이센스라 상업적 사용이 자유롭다.