Windows 游戏开发指南

欢迎使用 Windows 游戏开发指南!

本指南提供了你在开发通用 Windows 平台 (UWP) 游戏时所需的端到端资源和信息集合。 本指南的英语(美国)版本以 PDF 格式提供。

通用 Windows 平台 (UWP) 游戏开发简介

创建 Windows 游戏后,你便有机会通过电脑和 Xbox One 接触全球数百万名玩家。 借助 Windows 上的 Xbox、Xbox Live、跨设备多人游戏、令人惊艳的游戏社区以及通用 Windows 平台 (UWP) 和 DirectX 12 等强大的新功能,Windows 游戏可吸引所有年龄段和类型的玩家。 通用 Windows 平台 (UWP) 为游戏提供跨 Windows 设备的兼容性,并提供适用于电脑和 Xbox One 的通用 API,以及根据每种设备体验定制游戏的工具和选项。

本指南提供了端到端的信息和资源集合,在你开发游戏时可为你提供帮助。 本指南的章节根据游戏开发阶段进行组织,因此你知道在何处找到所需的信息。

如果你不太熟悉开发 Windows 或 Xbox 游戏,可以从入门指南开始。 游戏开发资源部分还提供了对创建游戏有帮助的文档、计划和其他资源的概要调查。 如果你想首先查看一些 UWP 代码,请参阅游戏示例

游戏开发资源

从文档到开发人员计划、论坛、博客和示例,有许多资源可帮助你开启游戏开发之旅。 下面是在开始开发 Windows 游戏时要了解的资源综述。

注意

某些功能是通过各种计划进行管理的。 本指南涵盖广泛的资源,因此你可能会发现有些资源无法访问,具体取决于你参与的计划或特定的开发角色。 例如,指向 developer.xboxlive.comforums.xboxlive.comxdi.xboxlive.com 或游戏开发人员网络 (GDN) 的链接。 有关 Microsoft 合作信息,请参阅开发人员计划

游戏开发文档

在整篇指南中,你都可以找到按任务、技术和游戏开发阶段组织的相关文档的深度链接。 为了让你全面了解可用内容,以下是有关 Windows 游戏开发的主要文档门户。

Windows 开发人员中心主门户 Windows 开发人员中心
开发 Windows 应用 开发 Windows 应用
通用 Windows 平台应用开发 通用 Windows 平台文档
UWP 游戏操作指南 游戏和 DirectX
DirectX 参考和概述 DirectX 图形和游戏
面向游戏的 Azure 使用 Azure 构建和缩放游戏
Azure PlayFab 实时游戏的完整后端解决方案
Xbox One 上的 UWP 在 Xbox One 上构建 UWP 应用
HoloLens 上的 UWP 在 HoloLens 上构建 UWP 应用
Xbox Live 文档 Xbox Live 开发人员指南
Xbox One 开发文档 (XGD) Xbox One 开发
Xbox One 开发白皮书 (XGD) 白皮书
Mixer Interactive 文档 为游戏添加交互性

合作伙伴中心

在合作伙伴中心以开发人员身份注册是发布 Windows 游戏的第一步。 开发人员帐户让你可以保留游戏名称和将免费或付费游戏提交到适用于所有 Windows 设备的 Microsoft Store。 使用开发人员帐户来管理游戏和游戏内产品、获取详细分析,并启用可为全球玩家创建极佳体验的服务。

Microsoft 还提供了多个开发人员计划来帮助你开发和发布 Windows 游戏。 我们建议在注册合作伙伴中心帐户之前查看是否有适合你的计划。 有关详细信息,请转到开发人员计划

开发人员计划

Microsoft 提供了多个开发人员计划来帮助你开发和发布 Windows 游戏。 如果你想要开发适用于 Xbox One 的游戏并在游戏中集成 Xbox Live 功能,请考虑加入开发人员计划。 若要在 Microsoft Store 中发布游戏,你还需要在合作伙伴中心中创建开发人员帐户。

Xbox Live 创意者计划

利用 Xbox Live 创意者计划,任何人都可以将 Xbox Live 集成到其游戏中并发布到 Xbox One 和 Windows。 标准 Microsoft Store 策略之外存在简化的认证过程,但不需要概念审批。

在 Xbox Live 创意者计划中,使用零售硬件即可部署、设计和发布游戏,而无需专用的开发工具包。 若要开始,请在 Xbox One 上下载开发模式激活应用

如果你想要访问主 Xbox One 应用商店中特别推荐的更多 Xbox Live 功能、专门的营销和开发支持和机会,请申请 ID@Xbox 计划。

Xbox Live 创意者计划 详细了解 Xbox Live 创意者计划

ID@Xbox

