Windows 游戏开发指南

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

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

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

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

本指南提供可在你开发游戏时提供帮助的端到端的信息和资源集合。 每个部分均按照游戏开发阶段进行组织,因此你在需要时就知道在哪查找信息。

如果你不熟悉在 Windows 或 Xbox 上开发游戏,则入门指南可能是你想要开始的地方。 游戏开发资源部分还提供有关文档、程序和其他有助于创建游戏的资源的高级调查。 如果你想要先看看一些 UWP 代码,请参阅游戏示例

游戏开发资源

从文档到开发人员计划、论坛、博客和示例,游戏开发之路上有很多资源可提供帮助。 下面是在开始开发Windows游戏时要了解的资源。

注意

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

游戏开发文档

在本指南中,你可以查找指向相关文档的深层链接:根据任务、技术和游戏开发阶段进行组织。 若要大致了解可用的内容,下面是用于Windows游戏开发的主要文档门户。

Windows 开发人员中心主要门户 Windows 开发人员中心
开发 Windows 应用 开发 Windows 应用
通用 Windows 平台应用开发 Windows 10 应用的操作方法指南
UWP 游戏的操作方法指南 游戏和 DirectX
DirectX 参考和概述 DirectX 图形和游戏
面向游戏的 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 One 上下载开发人员模式激活应用

如果想要访问更多Xbox Live功能、专用营销和开发支持,并有机会在主Xbox One商店中推出,请应用于ID@Xbox计划。

Xbox Live 创意者计划 了解有关 Xbox Live 创意者计划的详细信息

ID@Xbox

ID@Xbox 计划可帮助符合资格的游戏开发人员自行在 Windows 和 Xbox One 上发布游戏。 若要开发Xbox One,或向Windows游戏添加玩家分数、成就和排行榜等Xbox Live功能,请注册ID@Xbox。 成为一名 ID@Xbox 开发人员,获取所需的工具和支持,来发挥你的创造力并最大可能地取得成功。 建议在合作伙伴中心注册开发人员帐户之前申请 ID@Xbox

ID@Xbox 开发人员计划 独立的 Xbox One 开发人员计划
ID@Xbox 消费者站点 ID@Xbox

Xbox 工具和中间件

Xbox 工具和中间件计划给使用游戏工具和中间件的专业开发人员颁发 Xbox 开发工具包许可证。 同意加入该计划的开发人员可以将其 Xbox XDK 技术共享和分配到其他已获得授权的 Xbox 开发人员。

联系工具和中间件计划 xboxtlsm@microsoft.com

游戏示例

有许多Windows游戏和应用示例可用于帮助你了解Windows游戏功能,并快速开始游戏开发。 示例是定期开发和发布的,因此不要忘记偶尔重新查看示例门户以查看新增功能。 你还可以查看 GitHub 存储库以接收有关更改和新增内容的通知。

通用 Windows 平台示例应用 Windows 通用示例
Direct3D 12 图形示例 DirectX 图形示例
Direct3D 11 图形示例 DirectX SDK 示例
Direct3D 11 第一人称游戏示例 使用 DirectX 创建一款简单的 UWP 游戏
Direct2D 自定义图像效果示例 D2DCustomEffects
Direct2D 渐变网格示例 D2DGradientMesh
Direct2D 照片调整示例 D2DPhotoAdjustment
Xbox 高级技术组公共示例 Xbox ATG 示例
Xbox Live 示例 Xbox Live 示例
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

对于最高性能的 2D 和 3D 图形以及多媒体,可选择 Microsoft DirectX。

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 用作功能完备的呈现图层,以便提供 HTML 的熟悉功能、对 Universal Windows Platform 的访问权限,并支持诸如 AppCache、Web Worker、Canvas、拖放、异步编程和 SVG 等现代 Web 功能。 在后台,HTML 呈现将充分利用 DirectX 硬件加速的功能,使你即使不编写任何额外的代码,也仍然可以从 DirectX 的性能中获益。 如果你精通 Web 开发、移植 Web 游戏,或者想要使用比其他选择更容易接近的语言和图形层,则 HTML5 是一个不错的选择。 HTML5 与 JavaScript 结合使用,但也可用于调用使用 C# 或 C++/CX 创建的组件。

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

