本主题介绍如何使用 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 为用户提供多种方式来与游戏板交互。 如果你有启用了触摸或加速计的设备,则可以使用这些设备移动游戏板。 还可以使用控制器或鼠标控制游戏。
先决条件
谁应该读这个?
如果你有兴趣为 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 应用商店。
Marble Maze 还使用 DirectXMath 库来处理 3D 几何图形并执行物理计算,例如碰撞。 本部分未深入介绍 DirectXMath。 有关 Marble Maze 如何使用 DirectXMath 的详细信息,请参阅源代码。
尽管 Marble Maze 提供了许多可重用组件,但它不是完整的游戏开发框架。 当我们将Marble Maze 组件视为您游戏中可重复使用的组件时,我们会在文档中对此进行强调。
后续步骤
建议从 Marble Maze 示例基础知识 开始,了解 Marble Maze 结构,以及 Marble Maze 源代码遵循的一些编码和样式准则。 下表概述了本节中的文档,以便更轻松地引用它们。
本部分内容
标题 | DESCRIPTION |
---|---|
Marble Maze 示例基础知识 | 概述游戏结构和源代码遵循的一些代码和样式准则。 |
Marble Maze 应用程序结构 | 描述 Marble Maze 应用程序代码的结构,以及 DirectX UWP 应用的结构与传统桌面应用程序的结构有何不同。 |
将视觉内容添加到 Marble Maze 样例 | 介绍使用 Direct3D 和 Direct2D 时要记住的一些关键做法。 此外,还介绍了 Marble Maze 如何将这些做法应用于视觉内容。 |
向 Marble Maze 示例添加输入和交互性 | 介绍 Marble Maze 如何使用加速计、触摸和游戏控制器输入,使用户能够导航菜单并与游戏板交互。 此外,还介绍了在使用输入时要记住的一些最佳做法。 |
将音频添加到 Marble Maze 示例 | 介绍 Marble Maze 如何使用音频向游戏体验添加音乐和声音效果。 |