ID@Xbox 计划可帮助合格的游戏开发人员在 Windows 和 Xbox One 上自行发布游戏。 如果你想要开发适用于 Xbox One 的游戏,或将诸如玩家分数、成就和排行榜等 Xbox Live 功能添加到 Windows 游戏,请注册 ID@Xbox。 成为 ID@Xbox 开发人员即可获得所需的工具和支持,以挥洒创意并最大程度地取得成功。 建议先申请 ID@Xbox,然后再在合作伙伴中心注册开发人员帐户。

ID@Xbox 开发者计划 Xbox One 独立开发人员计划
ID@Xbox 使用者站点 ID@Xbox

游戏示例

有许多 Windows 游戏和应用示例可以帮助你了解 Windows 游戏功能和快速开始开发游戏。 我们会定期开发和发布示例,所以请不要忘记时常返回示例门户来查看新增内容。 你还可以查看 GitHub 存储库,以获取有关更改和新增内容的通知。

通用 Windows 平台示例应用 Windows-universal-samples
Direct3D 12 图形示例 DirectX-Graphics-Samples
Direct3D 11 图形示例 directx-sdk-samples
Direct3D 11 第一人称游戏示例 使用 DirectX 创建一款简单的 UWP 游戏
Direct2D 自定义图像效果示例 D2DCustomEffects
Direct2D 渐变网格示例 D2DGradientMesh
Direct2D 照片调整示例 D2DPhotoAdjustment
Xbox 高级技术组公共示例 Xbox-ATG-Samples
Xbox Live 示例 xbox-live-samples
Xbox One 游戏示例 (XGD) 示例
Windows 游戏示例(MSDN 代码库) Microsoft Store 游戏示例
JavaScript 2D 游戏示例 用 JavaScript 创建 UWP 游戏
JavaScript 3D 游戏示例 使用 three.js 创建 3D JavaScript 游戏
MonoGame 2D UWP 游戏示例 用 MonoGame 2D 创建 UWP 游戏

开发人员论坛

若要提问和回答游戏开发问题以及联系游戏开发社区,开发人员论坛是一个不错的选择。 论坛也是绝佳的资源,在其中可以找到开发人员在过去遇到并解决的难题的解答。

发布应用和游戏开发人员论坛 发布和应用内广告
UWP 应用开发人员论坛 开发通用 Windows 平台应用
桌面应用程序开发人员论坛 Windows 桌面应用程序论坛
DirectX Microsoft Store 游戏(存档的论坛文章) 用 DirectX 构建 Microsoft Store 游戏(存档)
Windows 10 托管合作伙伴开发人员论坛 XBOX 开发人员论坛:Windows 10
Xbox Live 论坛 Xbox Live 开发论坛
PlayFab 论坛 PlayFab 论坛

开发人员博客

开发人员博客是提供有关游戏开发的最新信息的另一种极佳资源。 在博客中可以找到有关新功能、实施细节、最佳做法、体系结构背景等的文章。

构建 Windows 应用(博客) 构建 Windows 应用
Windows 10(博客文章) 有关 Windows 10 的文章
Visual Studio 工程团队博客 Visual Studio 博客
Visual Studio 开发人员工具博客 开发人员工具博客
Somasegar 开发人员工具博客 Somasegar 的博客
DirectX 开发人员博客 DirectX 开发人员博客
DirectX 12 简介(博客文章) DirectX 12
Visual C++ 工具团队博客 Visual C++ 团队博客
PIX 团队博客 Windows 和 Xbox 上 DirectX 12 游戏的性能优化和调试
通用 Windows 应用部署团队博客 有关构建和部署 UWP 应用的团队博客

概念和规划

在概念和计划阶段,需要确定游戏的外观以及将其创造出来需要使用的技术和工具。

游戏开发技术概述

当你开始开发适用于 UWP 的游戏时,有多种图形、输入、音频、网络、实用工具和库选项可供使用。

如果你确定了要在游戏中使用的所有技术,那么一切已准备就绪。 如果尚未确定,请参阅适用于 UWP 应用的游戏技术指南,其中对许多可用技术提供了全面概述。我们强烈建议阅读该指南,以了解这些选项及其组合方式。

UWP 游戏技术调查 适用于 UWP 应用的游戏技术

游戏规划

以下是在规划游戏时需考虑的一些概要概念和规划主题。

使游戏易于访问 游戏的辅助功能
使用云构建游戏 游戏云
游戏变现 通过游戏盈利

选择图形技术和编程语言

有多种编程语言和图形技术可在 Windows 游戏中使用。 你所采用的路径具体取决于你正在开发的游戏类型、你的开发工作室的经验和偏好,以及你的游戏的特定功能要求。 是要使用 C#、C++ 还是 JavaScript? 或者 DirectX、XAML 还是 HTML5?

DirectX