组合呈现技术

Microsoft DirectX 图形基础结构 (DXGI) 跨多个图形技术提供互操作性和兼容性。 对于高性能图形,可以合并 XAML 和 DirectX;将 XAML 用于菜单和其他简单 UI,以及用于呈现复杂 2D 和 3D 场景的 DirectX。 DXGI 还可在 Direct2D、Direct3D、DirectWrite、DirectCompute 和 Microsoft 媒体基础之间提供兼容性。

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# 具有许多高级语言功能,例如多态性、委托、lambda、关闭、迭代器方法、协变和Language-Integrated查询 (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 是一个低级别图形 API,使用熟悉的 Direct3D 编程模型,为你处理 GPU 渲染所涉及的大部分复杂工作。 Windows和Xbox One也支持它。 如果你拥有使用 Direct3D 11 编写的现有引擎,并且还没有准备好跳跃到 Direct3D 12,可以在 Direct3D 12 的基础上使用 Direct3D 11 实现一些性能改进。 版本 11.3 及以上版本包含的新渲染和优化功能在 Direct3D 12 也受支持。

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

桥、游戏引擎和中间件

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

PlayFab

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

PlayFab 工具和服务概述
入门 一般入门指南
视频教程系列 有关 PlayFab 核心系统的系列演示视频
配方 受欢迎的游戏机制和设计模式示例
平台 各个平台和游戏引擎的特定文档
GitHub 存储库 获取包括 Android、iOS、Windows、Unity 和 Unreal 等各个平台的脚本和 SDK。
API 文档 直接通过类似 REST 的 Web API 访问 PlayFab 服务
论坛 PlayFab 论坛

Unity

Unity 提供用于创建美丽动人的 2D、3D、VR 和 AR 游戏和应用的平台。 它使你能够快速实现你的创意愿景,并将内容交付给几乎任何媒体或设备。

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

Unity 游戏引擎 Unity - 游戏引擎
获取 Unity 获取 Unity
Windows 的 Unity 文档 Unity 手册/Windows
使用 PlayFab 添加 LiveOps 入门 - 从你的 Unity 游戏发起第一次 PlayFab API 调用
如何使用 Mixer Interactive 为游戏添加交互性 入门指南
适用于 Unity 的 Mixer SDK Mixer Unity 插件
适用于 Unity 的 Mixer SDK 参考文档 Mixer Unity 插件的 API 参考
将你的 Unity 游戏发布到 Microsoft Store 移植指南
缺少与 .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 文档 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 游戏发起第一次 PlayFab API 调用

Unreal Engine

Unreal Engine 是适用于所有类型的游戏和开发人员的完整游戏开发工具套件。 对于要求非常高的控制台和电脑游戏,Unreal Engine 已在全球开发人员中得到广泛的采用。

Unreal Engine 概述 Unreal Engine

BabylonJS

BabylonJS 是一个完整的 JavaScript 框架,供使用 HTML5、WebGL、WebVR 和 Web 音频生成 3D 游戏。

BabylonJS BabylonJS
使用 BabylonJS 生成跨平台 WebGL 游戏 使用 BabylonJS 开发跨平台游戏

移植游戏

如果你拥有一款现有游戏,有很多可用的资源和指南可以帮助你将游戏快速移植到 UWP。

将 Windows 8 应用移植到通用 Windows 平台应用 从 Windows 运行时 8.x 移动到 UWP
将 Windows 8 应用移植到通用 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 移植到 Windows 10 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 平台应用,所以你将从这里开始。

通用 Windows 平台 (UWP) 简介

