Разработка мрамора лабиринта — универсальная платформа Windows (UWP), созданная с помощью C++ для DirectXDeveloping Marble Maze—a Universal Windows Platform (UWP) game built with C++ for DirectX

В этом разделе описывается, как использовать DirectX и C++ для создания игры 3D универсальная платформа Windows (UWP).This topic describes how to use DirectX and C++ to create a 3D Universal Windows Platform (UWP) game. Игра, именуемая лабиринтом мрамора, охватывает несколько форм, таких как планшеты, традиционные настольные ПК и Ноутбуки.The game, called Marble Maze, embraces multiple form factors such as tablets, traditional desktop PCs, and laptop PCs.

Примечание

Чтобы скачать исходный код лабиринта для мраморов , см. пример на сайте GitHub.To download the Marble Maze source code, see the sample on GitHub.

Важно!

Лабиринт мрамора иллюстрирует шаблоны проектирования, которые мы будем рассматривать как рекомендации по созданию игр UWP.Marble Maze illustrates design patterns that we consider to be best practices for creating UWP games. Многие особенности этой реализации вы сможете приспособить к собственной практике и требованиям той игры, которую вы разрабатываете.You can adapt many of the implementation details to fit your own practices and the unique requirements of the game you are developing. Вы можете без колебаний пользоваться другими методиками или библиотеками, если они лучше отвечают вашим потребностям.Feel free to use different techniques or libraries when those better suit your needs. (Но обязательно позаботьтесь о том, чтобы ваш код успешно проходил тестирование с использованием комплекта сертификации приложений для Windows.) Когда мы полагаем, что реализация тех или иных аспектов в игре Marble Maze имеет первостепенное значение для успешной разработки игр, мы подчеркиваем это в руководстве.(However, always ensure that your code passes the Windows App Certification Kit.) When we consider an implementation used here to be essential for successful game development, we emphasize it in this documentation.

Знакомство с лабиринтом мрамораIntroducing Marble Maze

Мы решили мрамор лабиринта , так как он относительно простой, но по-прежнему демонстрирует широкий спектр функций, которые можно найти в большинстве игр.We chose Marble Maze because it is relatively basic, but still demonstrates the breadth of features that are found in most games. Она показывает работу с графикой, обработку ввода и воспроизведение звука.It shows how to use graphics, input handling, and audio. Кроме того, она демонстрирует игровую механику, в частности правила и цели.It also demonstrates game mechanics such as rules and goals.

Лабиринт в виде мрамора напоминает лабиринс игру «таблица-верхняя», которая обычно создается на основе прямоугольника, содержащего отверстия и стальной или стеклянный мрамор.Marble Maze resembles the table-top labyrinth game that is typically constructed from a box that contains holes and a steel or glass marble. Цель лабиринта мрамора та же, что и для таблицы — верхняя версия: раснаклонить лабиринт, чтобы попытаться создать на мраморе с начала до конца лабиринта как можно меньшее время, не позволяя мрамору попасть в любые отверстия.The goal of Marble Maze is the same as the table-top version: tilt the maze to guide the marble from the start to the end of the maze in as little time as possible, without letting the marble fall into any of the holes. Лабиринт мрамора добавляет концепцию контрольных точек.Marble Maze adds the concept of checkpoints. Если шарик падает в отверстие, игра перезапускается из последней контрольной точки, над которой прошел шарик.If the marble falls into a hole, the game is restarted at the last checkpoint location that the marble passed over.

Лабиринт мрамора предлагает несколько способов взаимодействия пользователя с игровой доской.Marble Maze offers multiple ways for a user to interact with the game board. Если у вас имеется устройство с сенсорным экраном или акселерометром, вы можете пользоваться ими для перемещения игровой доски.If you have a touch-enabled or accelerometer-enabled device, you can use those devices to move the game board. Можно управлять игрой при помощи контроллера Xbox One или мыши.You can also use an Xbox One controller or a mouse to control game play.

Снимок экрана игры Marble Maze.

Предварительные требованияPrerequisites

  • Обновление Windows 10 Creators UpdateWindows 10 Creators Update
  • Microsoft Visual Studio 2017Microsoft Visual Studio 2017
  • Умение программировать на C++C++ programming knowledge
  • Знание основ и терминологии DirectXFamiliarity with DirectX and DirectX terminology
  • Знание основ COMBasic knowledge of COM

Для кого предназначена эта статья?Who should read this?

Если вы заинтересованы в создании трехмерных игр или других ресурсоемких приложений для Windows 10, это предназначено для вас.If you're interested in creating 3D games or other graphics-intensive applications for Windows 10, this is for you. Надеемся, что вы воспользуетесь изложенными здесь принципами и методиками для создания собственной игры UWP.We hope you use the principles and practices that this documentation outlines to create your own UWP game. Опыт программирования на C++ с использованием DirectX или сильный интерес к этой тематике поможет вам понять большую часть этого руководства.A background or strong interest in C++ and DirectX programming will help you get the most out of this documentation. Даже если у вас нет опыта работы с DirectX, вам все равно пригодится это руководство, если вы уже имели дело с подобными языками программирования трехмерной графики.If you don't have experience with DirectX, you can still benefit if you have experience with similar 3D graphics programming environments.