Microsoft DirectX 适合用于高性能 2D 和 3D 图形与多媒体。

DirectX 12 比以往的任何版本更快且更高效。 Direct3D 12 提供更丰富的场景、更多的对象、更复杂的效果,并且能全面利用 Windows 电脑和 Xbox One 上的现代 GPU 硬件。

如果你想要使用 Direct3D 11 中熟悉的图形管道,仍然可以从添加到 Direct3D 11.3 的新呈现功能和优化功能中获益。 如果你是一名久经考验的基于 Win32 的桌面版 Windows API 开发人员,你仍可以对 Windows 游戏使用该选项。

DirectX 的丰富功能和深度平台集成提供了最苛刻游戏所需的计算能力和性能。

用于 UWP 开发的 DirectX DirectX 编程
教程:如何创建 UWP DirectX 游戏 使用 DirectX 创建一款简单的 UWP 游戏
DirectX 概述和参考 DirectX 图形和游戏
Direct3D 12 编程指南和参考 Direct3D 12 图形
图形和 DirectX 12 开发视频(YouTube 频道) Microsoft DirectX 12 和图形教育

XAML

XAML 是一种易用的声明性 UI 语言,具有动画、情节提要、数据绑定、基于可缩放矢量的图形、动态大小调整和场景图等便利功能。 XAML 非常适合用于游戏 UI、菜单、子画面和 2D 图形。 为了简化 UI 布局,XAML 与 Expression Blend 和 Microsoft Visual Studio 等设计和开发工具兼容。 XAML 通常与 C# 结合使用,但在 C++ 是你的首选语言时,或者你的游戏对 CPU 要求较高时,C++ 也是一个不错的选择。

XAML 平台概述 XAML 平台
XAML UI 和控件 控件、布局和文本

HTML 5

超文本标记语言 (HTML) 是一种常用于网页、应用和富客户端的 UI 标记语言。 Windows 游戏可以使用 HTML5 作为全功能的表示层。HTML5 提供用户熟悉的 HTML 功能、对通用 Windows 平台的访问以及对新式 Web 功能(例如 AppCache、Web Workers、画布、拖放、异步编程和 SVG)的支持。 在幕后,HTML 渲染利用 DirectX 硬件加速的强大功能,因此你仍可以获得 DirectX 的性能优势,而无需编写任何额外的代码。 如果你擅长于 Web 开发、打算移植 Web 游戏或者想要使用与其他选项相比更易获取的语言和图形图层,则 HTML5 是一个不错的选择。 HTML5 可与 JavaScript 一起使用,同时还可以调用以 C# 或 C++/CX 创建的组件。

HTML5 和文档对象模型信息 HTML 和 DOM 参考
HTML5 W3C 建议 HTML5

组合呈现技术

Microsoft DirectX 图形基础结构 (DXGI) 通过多种图形技术提供互操作性和兼容性。 对于高性能图形,你可以将 XAML 与 DirectX 结合使用;可将 XAML 用于菜单和其他简单 UI,并将 DirectX 用于渲染复杂的 2D 和 3D 场景。 DXGI 还提供 Direct2D、Direct3D、DirectWrite、DirectCompute 和 Microsoft Media Foundation 之间的兼容性。

DirectX 图形基础结构编程指南和参考 DXGI
组合 DirectX 和 XAML DirectX 和 XAML 互操作

C++

C++/WinRT 是一种高性能、低开销的语言,可提供速度、兼容性和平台访问的强大组合。 利用 C++/WinRT,可轻松使用 Windows 中所有出色的游戏功能,包括 DirectX 和 Xbox Live。 你还可以重复使用现有的 C++ 代码和库。 C++/WinRT 可创建快捷的本机代码,该代码不会使垃圾回收产生开销,可确保你的游戏拥有出色的性能和低功耗,从而可以延长电池使用时间。 将 C++/WinRT 与 DirectX 或 XAML 结合使用,或使用这两者的组合来创建游戏。

C#

C#(发音为“C Sharp”)是一种新式创新语言,其特点是使用简单、功能强大、类型安全、面向对象。 C# 能够加速开发,同时保留 C 风格语言的熟悉度和表达能力。 尽管 C# 易于使用,但它还具有许多高级语言功能,如多态性、委派、lambdas、关闭、迭代方法、协变以及语言集成查询 (LINQ) 表达式。 如果你要开发面向 XAML 的应用、想要快速开始开发游戏或者拥有 C# 经验,则 C# 是一个绝佳的选择。 C# 主要与 XAML 结合使用,因此如果你想要使用 DirectX,请改为选择 C++,或者编写你游戏的一部分作为与 DirectX 交互的 C++ 组件。 或者,以 Win2D 为例:适用于 C# 和 C++ 的即时模式 Direct2D 图形库。

