开发 Marble Maze,一款使用 C++ for DirectX 构建的通用 Windows 平台 (UWP) 游戏

本主题介绍了如何使用 DirectX 和 C++ 创建 3D 通用 Windows 平台 (UWP) 游戏。 名为 Marble Maze 的游戏涵盖多个外形规格,如平板电脑、传统台式电脑和笔记本电脑。

注意

若要下载 Marble Maze 源代码,请参阅 GitHub 上的示例

重要

Marble Maze 演示了我们认为是创建 UWP 游戏的最佳做法的设计模式。 你可修改许多实现细节,以符合你自己的做法和你所开发游戏的独特需求。 你可随意使用更适合你的需求的不同技术或库。 (但是,始终要确保你的代码通过 Windows 应用认证工具包。)在我们认为此处所使用的实现对成功的游戏开发至关重要时,我们会在本文中着重介绍它。

Marble Maze 简介

我们选择 Marble Maze 是因为它相对基本,但仍然演示了大多数游戏中包含的丰富功能。 它展示了如何使用图形、输入处理和音频。 它还演示了规则和目标等游戏构成。

Marble Maze 类似于通常由一个包含洞和钢珠或玻璃珠的桌面迷宫游戏。 Marble Maze 的目标与桌面版本相同:倾斜迷宫以引导弹珠在尽可能短的时间内从出发点移动到迷宫终点,并且不让弹珠落入任何洞中。 Marble Maze 添加了检查点的概念。 如果弹珠落入一个洞中,游戏会在弹珠经过的最后一个检查点位置重新开始。

Marble Maze 为用户提供了多种方式来与游戏板交互。 如果你有一个启用了触摸或启用了加速计的设备,可使用这些设备移动游戏板。 还可以使用控制器或鼠标控制游戏。

Marble Maze 游戏的屏幕截图。

先决条件

目标读者

如果你对为 Windows 10 创建 3D 游戏或其他图形密集型应用程序感兴趣,那么本文会对你有帮助。 我们希望你使用本文列出的原则和实践来创建自己的 UWP 游戏。 如果你了解一定的 C++ 和 DirectX 编程背景知识或对其有着强烈的兴趣,这将帮助你充分利用本文档。 如果你没有 DirectX 方面的经验,而有类似的 3D 图形编程环境方面的经验,仍将从本文档受益。

文档操作实例:使用 DirectX 创建简单的 UWP 游戏描述了 另一个使用 DirectX 和 C++ 实现基本 3D 射击游戏的示例。

本文档所涵盖的内容

本文档将介绍如何:

  • 使用 Windows 运行时 API 和 DirectX 创建 UWP 游戏。
  • 使用 Direct3DDirect2D 处理可视内容,例如模型、纹理、顶点和像素着色器,以及 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 源代码遵循的一些编码和风格指南。 下表列出了本节中的文档,以便你更容易查阅它们。

本节内容

Title 说明
Marble Maze 示例基础 概述游戏结构,以及源代码所遵循的一些代码和风格指南。
Marble Maze 应用程序结构 描述如何构建 Marble Maze 应用程序代码,以及 DirectX UWP 应用的结构与传统的桌面应用程序的结构有何不同。
向 Marble Maze 示例添加可视内容 描述在使用 Direct3D 和 Direct2D 时应记住的一些重要实践。 另外还描述了 Marble Maze 如何为可视内容应用这些实践。
向 Marble Maze 添加输入和交互性示例 描述 Marble Maze 如何使用加速计、触控和游戏控制器输入,从而让用户能够在菜单中导航并与游戏板交互。 另外还描述了在处理输入时应记住的一些最佳实践。
向 Marble Maze 添加音频示例 描述 Marble Maze 如何使用音频来向游戏体验添加音乐和声音效果。