В документе Пошаговое руководство. Создание простой игры UWP с DirectX . описание другого примера, в котором реализована базовая игра по трехмерной графике с помощью DirectX и C++.The document Walkthrough: create a simple UWP game with DirectX describes another sample that implements a basic 3D shooting game by using DirectX and C++.

Что входит в руководство?What this documentation covers

Это руководство научит вас следующим приемам.This documentation teaches how to:

  • Использование API среды выполнения Windows и DirectX для создания игры UWP.Use the Windows Runtime API and DirectX to create a UWP game.
  • Используйте Direct3D и Direct2D для работы с визуальным содержимым, например моделями, текстурами, шейдерами вершин и пикселей, а также 2D-наложений.Use Direct3D and Direct2D to work with visual content such as models, textures, vertex and pixel shaders, and 2D overlays.
  • Встраивать механизмы ввода, такие как сенсорный ввод, акселерометр и контроллер Xbox One.Integrate input mechanisms such as touch, accelerometer, and the Xbox One controller.
  • Использовать XAudio2 для встраивания музыки и звуковых эффектов.Use XAudio2 to incorporate music and sound effects.

Что не входит в руководство?What this documentation does not cover

В этом руководстве не рассматриваются перечисленные ниже аспекты разработки игр,This documentation does not cover the following aspects of game development. которым посвящены дополнительные ресурсы.These aspects are followed by additional resources that cover them.

  • Принципы проектирования трехмерных игр.3D game design principles.
  • Основы программирования на C++ и DirectX.C++ or DirectX programming basics.
  • Создание ресурсов, таких как текстуры, модели и звуки.How to design resources such as textures, models, or audio.
  • Диагностика и устранение проблем, связанных с логикой работы и производительностью игры.How to troubleshoot behavior or performance issues in your game.
  • Подготовка игры для использования в других регионах мира.How to prepare your game for use in other parts of the world.
  • Сертификация и публикация игры в Microsoft Store.How to certify and publish your game to the Microsoft Store.

Лабиринт мрамора также использует библиотеку директксмас для работы с трехмерной геометрией и выполнения физических вычислений, таких как конфликты.Marble Maze also uses the DirectXMath library to work with 3D geometry and perform physics calculations, such as collisions. DirectXMath не рассматривается подробно в этом разделе.DirectXMath is not covered in-depth in this section. Дополнительные сведения о том, как лабиринт мрамора использует директксмас, см. в исходном коде.For details about how Marble Maze uses DirectXMath, refer to the source code.

Хотя лабиринт мрамора предоставляет множество многократно используемых компонентов, это не полная инфраструктура разработки игр.Although Marble Maze provides many reusable components, it is not a complete game development framework. Когда мы рассмотрим компонент лабиринта мрамора для использования в игре, мы подчеркните его в документации.When we consider a Marble Maze component to be reusable in your game, we emphasize it in the documentation.

Дальнейшие действияNext steps

Мы рекомендуем приступить к работе с примерами лабиринта , чтобы узнать структуру лабиринта мраморов и некоторые рекомендации по написанию кода и стилю, которые следует использовать в исходном коде лабиринта мраморов .We recommend that you start with Marble Maze sample fundamentals to learn about the Marble Maze structure and some of the coding and style guidelines that the Marble Maze source code follows. Документы, перечисленные в этом разделе, сведены в таблицу ниже, чтобы вам было удобнее к ним обращаться.The following table outlines the documents in this section so that you can more easily refer to them.

Содержание разделаIn this section

ЗаголовокTitle ОписаниеDescription
Основные характеристики образца кода Marble MazeMarble Maze sample fundamentals Обзор структуры игры, а также некоторых соглашений о приемах программирования и стиле, которые соблюдаются в коде.Provides an overview of the game structure and some of the code and style guidelines that the source code follows.
Структура приложения Marble MazeMarble Maze application structure Описывает, как структурирован код приложения лабиринта мрамора и как структура приложения UWP для DirectX отличается от структуры традиционного классического приложения.Describes how the Marble Maze application code is structured and how the structure of a DirectX UWP app differs from that of a traditional desktop application.
Добавление визуального содержимого в образец Marble MazeAdding visual content to the Marble Maze sample Здесь излагаются некоторые важные рекомендации, которые следует иметь в виду при работе с Direct3D и Direct2D,Describes some of the key practices to keep in mind when you work with Direct3D and Direct2D. Также описывается, как лабиринты в мраморе применяют эти методики к визуальному содержимому.Also describes how Marble Maze applies these practices for visual content.
Добавление ввода и интерактивной функциональности в образец Marble MazeAdding input and interactivity to the Marble Maze sample Описание работы лабиринта мрамора с акселерометр, сенсорным входом и одним контроллером Xbox для предоставления пользователям возможности навигации по меню и взаимодействию с игровой доской.Describes how Marble Maze works with accelerometer, touch, and Xbox One controller inputs to enable users to navigate menus and interact with the game board. Излагаются также некоторые важные рекомендации, которые следует иметь в виду при работе с вводом.Also describes some of the best practices to keep in mind when you work with input.
Добавление звука в пример Marble MazeAdding audio to the Marble Maze sample Описание работы лабиринта мрамора с аудио для добавления музыки и звуковых эффектов в среду игры.Describes how Marble Maze works with audio to add music and sound effects to the game experience.