C# 编程指南和参考 C# 语言参考

使用 Windows 运行时组件合并语言

借助通用 Windows 平台,可轻松将采用不同语言编写的组件结合使用。 使用 C++、C# 或 Visual Basic 创建 Windows 运行时组件,然后通过 JavaScript、C#、C++ 或 Visual Basic 调用这些组件。 这是以所选语言对游戏的某些部分进行编程的极好方法。 借助组件,你也可以使用仅提供特定语言版本的外部库,并使用你已编写的传统代码。

如何创建 Windows 运行时组件 使用 C++/WinRT 创建 Windows 运行时组件

游戏应使用哪个版本的 DirectX?

如果你为游戏选择了 DirectX,则需要确定使用哪个版本:是 Microsoft Direct3D 12 还是 Microsoft Direct3D 11。

DirectX 12 比以往的任何版本更快且更高效。 Direct3D 12 提供更丰富的场景、更多的对象、更复杂的效果,并且能全面利用 Windows 电脑和 Xbox One 上的现代 GPU 硬件。 由于 Direct3D 12 在较低级别工作,因此它能够向专业图形开发团队或有经验的 DirectX 11 开发团队提供最大程度优化图形所需的所有控制。

Direct3D 11.3 是一种低级别 Graph API,它使用用户熟悉的 Direct3D 编程模型,并为你处理 GPU 渲染所涉及的很多复杂工作。 它在 Windows 和 Xbox One 中也受支持。 如果你的现有引擎是用 Direct3D 11 编写的,并且你尚未完全准备好改用 Direct3D 12,你可以使用 Direct3D 11 on 12 来实现一定的性能改进。 版本 11.3+ 包含 Direct3D 12 中也已启用的新渲染和优化功能。

选择 Direct3D 12 还是 Direct3D 11 什么是 Direct3D 12?
Direct3D 11 概述 Direct3D 11 图形
Direct3D 11 on 12 概述 Direct3D 11 on 12

桥、游戏引擎和中间件

根据游戏的需求,使用桥、游戏引擎或中间件可以节省开发和测试时间及资源。 下面是有关桥、游戏引擎和中间件的一些概述和资源。

Azure PlayFab

现在作为 Microsoft 系列一部分的 Azure PlayFab 是一个完整的实时游戏后端平台,同时也是独立工作室发展壮大的一种有效方式。 通过游戏服务、实时分析和 LiveOps 增加收入、提高参与度并加强客户维系,同时减少成本。

PlayFab 工具和服务概述
入门 什么是 PlayFab?
视频教程系列 有关 PlayFab 核心系统的演示视频系列
秘诀 秘籍
GitHub 存储库 获取适用于各种平台(包括 Android、 iOS、Windows、Unity 和 Unreal)的脚本和 SDK。
API 文档 REST API 概述
论坛 PlayFab 论坛

Unity

Unity 提供一个用于创建精美且引人耳目的 2D、3D、VR 和 AR 游戏与应用的平台。 它可以让你快速实现自己的视觉创意,并将你的内容提供到几乎任何媒体或设备。

从 Unity 5.4 开始,Unity 支持 Direct3D 12 开发。

Unity 游戏引擎 Unity - 游戏引擎
获取 Unity 获取 Unity
适用于 Windows 的 Unity 文档 Unity 手册/Windows
使用 PlayFab 添加 LiveOps 快速入门:Unity 中适用于 C# 的 PlayFab 客户端库
如何使用 Mixer Interactive 为游戏添加交互性 入门指南
Mixer SDK for Unity Mixer Unity 插件
Mixer SDK for Unity 参考文档 Mixer Unity 插件的 API 参考
排查缺少与 .NET API 相关的程序集引用的问题 Unity 和 UWP 中缺少 .NET API
将 Unity 游戏发布为通用 Windows 平台应用(视频) 如何将 Unity 游戏发布为 UWP 应用
使用 Unity 制作 Windows 游戏和应用(视频) 使用 Unity 制作 Windows 游戏和应用
使用 Visual Studio 进行 Unity 游戏开发(视频系列) 将 Unity 与 Visual Studio 2015 配合使用

Havok

Havok 模块化的工具和技术套件可帮助游戏创建者达到交互式和沉浸式体验的新级别。 使用 Havok 可以制作高度逼真的物理学效果、交互式模拟效果和令人惊叹的影片。 版本 2015.1 或更高版本正式支持 x86、64 位和 Arm 上 Visual Studio 2015 中的 UWP。

Havok 网站 Havok

MonoGame

MonoGame 是一个开源的跨平台游戏开发框架,最初基于 Microsoft 的 XNA Framework 4.0。 Monogame 目前支持 Windows 和 Xbox,以及 Linux、macOS、iOS、Android 和多个其他平台。

