UWP 프레임워크를 기반으로 게임을 개발하는 데 시간을 투자하기 전에 UWP는 더 이상 활성 개발 중이 아닙니다. 또한 UWP 기반 게임은 Xbox 스토어에서 더 이상 허용되지 않습니다.
이 가이드에서는 UWP(유니버설 Windows 플랫폼) 게임을 개발하는 데 필요한 리소스 및 정보의 엔드투엔드 컬렉션을 제공합니다. 이 가이드의 영어(미국) 버전은 PDF 형식으로 제공됩니다.
UWP(유니버설 Windows 플랫폼)의 게임 개발 소개
이 가이드에서는 게임을 개발할 때 도움이 되는 정보와 리소스의 엔드투엔드 컬렉션을 제공합니다. 섹션은 게임 개발 단계에 따라 구성되므로 필요할 때 정보를 찾을 위치를 알 수 있습니다.
Windows 에서 게임을 개발하는 경우 시작 가이드가 시작하려는 위치일 수 있습니다. 또한 게임 개발 리소스 섹션에서는 설명서, 프로그램 및 게임을 만들 때 도움이 되는 기타 리소스에 대한 대략적인 설문 조사도 제공하고 있습니다. 대신에 몇몇 UWP 코드를 살펴보는 것부터 시작하고 싶다면 게임 샘플을 참조하세요.
게임 개발 리소스
설명서부터 개발자 프로그램, 포럼, 블로그 및 샘플에 이르기까지 게임 개발 과정에 도움이 되는 다양한 리소스가 있습니다. Windows 게임 개발을 시작할 때 알아야 할 리소스 모음은 다음과 같습니다.
참고
일부 기능은 다양한 프로그램을 통해 관리됩니다. 이 가이드에서는 광범위한 리소스에 대해 설명하므로 현재 사용 중인 프로그램 또는 특정 개발 역할에 따라 일부 리소스에 액세스하지 못할 수도 있습니다. Microsoft와의 협력에 대한 자세한 내용은 개발자 프로그램을 참조하세요.
게임 개발 설명서
이 가이드에서는 작업, 기술 및 게임 개발 단계에 따라 구성된 관련 설명서에 대한 딥 링크를 찾을 수 있습니다. 사용 가능한 항목에 대한 광범위한 보기를 제공하기 위해 Windows 게임 개발을 위한 기본 설명서 포털은 다음과 같습니다.
파트너 센터에서 개발자로 등록하는 것은 Windows 게임을 게시하기 위한 첫 번째 단계입니다. 개발자 계정을 사용하여 게임의 이름을 예약하고, 무료 또는 유료 게임을 모든 Windows 디바이스용 Microsoft Store에 제출할 수 있습니다. 개발자 계정을 사용하여 게임 및 게임 내 제품을 관리하고, 자세한 분석을 얻고, 전 세계 플레이어에게 훌륭한 환경을 제공하는 서비스를 사용할 수 있습니다.
또한 Microsoft는 Windows 게임을 개발하고 게시하는 데 도움이 되도록 여러 개발자 프로그램을 제공합니다. 파트너 센터 계정을 등록하기 전에 적합한 계정이 있는지 확인하는 것이 좋습니다. 자세한 내용은 개발자 프로그램을 참조하세요.
개발자 프로그램
또한 Microsoft Store에 게임을 게시하려면 Windows 파트너 센터에서 개발자 계정을 만들어야 합니다.
게임 샘플
Windows 게임 기능을 이해하고 게임 개발을 빠르게 시작하는 데 도움이 되는 다양한 Windows 게임 및 앱 샘플이 있습니다. 샘플은 정기적으로 개발 및 게시되므로 가끔 샘플 포털을 다시 확인하여 새로운 기능을 확인하는 것을 잊지 마세요. GitHub 리포지토리를 시청하여 변경 내용 및 추가에 대한 알림을 받을 수도 있습니다.
Windows 게임에서 사용할 수 있는 여러 프로그래밍 언어 및 그래픽 기술이 있습니다. 선택하는 경로와 방향은 개발하고 있는 게임 유형, 개발 회사의 경험 및 선호도, 게임의 고유한 기능 요구 사항에 따라 다릅니다. C#, C++ 또는 JavaScript를 사용하시겠습니까? DirectX, XAML 또는 HTML5?
DirectX
Microsoft DirectX는 최고 성능의 2D 및 3D 그래픽과 멀티미디어를 위한 선택입니다.
DirectX 12는 이전 버전보다 훨씬 빠르고 효율적입니다. Direct3D 12에서는 풍부한 장면, 더 많은 개체, 더 복잡한 효과를 활용할 수 있고 Windows PC 및 Xbox One에서 최신 GPU 하드웨어를 완벽하게 활용할 수 있습니다.
Direct3D 11의 친숙한 그래픽 파이프라인을 사용하려는 경우에는 여전히 Direct3D 11.3에 추가된 새로운 렌더링 및 최적화 기능의 이점을 누릴 수 있습니다. 또한 Win32에 뿌리를 둔 검증된 데스크톱 Windows API 개발자인 경우 Windows 게임에 대한 옵션을 계속 사용할 수 있습니다.
DirectX의 광범위한 기능과 심층 플랫폼 통합은 가장 까다로운 게임에 필요한 성능과 성능을 제공합니다.
XAML은 애니메이션, 스토리보드, 데이터 바인딩, 확장 가능한 벡터 기반 그래픽, 동적 크기 조정 및 장면 그래프와 같은 편리한 기능을 갖춘 사용하기 쉬운 선언적 UI 언어입니다. XAML은 게임 UI, 메뉴, 스프라이트 및 2D 그래픽에 적합합니다. UI 레이아웃을 쉽게 만들기 위해 XAML은 Expression Blend 및 Microsoft Visual Studio와 같은 디자인 및 개발 도구와 호환됩니다. XAML은 주로 C#과 함께 사용되지만, C++를 더욱 선호하거나 게임이 고성능 CPU 사양을 요구하는 경우 C++와 함께 사용해도 좋습니다.
HTML(HyperText Markup Language)은 웹 페이지, 앱 및 리치 클라이언트에 사용되는 일반적인 UI 태그 언어입니다. Windows 게임은 HTML의 친숙한 기능, 유니버설 Windows 플랫폼 액세스 및 AppCache, 웹 작업자, 캔버스, 끌어서 놓기, 비동기 프로그래밍 및 SVG와 같은 최신 웹 기능에 대한 지원을 통해 HTML5를 완전한 기능을 갖춘 프레젠테이션 계층으로 사용할 수 있습니다. 백그라운드에서 HTML 렌더링은 DirectX 하드웨어 가속의 기능을 활용하므로 추가 코드를 작성하지 않고도 DirectX의 성능 이점을 얻을 수 있습니다. HTML5는 웹 개발, 웹 게임 포팅에 능숙하거나 다른 선택 항목보다 쉽게 접근할 수 있는 언어 및 그래픽 계층을 사용하려는 경우에 적합합니다. HTML5는 JavaScript와 함께 사용되지만 C# 또는 C++/CX로 만든 구성 요소를 호출할 수도 있습니다.
Microsoft DXGI(DirectX Graphics Infrastructure)는 여러 그래픽 기술에서 상호 운용성과 호환성을 제공합니다. 고성능 그래픽의 경우 XAML과 DirectX를 결합할 수 있습니다. 메뉴 및 기타 간단한 UI에 XAML을 사용하고 복잡한 2D 및 3D 장면을 렌더링하는 DirectX를 사용합니다. DXGI는 Direct2D, Direct3D, DirectWrite, DirectCompute 및 Microsoft Media Foundation 간의 호환성도 제공합니다.
C++/WinRT는 속도, 호환성 및 플랫폼 액세스의 강력한 조합을 제공하는 고성능의 낮은 오버헤드 언어입니다. C++/WinRT를 사용하면 DirectX 및 Xbox Live를 비롯한 Windows의 모든 훌륭한 게임 기능을 쉽게 사용할 수 있습니다. 기존 C++ 코드 및 라이브러리를 다시 사용할 수도 있습니다. C++/WinRT는 가비지 수집의 오버헤드를 발생시키지 않는 빠른 네이티브 코드를 생성하므로 게임의 성능이 향상되고 전력 소비가 적어 배터리 수명이 길어질 수 있습니다. DirectX 또는 XAML에서 C++/WinRT를 사용하거나 둘 다의 조합을 사용하는 게임을 만듭니다.
C#
C#("C sharp"으로 발음)은 간단하고 강력하며 형식이 안전하며 개체 지향적인 현대적이고 혁신적인 언어입니다. C#을 사용하면 C 스타일 언어의 친숙함과 표현성을 유지하면서 빠르게 개발할 수 있습니다. C#에는 다형성, 대리자, 람다, 클로저, 반복기 메서드, 공변성 및 LINQ(언어 통합 쿼리) 식과 같은 다양한 고급 언어 기능이 있습니다. C#은 XAML을 대상으로 하거나, 게임 개발을 빠르게 시작하거나, 이전 C# 환경을 원하는 경우에 적합합니다. C#은 주로 XAML과 함께 사용되므로 DirectX를 사용하려는 경우 대신 C++를 선택하거나 게임의 일부를 DirectX와 상호 작용하는 C++ 구성 요소로 작성합니다. 또는 Win2D를 고려해보세요(C# 및 C++용 직접 모드 Direct2D 그래픽 라이브러리).
유니버설 Windows 플랫폼에서는 다른 언어로 작성된 구성 요소를 조합하기가 쉽습니다. C++, C# 또는 Visual Basic으로 Windows 런타임 구성 요소를 생성한 후 JavaScript, C#, C++ 또는 Visual Basic에서 해당 요소로 호출합니다. 이는 선택한 언어로 게임의 일부를 프로그래밍하는 좋은 방법입니다. 또한 구성 요소를 통해 특정 언어에서만 사용 가능한 외부 라이브러리는 물론 이미 작성해둔 레거시 코드를 사용할 수도 있습니다.
게임에 DirectX를 선택하는 경우 Microsoft Direct3D 12 또는 Microsoft Direct3D 11 중 사용할 버전을 결정해야 합니다.
DirectX 12는 이전 버전보다 훨씬 빠르고 효율적입니다. Direct3D 12에서는 풍부한 장면, 더 많은 개체, 더 복잡한 효과를 활용할 수 있고 Windows PC 및 Xbox One에서 최신 GPU 하드웨어를 완벽하게 활용할 수 있습니다. Direct3D 12는 매우 낮은 수준에서 작동하므로 전문가 그래픽 개발 팀 또는 숙련된 DirectX 11 개발 팀에게 그래픽 최적화를 최대화하는 데 필요한 모든 컨트롤을 제공할 수 있습니다.
Direct3D 11.3은 익숙한 Direct3D 프로그래밍 모델을 사용하고 GPU 렌더링과 관련된 복잡성을 더 많이 처리하는 하위 수준 그래픽 API입니다. Windows 및 Xbox One에서도 지원됩니다. Direct3D 11로 작성된 기존 엔진이 있고 Direct3D 12로 이동할 준비가 되지 않은 경우 12에서 Direct3D 11을 사용하여 성능 향상을 달성할 수 있습니다. 버전 11.3 이상에는 Direct3D 12에서도 사용하도록 설정된 새로운 렌더링 및 최적화 기능이 포함되어 있습니다.
게임의 요구 사항에 따라 브리지, 게임 엔진 또는 미들웨어를 사용하면 개발 및 테스트 시간과 리소스를 절약할 수 있습니다. 다음은 브리지, 게임 엔진 및 미들웨어에 대한 몇 가지 개요 및 리소스입니다.
Azure PlayFab
Microsoft 제품군에 새롭게 포함된 Azure PlayFab은 라이브 게임을 위한 완벽한 백 엔드 플랫폼이자 독립 스튜디오의 첫 걸음을 위한 강력한 솔루션입니다. 게임 서비스, 실시간 분석 및 LiveOps를 통해 매출, 참여 및 재방문 주기를 높이면서 비용을 절감하세요.
Havok의 모듈식 도구 및 기술 모음은 게임 작성자가 새로운 수준의 조작 및 몰입도에 도달하도록 지원합니다. Havok은 매우 사실적인 물리학, 대화형 시뮬레이션 및 멋진 시네마틱을 가능하게 합니다. 버전 2015.1 이상은 x86, 64비트 및 Arm의 Visual Studio 2015에서 UWP를 공식적으로 지원합니다.
이제 만들려는 게임의 유형과 이를 빌드하는 데 사용할 도구 및 그래픽 기술을 결정했으므로 디자인 및 프로토타입을 시작할 준비가 되었습니다. 게임의 핵심은 유니버설 Windows 플랫폼 앱이므로 여기서 시작합니다.
UWP(유니버설 Windows 플랫폼) 소개
UWP(유니버설 Windows 플랫폼)는 Windows 디바이스에서 공통 API 플랫폼을 제공합니다. UWP를 대상으로 하는 게임은 모든 디바이스에 공통적인 WinRT API를 호출할 수 있습니다. UWP는 보장된 API 계층을 제공하기 때문에 선택에 따라 Windows 디바이스에서 설치되는 단일 앱 패키지를 만들 수도 있습니다. 원하는 경우 게임이 실행되는 장치와 관련된 API(Win32 및 .NET의 일부 클래식 Windows API 포함)를 계속 호출할 수 있습니다.
다음은 유니버설 Windows 플랫폼 앱에 대해 자세히 설명하는 훌륭한 가이드이며 플랫폼을 이해하는 데 도움이 되도록 읽는 것이 좋습니다.
게임은 몇 가지 일반적인 사용자 인터페이스 요소와 디자인 원칙을 앱과 공유합니다. 그러나 게임은 종종 사용자 환경에 대한 고유한 모양, 느낌 및 디자인 목표를 가지고 있습니다. 게임은 두 가지 측면 모두에 신중한 디자인을 적용할 때 성공합니다. 게임이 테스트된 UX를 언제 사용해야 하는지, 언제 다각화하고 혁신해야 하나요? 게임에 대해 선택한 프레젠테이션 기술(DirectX, XAML, HTML5 또는 세 가지의 일부 조합)은 구현 세부 정보에 영향을 주지만 적용하는 디자인 원칙은 해당 선택과 크게 독립적입니다.
UX 디자인과는 별도로 수준 디자인, 속도, 세계 디자인 및 기타 측면과 같은 게임 플레이 디자인은 사용자와 팀에게 달려 있으며 이 개발 가이드에서 다루지 않는 고유한 예술 형식입니다.
게임에서 일관된 색상 지침을 따르면 미학이 향상되고 탐색 기능이 향상되며 플레이어에게 메뉴 및 HUD 기능을 알리는 강력한 도구입니다. 경고, 손상, XP 및 도전 과제와 같은 게임 요소의 일관된 색 지정은 클린어러한 UI로 이어질 수 있으며 명시적 레이블의 필요성을 줄일 수 있습니다.
다음은 XAudio2, XAPO 및 Windows Sonic을 사용하여 게임에서 오디오를 구현하기 위한 가이드 및 참조입니다. XAudio2는 고성능 오디오 엔진을 개발하기 위한 신호 처리 및 믹싱 기반을 제공하는 하위 수준 오디오 API입니다. XAPO API를 사용하면 Windows 및 Xbox 모두에서 XAudio2에서 사용할 XAPO(플랫폼 간 오디오 처리 개체)를 만들 수 있습니다. 개발자는 Windows Sonic 오디오 지원을 통해 게임에 Dolby Atmos for Home Theater, Dolby Atmos for Headphones 및 Windows HRTF 지원을 추가하거나 미디어 응용 프로그램을 스트리밍할 수 있습니다.
DirectX 도구 키트, DirectX 텍스처 처리 라이브러리, DirectXMesh 기하 도형 처리 라이브러리, UVAtlas 라이브러리 및 DirectXMath 라이브러리는 DirectX 개발을 위한 질감, 메시, 스프라이트 및 기타 유틸리티 기능 및 도우미 클래스를 제공합니다. 이러한 라이브러리는 개발 시간과 노력을 절약하는 데 도움이 될 수 있습니다.
추가 기능(앱에서 바로 구매 제품)은 플레이어가 게임 내에서 구입할 수 있는 보충 항목입니다. 추가 기능은 게임 수준, 항목 또는 플레이어가 즐길 수 있는 다른 모든 사항이 될 수 있습니다. 추가 기능을 적절하게 사용하면 게임 환경을 개선하는 한편 수익을 얻을 수 있습니다. 파트너 센터를 통해 게임의 추가 기능을 정의 및 게시하고 게임 코드에서 앱에서 바로 구매를 사용하도록 설정합니다.
성능을 최적화하기 위해 Windows의 게임 모드를 활용하여 현재 하드웨어의 용량을 최대한 활용하여 게이머에게 최상의 게임 환경을 제공할 수 있습니다.
WPT(Windows Performance Toolkit)는 Windows 운영 체제 및 애플리케이션의 심층적인 성능 프로필을 생성하는 성능 모니터링 도구로 구성됩니다. 이는 메모리 사용량을 모니터링하고 게임 성능을 향상시키는 데 특히 유용합니다. Windows Performance Toolkit은 Windows SDK 및 Windows ADK에 포함되어 있습니다. 이 도구 키트는 WPR(Windows Performance Recorder) 및 WPA(Windows Performance Analyzer)의 두 가지 독립적인 도구로 구성됩니다. Windows Sysinternals에 포함된 ProcDump는 게임 충돌이 발생하는 동안 CPU 스파이크를 모니터링하고 덤프 파일을 생성하는 명령줄 유틸리티입니다.
저장소 매니페스트(StoreManifest.xml)는 앱 패키지에 포함할 수 있는 선택적 구성 파일입니다. 저장소 매니페스트는 AppxManifest.xml 파일의 일부가 아닌 추가 기능을 제공합니다. 예를 들어 대상 디바이스에 지정된 최소 DirectX 기능 수준 또는 지정된 최소 시스템 메모리가 없는 경우 저장소 매니페스트를 사용하여 게임 설치를 차단할 수 있습니다.
개발을 완료하고 게임을 배송한 후에도 게임이 끝난 것은 아닙니다. 버전 1에서는 개발을 완료한 것일 수 있지만 마켓플레이스에서 게임의 여정은 이제 막 시작되었습니다. 사용량 및 오류 보고를 모니터링하고, 사용자 피드백에 응답하고, 게임에 업데이트를 게시하는 것이 좋습니다.
Visual Studio Application Insights는 게시된 게임에 대한 성능, 원격 분석 및 사용 현황 분석을 제공합니다. Application Insights를 사용하면 게임이 출시된 후 문제를 감지 및 해결하고, 사용량을 지속적으로 모니터링하고 개선하며, 플레이어가 계속해서 게임과 상호 작용하는 방식을 이해할 수 있습니다. Application Insights는 앱에 SDK를 추가하여 작동하며, Azure 포털에 원격 분석을 보냅니다.
Xbox Live는 전 세계 수 백만 명의 게이머를 연결하는 최고의 게임 네트워크입니다. 개발자들은 Xbox Live 프레전스, 순위표, 클라우드 서비스, 게임 허브, 클럽, 파티 채팅, 게임 DVR을 포함하여 게임 청중들을 조직적으로 유치할 수 있는 Xbox Live 기능에 액세스할 수 있습니다.
참고
Xbox Live가 지원되는 타이틀을 개발하고 싶다면 몇 가지 옵션을 사용할 수 있습니다. 다양한 프로그램에 대한 자세한 내용은 Xbox Live 개발자 프로그램 선택을 참조하세요.
Xbox 팀에서는 모든 사람이 플레이할 때 우리 모두가 우승한다고 생각합니다. Xbox 팀에서는 가능한 한 많은 개발자에게 액세스 가능한 환경을 만드는 데 필요한 도구를 제공하기 위해 최선을 다하고 있습니다. 이 학습 경로에서는 게임 영역으로 지식을 확장하려는 게임, 플랫폼 및 하드웨어 개발자를 위한 게임 접근성에 관한 기본 개념을 소개합니다.