Windows是通用 Windows 平台 (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 应用触发暂停、恢复和后台事件

设计游戏用户体验

出色的游戏源自于获得灵感的设计。

游戏与应用共享一些常见的用户界面元素和设计原则;但是游戏通常具有独特的外观、感觉和设计目标,用于用户体验。 当游戏设计充分考虑了以下两方面时,你的游戏必然会取得成功:游戏应何时使用经过测试的用户体验以及应何时打破常规进行创新? 你为游戏所选择的呈现技术(DirectX、XAML、HTML5 或这三者的任意组合)可能会影响实现细节,但在大多数情况下,你所应用的设计准则不受该选择的影响。

除用户体验设计之外,诸如级别设计、速度、全局设计和其他方面等游戏玩法设计本身就是一种艺术形式:这由你和你的团队决定,本开发指南中未对其进行介绍。

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 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 (GitHub问题中的 Direct3D 12 支持) 对 DirectX 12 的支持

合作伙伴提供的 DirectX 资源

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

Nvidia:DX12 注意事项(博客文章) DX12 Do's and Don'ts, Updated!
Intel:使用 DirectX 3D 12 进行并行处理 使用 DirectX 3D 12 进行并行处理
Intel:如何使用 DirectX 12 实现显式多适配器应用程序 DirectX 12 中的多适配器支持
Intel:Intel、苏州 Snail 和 Microsoft 的协作白皮书 教程:将应用迁移到 DirectX 12 – 第 1 部分

生产

在此阶段,你的工作室已完全投入并进入生产周期,整个团队都分发了工作。 通过优化、重构和扩展原型,使其成为完整的游戏。

通知和动态磁贴

磁贴是游戏在“开始”菜单上的表示形式。 磁贴和通知可以吸引玩家的注意力,即使他们当前并未玩你的游戏也是如此。

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

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

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

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

调试、性能优化和监视

为了优化性能,可以在Windows利用游戏模式,通过充分利用其当前硬件的容量,为玩家提供最佳的游戏体验。

Windows Performance Toolkit (WPT) 包含各种性能监控工具,这些工具可生成有关 Windows 操作系统和应用程序的详细性能概况。 这对于监视内存使用情况和提高游戏性能特别有用。 Windows性能Toolkit包含在 Windows SDK 和 Windows ADK 中。 该工具包包含两个独立的工具:Windows Performance Recorder (WPR) 和 Windows Performance Analyzer (WPA)。 ProcDump 是 Windows Sysinternals 的一部分,也是监视 CPU 峰值的命令行实用程序,并且会在游戏崩溃期间生成转储文件。

测试你的代码性能 Azure Test Plans
使用游戏设备信息获取 Xbox 主机类型 游戏设备信息
使用游戏模式 API 独占访问或优先访问硬件资源来提高性能 游戏模式
从 Windows 10 SDK 获取 Windows Performance Toolkit (WPT) Windows 10 SDK
从 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 提供关于发布的游戏的性能、遥测和使用情况分析。 应用程序Insights有助于在发布游戏后检测和解决问题,持续监视和改进使用情况,并了解玩家如何继续与游戏交互。 Application Insights 的工作原理是向你的应用添加一个 SDK,它会将遥测数据发送到 Azure 门户

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

第三方分析和推广解决方案

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

创建和管理内容更新

若要更新已发布的游戏,请提交具有更高版本号的新应用包。 程序包通过提交和认证后将自动作为更新向客户提供。

更新和控制游戏版本 程序包版本编号
游戏程序包管理指南 应用包管理指南

将 Xbox Live 添加到游戏

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

注意

如果你要开发支持 Xbox Live 的作品,则可以在若干选项中选择。 有关各种程序的信息,请参阅选择Xbox Live开发人员计划

Xbox Live 概述 Xbox Live 文档

适合 Xbox Live 创意者计划中的开发人员

概述 加入创意者计划

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

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

其他资源

来自 GDC 和 //build 等主要会议的视频 游戏开发视频