MonoGame 访问网站
MonoGame 文档 访问文档
Monogame 版本 通过 NuGet 获取最新版本

Cocos2d

Cocos2d-x 是一个跨平台的开源游戏开发引擎和工具套件,支持构建 UWP 游戏。 从版本 3 开始,还会添加 3D 功能。

Cocos2d-x 什么是 Cocos2d-X?
Cocos2d-x 程序员指南 Cocos2d-x 程序员指南
Windows 10 上的 Cocos2d-x(博客文章) 在 Windows 10 上运行 Cocos2d-x
使用 PlayFab 添加 LiveOps Cocos2D-x 快速入门

Unreal Engine

Unreal Engine 是面向所有类型的游戏和开发人员推出的一整套游戏开发工具。 世界各地的游戏开发人员都喜欢使用 Unreal Engine 来开发要求最苛刻的控制台和电脑游戏。

Unreal Engine 概述 Unreal Engine

BabylonJS

BabylonJS 是一个完整的 JavaScript 框架,在其中能够用 HTML5、WebGL、WebVR 和 Web Audio 构建 3D 游戏。

BabylonJS BabylonJS
使用 BabylonJS 构建跨平台的 WebGL 游戏 使用 BabylonJS 开发跨平台游戏

移植游戏

有许多资源和指南可以帮助你快速将现有游戏移植到 UWP。

将 Windows 8 应用移植到通用 Windows 平台应用 从 Windows 运行时 8.x 移动到 UWP
将 Windows 8 应用移植到通用 Windows 平台应用(视频) 将 Windows 8.1 应用移植到 Windows 10
将 iOS 应用移植到通用 Windows 平台应用 从 iOS 移到 UWP
将 Silverlight 应用移植到通用 Windows 平台应用 从 Windows Phone Silverlight 移动到 UWP
从 XAML 或 Silverlight 移植到通用 Windows 平台应用(视频) 将应用从 XAML 或 Silverlight 移植到 Windows 10
将 Xbox 游戏移植到通用 Windows 平台应用 Xbox One 上的 UWP
从 DirectX 9 移植到 DirectX 11 从 DirectX 9 移植到通用 Windows 平台 (UWP)
从 Direct3D 11 移植到 Direct3D 12 从 Direct3D 11 移植到 Direct3D 12
从 OpenGL ES 移植到 Direct3D 11 从 OpenGL ES 2.0 移植到 Direct3D 11
使用 ANGLE 从 OpenGL ES 移植到 Direct3D 11 ANGLE
UWP 中的经典 Windows API 等效项 通用 Windows 平台 (UWP) 应用中的 Windows API 替代项

原型制作和设计

确定要创建的游戏类型以及用于构建游戏的工具和图形技术后,可以随时开始进行设计和原型制作。 从本质上讲,你的游戏就是一个通用 Windows 平台应用,因此首先需要创建一个 UWP 应用。

通用 Windows 平台 (UWP) 简介

Windows 是通用 Windows 平台 (UWP) 的基地。UWP 在 Windows 设备上提供一个公用 API 平台。 UWP 发展和扩展了 Windows 运行时 (WinRT) 模型,将其磨练成了一个有凝聚力的统一核心。 面向 UWP 的游戏可以调用所有设备通用的 WinRT API。 由于 UWP 提供有保证的 API 层,因此你可以选择创建一个将在 Windows 设备上安装的应用包。 如果需要,游戏仍可以调用特定于运行游戏的设备的 API(包括 Win32 和 .NET 中的一些经典 Windows API)。

下面是一些高质量的指南,其中详细介绍了通用 Windows 平台应用,建议阅读这些指南以帮助了解该平台。

通用 Windows 平台应用简介 什么是通用 Windows 平台应用?

UWP 开发入门

可以快速轻松地为开发通用 Windows 平台应用做好准备。 以下指南可引导你逐步完成该过程。

UWP 开发入门 Windows 应用入门
为 UWP 开发做好准备 准备工作

如果你是 UWP 编程的绝对初学者,并考虑在游戏中使用 XAML(请参阅选择图形技术和编程语言),面向绝对初学者的 Windows 10 开发视频系列是不错的起点。

宣布发表有关使用 XAML 开发 Windows 10 游戏的绝对初学者教程系列(博客文章) Windows 10 开发绝对初学者指南

UWP 开发概念

通用 Windows 平台应用开发概述 开发 Windows 应用
UWP 中的网络编程概述 网络和 Web 服务
在游戏中使用 Windows.Web.HTTP 和 Windows.Networking.Sockets 游戏网络
UWP 中的异步编程概念 异步编程

Windows 桌面 API 和 UWP

以下链接可帮助你在桌面和 UWP 代码之间互操作。

