DirectX용 C++로 빌드된 UWP(유니버설 Windows 플랫폼) 게임인 Marble Maze 개발
이 항목에서는 DirectX 및 C++를 사용하여 3D UWP(유니버설 Windows 플랫폼) 게임을 만드는 방법을 설명합니다. Marble Maze라는 게임은 태블릿, 기존 데스크톱 PC, 랩톱 PC와 같은 다양한 폼 팩터를 수용합니다.
참고 항목
Marble Maze 소스 코드를 다운로드하려면 GitHub 샘플을 참조하세요.
Important
Marble Maze는 UWP 게임을 만드는 모범 사례인 디자인 패턴을 보여 줍니다. 개발 중인 게임의 고유한 요구 사항 및 관행에 맞게 많은 구현 세부 정보를 조정할 수 있습니다. 요구 사항에 더 잘 맞는 경우 다른 기술이나 라이브러리를 자유롭게 사용할 수 있습니다. (그러나 항상 코드가 Windows 앱 인증 키트를 통과하도록 합니다.) 여기서 사용된 구현이 성공적인 게임 개발에 필수적이라고 판단되는 경우 이 설명서에서 강조합니다.
Marble Maze 소개
Marble Maze가 선택된 이유는 비교적 기본적이면서도 대부분의 게임에 있는 다양한 기능을 보여 주기 때문입니다. 그래픽, 입력 처리 및 오디오를 사용하는 방법을 보여 줍니다. 또한 규칙 및 목표와 같은 게임 메커니즘을 보여 줍니다.
Marble Maze는 일반적으로 구멍이 포함된 상자와 강철 또는 유리 구슬로 구성된 테이블 미로 게임과 비슷합니다. Marble Maze의 목표는 테이블 버전과 마찬가지로, 미로를 기울여 구슬이 구멍에 빠지지 않도록 하면서 최대한 짧은 시간 내에 구슬을 미로 시작부터 끝까지 보내는 것입니다. Marble Maze는 검사점 개념을 추가합니다. 구슬이 구멍에 빠지면 구슬이 전달된 마지막 검사점 위치에서 게임이 다시 시작됩니다.
Marble Maze는 사용자가 게임판을 조작하는 여러 가지 방법을 제공합니다. 터치 지원 또는 가속도계 사용 디바이스가 있는 경우 해당 디바이스를 사용하여 게임 보드를 이동할 수 있습니다. 컨트롤러나 마우스를 사용하여 게임 플레이를 제어할 수도 있습니다.
필수 조건
- Windows 10 크리에이터스 업데이트
- Microsoft Visual Studio 2017
- C++ 프로그래밍 지식
- DirectX 및 DirectX 용어에 대한 이해
- COM에 대한 기본 지식
이 문서의 대상
3D 게임 또는 그래픽을 많이 사용하는 Windows 10용 기타 애플리케이션을 만들려는 경우에 유용합니다. 이 설명서에서 간략하게 설명하는 원칙과 사례를 사용하여 사용자 고유의 UWP 게임을 만들 수 있기를 바랍니다. C++ 및 DirectX 프로그래밍에 대한 배경 지식이나 관심이 많으면 이 설명서를 최대한 활용할 수 있습니다. DirectX 사용 경험이 없는 경우 유사한 3D 그래픽 프로그래밍 환경의 사용 경험이 있어도 도움이 될 수 있습니다.
연습: DirectX를 사용하여 간단한 UWP 게임 만들기에서는 DirectX 및 C++를 사용하여 기본적인 3D 슈팅 게임을 구현하는 다른 샘플에 대해 설명합니다.
이 설명서에서 다루는 내용
이 설명서에서는 다음 방법을 설명합니다.
- Windows 런타임 API 및 DirectX를 사용하여 UWP 게임을 만듭니다.
- Direct3D 및 Direct2D를 사용하여 모델, 텍스처, 꼭짓점 및 픽셀 셰이더, 2D 오버레이 등의 시각적 콘텐츠 작업을 합니다.
- 터치, 가속도계 및 게임 컨트롤러와 같은 입력 메커니즘을 통합합니다.
- XAudio2를 사용하여 음악 및 사운드 효과를 통합합니다.
이 설명서에서 다루지 않는 내용
이 설명서에서는 게임 개발의 다음과 같은 측면을 다루지 않습니다. 이러한 측면을 다루는 추가 리소스가 이어집니다.
- 3D 게임 디자인 원칙
- C++ 또는 DirectX 프로그래밍 기본 사항.
- 텍스처, 모델 또는 오디오와 같은 리소스를 디자인하는 방법.
- 게임의 동작 또는 성능 문제를 해결하는 방법.
- 세계의 다른 부분에서 사용하기 위해 게임을 준비하는 방법.
- 게임을 인증하고 Microsoft Store에 게시하는 방법
또한 Marble Maze는 DirectXMath 라이브러리를 사용하여 3D 기하 도형 작업을 하고 충돌 등의 물리학 계산을 수행합니다. DirectXMath는 이 섹션에서 자세히 다루지 않습니다. Marble Maze에서 DirectXMath를 사용하는 방법에 대한 자세한 내용은 소스 코드를 참조하세요.
Marble Maze는 많은 재사용 가능 구성 요소를 제공하지만 전체 게임 개발 프레임워크는 아닙니다. Marble Maze 구성 요소가 게임에 재사용 가능한 경우 설명서에서 강조됩니다.
다음 단계
Marble Maze 소스 코드가 따르는 코딩 및 스타일 지침과 Marble Maze 구조에 대해 알아보려면 Marble Maze 샘플 기본 사항에서 시작하는 것이 좋습니다. 다음 표에서는 보다 쉽게 참조할 수 있도록 이 섹션의 문서를 간략하게 설명합니다.
이 섹션의 내용
타이틀 | 설명 |
---|---|
Marble Maze 샘플 기본 사항 | 게임 구조에 대한 개요와 소스 코드가 따르는 코드 및 스타일 지침 중 일부를 제공합니다. |
Marble Maze 애플리케이션 구조 | Marble Maze 애플리케이션 코드가 구성된 방식 및 DirectX UWP 앱의 구조와 일반적인 데스크톱 애플리케이션 구조 간의 차이점에 대해 설명합니다. |
Marble Maze 샘플에 시각적 콘텐츠 추가 | Direct3D 및 Direct2D를 사용할 때 유의해야 할 몇 가지 주요 사례를 설명합니다. 또한 Marble Maze가 시각적 콘텐츠에 대해 이러한 사례를 적용하는 방법을 설명합니다. |
Marble Maze 샘플에 입력 및 대화형 기능 추가 | Marble Maze가 가속도계, 터치 및 게임 컨트롤러 입력과 함께 작동하여 사용자가 메뉴를 탐색하고 게임 보드와 상호 작용할 수 있도록 하는 방법을 설명합니다. 또한 입력으로 작업할 때 유의해야 할 몇 가지 모범 사례에 대해서도 설명합니다. |
Marble Maze 샘플에 오디오 추가 | 게임 환경에 음악과 소리 효과를 추가하기 위해 Marble Maze가 오디오를 사용하는 방식에 대해 설명합니다. |