Windows 游戏开发指南
本文内容
通用 Windows 平台 (UWP) 游戏开发简介
游戏开发资源
概念和规划
原型制作和设计
生产
提交和发布游戏
游戏生命周期管理
将 Xbox Live 添加到游戏
其他资源
显示另外 5 个
欢迎使用 Windows 游戏开发指南!
备注
在投资基于 UWP 框架开发游戏之前,请注意,UWP 不再处于积极开发状态。 此外,不再在 Xbox 应用商店中接受基于 UWP 的游戏。
本指南提供了你在开发通用 Windows 平台 (UWP) 游戏时所需的端到端资源和信息集合。 本指南的英语(美国)版本以 PDF 格式提供。
本指南提供了端到端的信息和资源集合,在你开发游戏时可为你提供帮助。 本指南的章节根据游戏开发阶段进行组织,因此你知道在何处找到所需的信息。
如果你不熟悉在 Windows 上开发游戏, 则入门 指南可能是你想要开始的地方。 游戏开发资源 部分还提供了对创建游戏有帮助的文档、计划和其他资源的概要调查。 如果你想首先查看一些 UWP 代码,请参阅游戏示例 。
从文档到开发人员计划、论坛、博客和示例,有许多资源可帮助你开启游戏开发之旅。 下面是在开始开发 Windows 游戏时要了解的资源综述。
备注
某些功能是通过各种计划进行管理的。 本指南涵盖广泛的资源,因此你可能会发现有些资源无法访问,具体取决于你参与的计划或特定的开发角色。 有关 Microsoft 合作信息,请参阅开发人员计划 。
在整篇指南中,你都可以找到按任务、技术和游戏开发阶段组织的相关文档的深度链接。 为了让你全面了解可用内容,以下是有关 Windows 游戏开发的主要文档门户。
展开表
在合作伙伴中心以开发人员身份注册 是发布 Windows 游戏的第一步。 开发人员帐户让你可以保留游戏名称和将免费或付费游戏提交到适用于所有 Windows 设备的 Microsoft Store。 使用开发人员帐户来管理游戏和游戏内产品、获取详细分析,并启用可为全球玩家创建极佳体验的服务。
Microsoft 还提供了多个开发人员计划来帮助你开发和发布 Windows 游戏。 我们建议在注册合作伙伴中心帐户之前查看是否有适合你的计划。 有关详细信息,请转到开发人员计划
若要在 Microsoft Store 中发布游戏,你还需要在合作伙伴中心 中创建开发人员帐户。
有许多 Windows 游戏和应用示例可以帮助你了解 Windows 游戏功能和快速开始开发游戏。 我们会定期开发和发布示例,所以请不要忘记时常返回示例门户来查看新增内容。 你还可以查看 GitHub 存储库,以获取有关更改和新增内容的通知。
展开表
若要提问和回答游戏开发问题以及联系游戏开发社区,开发人员论坛是一个不错的选择。 论坛也是绝佳的资源,在其中可以找到开发人员在过去遇到并解决的难题的解答。
展开表
开发人员博客是提供有关游戏开发的最新信息的另一种极佳资源。 在博客中可以找到有关新功能、实施细节、最佳做法、体系结构背景等的文章。
展开表
在概念和计划阶段,需要确定游戏的外观以及将其创造出来需要使用的技术和工具。
当你开始开发适用于 UWP 的游戏时,有多种图形、输入、音频、网络、实用工具和库选项可供使用。
如果你确定了要在游戏中使用的所有技术,那么一切已准备就绪。 如果尚未确定,请参阅适用于 UWP 应用的游戏技术 指南,其中对许多可用技术提供了全面概述。我们强烈建议阅读该指南,以了解这些选项及其组合方式。
展开表
以下是在规划游戏时需考虑的一些概要概念和规划主题。
展开表
有多种编程语言和图形技术可在 Windows 游戏中使用。 你所采用的路径具体取决于你正在开发的游戏类型、你的开发工作室的经验和偏好,以及你的游戏的特定功能要求。 是要使用 C#、C++ 还是 JavaScript? 或者 DirectX、XAML 还是 HTML5?
Microsoft DirectX 适合用于高性能 2D 和 3D 图形与多媒体。
DirectX 12 比以往的任何版本更快且更高效。 Direct3D 12 提供更丰富的场景、更多的对象、更复杂的效果,并且能全面利用 Windows 电脑和 Xbox One 上的现代 GPU 硬件。
如果你想要使用 Direct3D 11 中熟悉的图形管道,仍然可以从添加到 Direct3D 11.3 的新呈现功能和优化功能中获益。 如果你是一名久经考验的基于 Win32 的桌面版 Windows API 开发人员,你仍可以对 Windows 游戏使用该选项。
DirectX 的丰富功能和深度平台集成提供了最苛刻游戏所需的计算能力和性能。
展开表
XAML 是一种易用的声明性 UI 语言,具有动画、情节提要、数据绑定、基于可缩放矢量的图形、动态大小调整和场景图等便利功能。 XAML 非常适合用于游戏 UI、菜单、子画面和 2D 图形。 为了简化 UI 布局,XAML 与 Expression Blend 和 Microsoft Visual Studio 等设计和开发工具兼容。 XAML 通常与 C# 结合使用,但在 C++ 是你的首选语言时,或者你的游戏对 CPU 要求较高时,C++ 也是一个不错的选择。
展开表
超文本标记语言 (HTML) 是一种常用于网页、应用和富客户端的 UI 标记语言。 Windows 游戏可以使用 HTML5 作为全功能的表示层。HTML5 提供用户熟悉的 HTML 功能、对通用 Windows 平台的访问以及对新式 Web 功能(例如 AppCache、Web Workers、画布、拖放、异步编程和 SVG)的支持。 在幕后,HTML 渲染利用 DirectX 硬件加速的强大功能,因此你仍可以获得 DirectX 的性能优势,而无需编写任何额外的代码。 如果你擅长于 Web 开发、打算移植 Web 游戏或者想要使用与其他选项相比更易获取的语言和图形图层,则 HTML5 是一个不错的选择。 HTML5 可与 JavaScript 一起使用,同时还可以调用以 C# 或 C++/CX 创建的组件。
展开表
Microsoft DirectX 图形基础结构 (DXGI) 通过多种图形技术提供互操作性和兼容性。 对于高性能图形,你可以将 XAML 与 DirectX 结合使用;可将 XAML 用于菜单和其他简单 UI,并将 DirectX 用于渲染复杂的 2D 和 3D 场景。 DXGI 还提供 Direct2D、Direct3D、DirectWrite、DirectCompute 和 Microsoft Media Foundation 之间的兼容性。
展开表
C++/WinRT 是一种高性能、低开销的语言,可提供速度、兼容性和平台访问的强大组合。 利用 C++/WinRT,可轻松使用 Windows 中所有出色的游戏功能,包括 DirectX 和 Xbox Live。 你还可以重复使用现有的 C++ 代码和库。 C++/WinRT 可创建快捷的本机代码,该代码不会使垃圾回收产生开销,可确保你的游戏拥有出色的性能和低功耗,从而可以延长电池使用时间。 将 C++/WinRT 与 DirectX 或 XAML 结合使用,或使用这两者的组合来创建游戏。
C#(发音为“C Sharp”)是一种新式创新语言,其特点是使用简单、功能强大、类型安全、面向对象。 C# 能够加速开发,同时保留 C 风格语言的熟悉度和表达能力。 尽管 C# 易于使用,但它还具有许多高级语言功能,如多态性、委派、lambdas、关闭、迭代方法、协变以及语言集成查询 (LINQ) 表达式。 如果你要开发面向 XAML 的应用、想要快速开始开发游戏或者拥有 C# 经验,则 C# 是一个绝佳的选择。 C# 主要与 XAML 结合使用,因此如果你想要使用 DirectX,请改为选择 C++,或者编写你游戏的一部分作为与 DirectX 交互的 C++ 组件。 或者,以 Win2D 为例:适用于 C# 和 C++ 的即时模式 Direct2D 图形库。
展开表
借助通用 Windows 平台,可轻松将采用不同语言编写的组件结合使用。 使用 C++、C# 或 Visual Basic 创建 Windows 运行时组件,然后通过 JavaScript、C#、C++ 或 Visual Basic 调用这些组件。 这是以所选语言对游戏的某些部分进行编程的极好方法。 借助组件,你也可以使用仅提供特定语言版本的外部库,并使用你已编写的传统代码。
展开表
如果你为游戏选择了 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 中也已启用的新渲染和优化功能。
展开表
根据游戏的需求,使用桥、游戏引擎或中间件可以节省开发和测试时间及资源。 下面是有关桥、游戏引擎和中间件的一些概述和资源。
现在作为 Microsoft 系列一部分的 Azure PlayFab 是一个完整的实时游戏后端平台,同时也是独立工作室发展壮大的一种有效方式。 通过游戏服务、实时分析和 LiveOps 增加收入、提高参与度并加强客户维系,同时减少成本。
展开表
Unity 提供一个用于创建精美且引人耳目的 2D、3D、VR 和 AR 游戏与应用的平台。 它可以让你快速实现自己的视觉创意,并将你的内容提供到几乎任何媒体或设备。
从 Unity 5.4 开始,Unity 支持 Direct3D 12 开发。
展开表
Havok 模块化的工具和技术套件可帮助游戏创建者达到交互式和沉浸式体验的新级别。 使用 Havok 可以制作高度逼真的物理学效果、交互式模拟效果和令人惊叹的影片。 版本 2015.1 或更高版本正式支持 x86、64 位和 Arm 上 Visual Studio 2015 中的 UWP。
展开表
Unreal Engine 是面向所有类型的游戏和开发人员推出的一整套游戏开发工具。 世界各地的游戏开发人员都喜欢使用 Unreal Engine 来开发要求最苛刻的控制台和电脑游戏。
展开表
BabylonJS 是一个完整的 JavaScript 框架,在其中能够用 HTML5、WebGL、WebVR 和 Web Audio 构建 3D 游戏。
展开表
确定要创建的游戏类型以及用于构建游戏的工具和图形技术后,可以随时开始进行设计和原型制作。 从本质上讲,你的游戏就是一个通用 Windows 平台应用,因此首先需要创建一个 UWP 应用。
通用 Windows 平台(UWP)跨 Windows 设备提供通用 API 平台。 面向 UWP 的游戏可以调用所有设备通用的 WinRT API。 由于 UWP 提供有保证的 API 层,因此你可以选择创建一个将在 Windows 设备上安装的应用包。 如果需要,游戏仍可以调用特定于运行游戏的设备的 API(包括 Win32 和 .NET 中的一些经典 Windows API)。
下面是一些高质量的指南,其中详细介绍了通用 Windows 平台应用,建议阅读这些指南以帮助了解该平台。
展开表
可以快速轻松地为开发通用 Windows 平台应用做好准备。 以下指南可引导你逐步完成该过程。
展开表
如果你是 UWP 编程的绝对初学者,并考虑在游戏中使用 XAML(请参阅选择图形技术和编程语言 ),面向绝对初学者的 Windows 10 开发视频系列是不错的起点。
展开表
展开表
以下链接可帮助你在桌面和 UWP 代码之间互操作。
展开表
进程生存期管理(或应用生命周期)描述通用 Windows 平台应用可以转换到的各种激活状态。 游戏可以激活、暂停、恢复或终止,并可以通过多种方式在这些状态之间转换。
展开表
优秀的游戏起源于受到启发的设计。
游戏与应用共享一些通用的用户界面元素和设计原则;不过游戏通常具有独特的外观且以用户体验为设计目标。 将深思熟虑的设计应用于这两个方面时,游戏就会取得成功 – 游戏何时应使用经过测试的 UX,何时应采用截然不同的创新设计? 为游戏选择的呈现技术(DirectX、XAML、HTML5 或三者的某种组合)将影响实施细节,但应用的设计原则在很大程度上与这种选择无关。
与 UX 设计不同,游戏方式设计(例如关卡设计、节奏、世界设计和其他方面)本身就是一种艺术形式,这取决于你和你的团队,本开发指南未涵盖此类内容。
展开表
在游戏中遵循一致的颜色准则可以提高美观度、辅助导航,并且是向玩家告知菜单和 HUD 功能的强大手段。 一致的游戏元素(如警告、危害、XP 和成就)颜色可使 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 支持。
展开表
了解 Direct3D 12 的新增功能和不同之处(与 Direct3D 11 相比),以及如何开始使用 Direct3D 12 进行编程。
展开表
DirectX 游戏开发指南和参考。
展开表
DirectX 工具包、DirectX 纹理处理库、DirectXMesh 几何处理库、UVAtlas 库和 DirectXMath 库为 DirectX 开发提供纹理、网格、子画面和其他实用工具功能与帮助程序类。 这些库可以帮助你节省开发时间和精力。
展开表
下面是外部合作伙伴创建的其他一些 DirectX 文档。
展开表
在此阶段,你的工作室已完全投入工作并转向生产周期,并且为整个团队分配了工作。 你正在完善、重构和扩展原型,以将其制作成完整的游戏。
磁贴是游戏在“开始”菜单中的一种呈现方式。 即使玩家当前未玩游戏,磁贴和通知也能引起他们的兴趣。
展开表
加载项(应用内产品)是供玩家在游戏中购买的补充项。 加载项可以是游戏级别、项目或玩家可能喜欢的任何其他内容。 如果使用得当,则加载项可以在改进游戏体验的同时,提供收入。 你通过合作伙伴中心定义和发布游戏的加载项,并在你的游戏代码中启用应用内购买。
展开表
若要优化性能,可以利用 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 峰值并在游戏崩溃期间生成转储文件。
展开表
DirectX 开发过程的某些环节可能比较繁琐且复杂。 当你的工作进入需要在生产环境中深入了解 DirectX 引擎详细信息或调试复杂性能问题的环节时,本部分中的资源和信息可能有所帮助。
展开表
构建使用 HDR 全彩功能的游戏内容。
展开表
针对 Windows 平台开发全球通用的游戏,并了解内置于 Microsoft 热门产品中的国际功能。
展开表
以下指南和信息可帮助你尽可能顺利地完成发布和提交过程。
你将使用合作伙伴中心 来发布和管理你的游戏包。
展开表
展开表
不要让认证问题延误游戏的发布。 下面是要注意的策略问题和常见认证问题。
展开表
应用商店清单 (StoreManifest.xml)
应用商店清单 (StoreManifest.xml
) 是一个可以包含在应用包中的可选配置文件。 应用商店清单提供不属于 AppxManifest.xml
文件的其他功能。 例如,如果目标设备不具备指定的最低 DirectX 功能级别或指定的最小系统内存,你可以使用应用商店清单阻止游戏安装。
展开表
完成开发并交付游戏并不意味着大功告成 。 你可能完成了版本 1 的开发,但你在市场中的游戏之路才刚刚开始。 你需要监视使用情况和错误报告、回复用户的反馈,并为游戏发布更新。
展开表
Visual Studio Application Insights
Visual Studio Application Insights 为发布的游戏提供性能、遥测和使用情况分析功能。 Application Insights 可帮助你检测和解决游戏发布后出现的问题、持续监视和改善使用情况,并了解玩家如何继续与游戏交互。 Application Insights 的工作原理是将一个 SDK 添加到应用中,该 SDK 会将遥测数据发送到 Azure 门户 。
展开表
展开表
若要更新发布的游戏,请提交带有更高版本号的新应用包。 该包完成提交和认证过程后,它将自动作为一项更新提供给客户使用。
展开表
Xbox Live 是一个卓越的游戏网络,连接着世界各地的数百万玩家。 开发人员获取可以有机增加其游戏受众的 Xbox Live 功能的访问权限,包括 Xbox Live 状态、排行榜、云保存、游戏中心、俱乐部、群聊天、游戏 DVR,等等。
展开表
面向参与 Xbox Live 创意者计划的开发人员
展开表
适用于 ID@Xbox 计划中托管的合作伙伴和开发人员
展开表
展开表