使用现有的 C++ 代码进行 UWP 游戏开发 如何:在 UWP 应用中使用现有的 C++ 代码
适用于 Win32 和 COM API 的 Windows 运行时 API 适用于 UWP 应用的 Win32 和 COM API
UWP 中不支持的 CRT 函数 通用 Windows 平台应用中不支持的 CRT 函数
Windows API 的替代项 通用 Windows 平台 (UWP) 应用中的 Windows API 替代项

进程生存期管理

进程生存期管理(或应用生命周期)描述通用 Windows 平台应用可以转换到的各种激活状态。 游戏可以激活、暂停、恢复或终止,并可以通过多种方式在这些状态之间转换。

处理应用生命周期转换 应用生命周期
使用 Microsoft Visual Studio 触发应用转换 如何在 Visual Studio 中触发 UWP 应用的暂停、恢复和后台事件

设计游戏 UX

优秀的游戏起源于受到启发的设计。

游戏与应用共享一些通用的用户界面元素和设计原则;不过游戏通常具有独特的外观且以用户体验为设计目标。 将深思熟虑的设计应用于这两个方面时,游戏就会取得成功 – 游戏何时应使用经过测试的 UX,何时应采用截然不同的创新设计? 为游戏选择的呈现技术(DirectX、XAML、HTML5 或三者的某种组合)将影响实施细节,但应用的设计原则在很大程度上与这种选择无关。

与 UX 设计不同,游戏方式设计(例如关卡设计、节奏、世界设计和其他方面)本身就是一种艺术形式,这取决于你和你的团队,本开发指南未涵盖此类内容。

UWP 设计基础知识和准则 设计 UWP 应用
应用生命周期状态设计 有关启动、暂停和恢复的 UX 准则
根据 Xbox One 和电视屏幕设计 UWP 应用 针对 Xbox 和电视进行设计

颜色准则和调色板

在游戏中遵循一致的颜色准则可以提高美观度、辅助导航,并且是向玩家告知菜单和 HUD 功能的强大手段。 一致的游戏元素(如警告、危害、XP 和成就)颜色可使 UI 更简洁明了,同时减少对显式标签的需求。

颜色指南 Windows 11 中的颜色

版式

适当使用版式可以增强游戏的许多方面,包括 UI 布局、导航、易读性、氛围、品牌和玩家沉浸感。

版式指南 最佳做法:版式

UI 地图

UI 地图是用流程图表示的游戏导航和菜单布局。 UI 地图可帮助所有参与其中的利益相关方了解游戏的界面和导航路径,并且可在开发周期的早期便揭露出潜在的障碍和死角。

UI 地图指南 最佳做法:UI 地图

游戏音频

下面是关于使用 XAudio2、XAPO 和 Windows Sonic 在游戏中实现音频的指南和参考。 XAudio2 是一款低级别音频 API,可为开发高性能音频引擎提供信号处理和混合的基础。 XAPO API 允许创建跨平台音频处理对象 (XAPO) 以在 Windows 和 Xbox 上用于 XAudio2。 Windows Sonic 音频支持允许向游戏或流媒体应用程序添加 Dolby Atmos for Home Theater、Dolby Atmos for Headphones 和 Windows HRTF 支持。

XAudio2 API XAudio2 的编程指南和 API 参考
创建跨平台音频处理对象 XAPO 概述
音频概念简介 游戏音频
Windows Sonic 概述 空间音效
Windows Sonic 空间音效示例 Xbox 高级技术组音频示例

Direct3D 12

了解 Direct3D 12 的新增功能和不同之处(与 Direct3D 11 相比),以及如何开始使用 Direct3D 12 进行编程。

Direct3D 12 编程指南和参考 Direct3D 12 图形
设置编程环境 Direct3D 12 编程环境设置
如何创建基本组件 创建基本的 Direct3D 12 组件
Direct3D 12 中的变化 从 Direct3D 11 迁移到 Direct3D 12 后的重要变化
如何从 Direct3D 11 移植到 Direct3D 12 从 Direct3D 11 移植到 Direct3D 12
资源绑定概念(包括描述符、描述符表、描述符堆和根签名) Direct3D 12 中的资源绑定
管理内存 Direct3D 12 中的内存管理

DirectX 开发

DirectX 游戏开发指南和参考。

用于 UWP 开发的 DirectX DirectX 编程
教程:如何创建 UWP DirectX 游戏 使用 DirectX 创建一款简单的 UWP 游戏
使用 UWP 应用模型进行 DirectX 交互 应用对象和 DirectX
DirectX 概述和参考 DirectX 图形和游戏
DirectX 12 基础知识(视频) 更好的计算能力和性能:使用 DirectX 12 的游戏

DirectX 工具包和库

