이 항목에서는 DirectX 및 C++를 사용하여 UWP(3D 유니버설 Windows 플랫폼) 게임을 만드는 방법을 설명합니다. Marble Maze라고 하는 이 게임은 태블릿, 기존 데스크톱 PC 및 노트북 PC와 같은 여러 폼 팩터를 수용합니다.
비고
Marble Maze 소스 코드를 다운로드하려면 GitHub의 샘플을 참조하세요.
중요합니다
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에 대한 기본 지식
누가 이것을 읽어야 합니까?
Windows 10용 3D 게임 또는 기타 그래픽 집약적 애플리케이션을 만드는 데 관심이 있는 경우 이 작업을 수행할 수 있습니다. 이 설명서에서 간략하게 설명하는 원칙과 사례를 사용하여 사용자 고유의 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가 오디오와 함께 작동하여 게임 환경에 음악 및 사운드 효과를 추가하는 방법을 설명합니다. |