DirectX 工具包、DirectX 纹理处理库、DirectXMesh 几何处理库、UVAtlas 库和 DirectXMath 库为 DirectX 开发提供纹理、网格、子画面和其他实用工具功能与帮助程序类。 这些库可以帮助你节省开发时间和精力。

获取 DirectX 12 的 DirectX 工具包 DirectXTK 12
获取 DirectX 11 的 DirectX 工具包 DirectXTK
获取 DirectX 纹理处理库 DirectXTex
获取 DirectXMesh 几何处理库 DirectXMesh
获取用于创建和打包 isochart 纹理图集的 UVAtlas UVAtlas
获取 DirectXMath 库 DirectXMath
DirectXTK 中的 Direct3D 12 支持(GitHub 问题) 对 DirectX 12 的支持

合作伙伴提供的 DirectX 资源

下面是外部合作伙伴创建的其他一些 DirectX 文档。

Nvidia:DX12 宜忌事项(博客文章) DX12 宜忌事项,更新版!
Intel:使用 DirectX 3D 12 实现并行处理 使用 DirectX 3D 12 实现并行处理
Intel:如何使用 DirectX 12 实现显式多适配器应用程序 DirectX 12 中的多适配器支持
Intel:Intel、Suzhou Snail 和 Microsoft 的协作白皮书 教程:将应用迁移到 DirectX 12 – 第 1 部分

生产

在此阶段,你的工作室已完全投入工作并转向生产周期,并且为整个团队分配了工作。 你正在完善、重构和扩展原型,以将其制作成完整的游戏。

通知和动态磁贴

磁贴是游戏在“开始”菜单中的一种呈现方式。 即使玩家当前未玩游戏,磁贴和通知也能引起他们的兴趣。

开发磁贴和锁屏提醒 磁贴、锁屏提醒和通知
演示动态磁贴和通知的示例 通知示例
自适应磁贴模板(博客文章) 自适应磁贴模板 - 架构和文档
设计磁贴和锁屏提醒 磁贴和徽章准则
用于以交互方式开发动态磁贴模板的 Windows 10 应用 通知可视化工具
Visual Studio 的 UWP 磁贴生成器扩展 使用单个图像创建全部所需磁贴的工具
Visual Studio 的 UWP 磁贴生成器扩展(博客文章) 有关使用 UWP 磁贴生成器工具的提示

启用应用内产品(加载项)购买

加载项(应用内产品)是供玩家在游戏中购买的补充项。 加载项可以是游戏级别、项目或玩家可能喜欢的任何其他内容。 如果使用得当,则加载项可以在改进游戏体验的同时,提供收入。 你通过合作伙伴中心定义和发布游戏的加载项,并在你的游戏代码中启用应用内购买。

持久性加载项 启用应用内产品购买
可消耗加载项 启用可消费应用内产品购买
加载项详细信息和提交 加载项提交
监视游戏的加载项销售和统计数据 加载项购置报告

调试、性能优化和监视

若要优化性能,可以利用 Windows 中的游戏模式,通过充分利用当前硬件的能力,为玩家提供可能最佳的游戏体验。

Windows Performance Toolkit (WPT) 由性能监视工具组成,这些工具可生成 Windows 操作系统和应用程序的深入性能配置文件。 此工具包在监视内存使用量和改善游戏性能方面尤其有用。 Windows Performance Toolkit 包含在 Windows SDK 和 Windows ADK 中。 此工具包由两个独立的工具组成:Windows Performance Recorder (WPR) 和 Windows Performance Analyzer (WPA)。 作为 Windows Sysinternals 的一部分的 ProcDump 是一个命令行实用工具,用于监视 CPU 峰值并在游戏崩溃期间生成转储文件。

对代码进行性能测试 Azure Test Plans
使用游戏设备信息获取 Xbox 控制台类型 游戏设备信息
使用游戏模式 API 获取对硬件资源的独占或优先访问权限,以此提高性能 游戏模式
获取 Windows Performance Toolkit (WPT) Windows 性能工具包
从 Windows ADK 获取 Windows Performance Toolkit (WPT) Windows ADK
获取 ProcDump ProcDump

高级 DirectX 技术和概念

DirectX 开发过程的某些环节可能比较繁琐且复杂。 当你的工作进入需要在生产环境中深入了解 DirectX 引擎详细信息或调试复杂性能问题的环节时,本部分中的资源和信息可能有所帮助。

Windows 上 DirectX 12 的性能优化和调试工具 Windows 上的 PIX 简介
Direct3D 12 编程指南 Direct3D 12 图形
组合 DirectX 和 XAML DirectX 和 XAML 互操作

高动态范围 (HDR) 内容开发

构建使用 HDR 全彩功能的游戏内容。

了解如何渲染 HDR 内容并检测当前显示器是否支持此类内容 Direct3D 12 HDR 示例
使用 DirectX 创建和配置高级颜色 Direct2D 高级颜色图像渲染示例

全球化和本地化

针对 Windows 平台开发全球通用的游戏,并了解内置于 Microsoft 热门产品中的国际功能。

为游戏面向全球市场做好准备 全球化和本地化

提交和发布游戏

以下指南和信息可帮助你尽可能顺利地完成发布和提交过程。

发布

你将使用合作伙伴中心来发布和管理你的游戏包。

合作伙伴中心应用发布 发布 Windows 应用
使用 Azure Active Directory (AAD) 将用户添加到合作伙伴中心帐户 创建客户组
为游戏分级(博客文章) 现已推出单一年龄分级系统以简化应用提交

打包和上传

划分和分组内容以启用流式安装 UWP 应用流式安装
创建可选包(例如 DLC 游戏内容) 可选包和相关集创作
打包 UWP 游戏 打包应用
打包 UWP DirectX 游戏 打包 UWP DirectX 游戏
以第三方开发人员的身份打包游戏(博客文章) 创建不允许使用发布者的应用商店帐户进行访问的可上传包
使用 MakeAppx 创建应用包和应用捆绑包 使用应用包生成工具 MakeAppx.exe 创建包
使用 SignTool 对文件进行数字签名 使用 SignTool 对文件进行签名并验证文件中的签名
上传游戏并控制其版本 上传应用包

策略和认证

不要让认证问题延误游戏的发布。 下面是要注意的策略问题和常见认证问题。

Microsoft Store 应用开发人员协议 应用开发人员协议
有关在 Microsoft Store 中发布应用的策略 Microsoft Store 策略
如何避免一些常见的应用认证问题 避免常见的认证失败

应用商店清单 (StoreManifest.xml)

应用商店清单 (StoreManifest.xml) 是一个可以包含在应用包中的可选配置文件。 应用商店清单提供不属于 AppxManifest.xml 文件的其他功能。 例如,如果目标设备不具备指定的最低 DirectX 功能级别或指定的最小系统内存,你可以使用应用商店清单阻止游戏安装。

应用商店清单架构 应用商店清单架构 (Windows 10)

游戏生命周期管理

完成开发并交付游戏并不意味着大功告成。 你可能完成了版本 1 的开发,但你在市场中的游戏之路才刚刚开始。 你需要监视使用情况和错误报告、回复用户的反馈,并为游戏发布更新。

合作伙伴中心分析和推广

合作伙伴中心分析 分析应用性能
了解客户如何在游戏中使用 Xbox 功能 Xbox 分析报告
回复客户评论 回复客户评论
推广游戏的方法 吸引客户并推广应用

Visual Studio Application Insights

Visual Studio Application Insights 为发布的游戏提供性能、遥测和使用情况分析功能。 Application Insights 可帮助你检测和解决游戏发布后出现的问题、持续监视和改善使用情况,并了解玩家如何继续与游戏交互。 Application Insights 的工作原理是将一个 SDK 添加到应用中,该 SDK 会将遥测数据发送到 Azure 门户

应用程序性能和使用情况分析 Application Insights 概述
Azure Monitor Azure Monitor 概述

用于分析和推广的第三方解决方案

使用 GameAnalytics 了解玩家行为 GameAnalytics
将 UWP 游戏连接到 Google Analytics 获取适用于 Google Analytics 的 Windows SDK
使用 Facebook 应用安装广告向 Facebook 用户推广游戏 获取适用于 Facebook 的 Windows SDK
使用 Vungle 将视频广告添加到游戏中 下载 Vungle SDK for Windows

创建和管理内容更新

若要更新发布的游戏,请提交带有更高版本号的新应用包。 该包完成提交和认证过程后,它将自动作为一项更新提供给客户使用。

更新游戏并控制其版本 包版本编号
游戏包管理指南 应用包管理指南

将 Xbox Live 添加到游戏

Xbox Live 是一个卓越的游戏网络,连接着世界各地的数百万玩家。 开发人员获取可以有机增加其游戏受众的 Xbox Live 功能的访问权限,包括 Xbox Live 状态、排行榜、云保存、游戏中心、俱乐部、群聊天、游戏 DVR,等等。

注意

如果你想要开发支持 Xbox Live 的游戏,可以使用多个选项。 有关各种计划的信息,请参阅选择 Xbox Live 开发人员计划

Xbox Live 概述 Xbox Live 文档

面向参与 Xbox Live 创意者计划的开发人员

概述 加入 Xbox Live 创意者计划

适用于 ID@Xbox 计划中托管的合作伙伴和开发人员

概述 面向托管合作伙伴的 Xbox Live 入门
示例 Xbox 游戏开发示例

其他资源

GDC 和 //build 等重大会议的视频 游戏开发视频