> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 开发一款新的 GDK 游戏

> 在 Visual Studio 中使用项目模板创建一款新的 GDK 游戏,可面向 Windows PC、XBOX Series X|S 主机,或同时面向两者的跨平台构建。

这是引导路径的第 3 步。在开始本页之前,请先按照[设置并安装 GDK](https://docs.xbox.com/zh-CN/home/setup-install/get-started.md) 完成 GDK 安装并构建一个示例。

每款 GDK 游戏都从一个 Visual Studio 项目开始。你需要根据希望游戏在哪里运行来选择一个模板:仅 Windows PC、仅 XBOX 主机,或从同一份代码同时面向两者。你不必现在就做出最终决定,因为之后可以再添加另一个目标。

> [!TIP]
>
> 如果你不确定该选哪个目标,当你只有一台 Windows PC 而暂时没有开发套件时,请先从 **Desktop** (`Gaming.Desktop.x64`) 开始。你可以在本地完成所有测试。等收到开发套件后,再添加 XBOX 目标。

## 项目模板

安装 GXDK 会在 Visual Studio 中新增九个 GDK 项目模板:五个用于 PC,四个用于 XBOX 主机。

| 目标 | 模板 | 说明 |
| - | - | - |
| **Desktop** | Direct3D 12 Desktop Game (Classic) | 使用原生 x64 MSBuild 平台的独立 PC 游戏。 |
| | Direct3D 12 Desktop Game | 使用 `Gaming.Desktop.x64` 自定义 MSBuild 平台的独立 PC 游戏。 |
| | Direct3D 12 Desktop Game Makefile | 通过命令行以 makefile 构建的 PC 游戏。 |
| | Desktop Static Library | 面向 `Gaming.Desktop.x64` 的静态库。 |
| | Desktop DLL | 面向 `Gaming.Desktop.x64` 的 DLL。 |
| **Console** | Direct3D 12 XBOX Game | 独立的 XBOX 游戏可执行程序。 |
| | Direct3D 12 XBOX Game Makefile | 通过 makefile 构建的 XBOX 游戏。 |
| | XBOX Static Library | 面向 XBOX 平台的静态库。 |
| | XBOX DLL | 面向 XBOX 平台的 DLL。 |

## 创建项目

1. 打开 Visual Studio。
2. 转到 **File** > **New** > **Project**。
3. 在 **All Languages** 中选择 **C++**。在 **All Platforms** 中选择 **XBOX** 或 **Windows**。在 **All Project Types** 中选择 **Games**。你也可以按模板名称搜索。
4. 选择一个模板,然后选择 **OK**。

## 选择模板

### 仅 PC

从 **Direct3D 12 Desktop Game** 开始。

* 使用 `WINAPI_FAMILY_DESKTOP_APP`,并链接完整的 PC 库集合,包括 `kernel32.lib` 和 `user32.lib`。
* 包含 D3D12 的头文件与库。提供简单的交换链、D3D 设备以及更新/渲染循环。
* 包含 `XGameRuntime.h` 并链接 `XGameRuntime.lib`。所有 GDK Gaming Runtime 功能均已就绪。
* 默认可用 XSAPI 扩展库。
* 可基于原生 x64 平台或自定义的 `Gaming.Desktop.x64` 平台进行构建。
* 创建一个包含 Partner Center 身份占位符的 `MicrosoftGameConfig.mgc` 文件。

### 仅 XBOX

从 **Direct3D 12 XBOX Game** 开始。

* 使用 `WINAPI_FAMILY_GAMES` 并链接 `XGamePlatform.lib`。
* 包含已为 XBOX D3D12.x 扩展做好准备的 D3D12 头文件。
* 包含 `XGameRuntime.h` 并链接 `XGameRuntime.lib`。
* 默认可用 XSAPI 扩展库。
* 使用 `Gaming.XBOX.XboxOne.x64` MSBuild 平台,并按照远程调试的方式配置。
* 创建带占位符的 `MicrosoftGameConfig.mgc` 文件。

### PC 与 XBOX(共享代码库)

从一个模板开始,例如 **Direct3D 12 Desktop Game**,然后添加第二个面向 `Gaming.XBOX.XboxOne.x64` 的构建配置(反之亦然)。

通过 `#define` 或 `#ifdef` 守卫来调整源代码,或者将平台相关代码拆分到独立的 DLL 中:

* PC 配置使用标准 D3D12。
* XBOX 配置使用 D3D12.x。

切换当前的构建配置会自动切换调试器、链接的库以及其他工具设置。

## 在开发套件上端到端发布

在选择更深入的路径之前,请先完成主机上手实战演练。它会以你刚刚创建的 **Direct3D 12 XBOX Game** 模板为基础,在 XBOX 开发套件上以松散部署方式运行,并最终产出一个可安装的 XVC。

> [card] [使用 GDKX 构建并运行你的第一款主机游戏](https://docs.xbox.com/zh-CN/home/build-first-title/first-console-title-walkthrough.md)
>
> 14 步教程:锁定 GDK 版本、添加 DirectXTK12、为 XBOX Series X|S 主机构建、部署到开发套件、诊断启动失败,并生成可安装的 XVC。

## 后续步骤

你已经完成项目构建。请选择与你所要发布的游戏最匹配的精选路径。指南会引导你进入需要的更深入文档(Build、Services、Optimize、Publishing 与 API References)。

> [card] [移植](https://docs.xbox.com/zh-CN/paths/porting/overview.md)
>
> 从其他平台移植一款已发布的游戏。

> [card] [XBOX Play Anywhere](https://docs.xbox.com/zh-CN/paths/play-anywhere/overview.md)
>
> 一次购买,PC 与主机通用,存档共享。

> [card] [XBOX Series X|S 主机](https://docs.xbox.com/zh-CN/paths/series-xs/overview.md)
>
> 以主机为先:Quick Resume、DirectStorage 与 Smart Delivery。

> [card] [Windows 与 ROG XBOX Ally](https://docs.xbox.com/zh-CN/paths/windows/overview.md)
>
> 在 Windows PC 与掌机上发布。

> [card] [Unreal Engine](https://docs.xbox.com/zh-CN/paths/unreal/overview.md)
>
> 面向 Unreal 的 GDK 插件与平台扩展。

> [card] [Unity](https://docs.xbox.com/zh-CN/paths/unity/overview.md)
>
> 面向 PC 与 XBOX 的 Unity 集成。

> [card] [Godot 与社区引擎](https://docs.xbox.com/zh-CN/paths/community-engines/overview.md)
>
> Godot、GameMaker 及自研引擎相关说明。

> [!TIP]
>
> 大多数游戏会将 GDK 与 [PlayFab](https://docs.xbox.com/zh-CN/services/playfab/get-started.md) 搭配使用,用于身份、多人游戏、排行榜、经济系统与实时运营。你可以在项目构建通过之后的任何时间接入它。

## 参见

* [移植指南](https://docs.xbox.com/zh-CN/home/build-first-title/porting-guides.md):移植主题的技术索引(ERA 至 GDK、着色器、GameInput 与 Steamworks 映射)。
* [MicrosoftGame.config 概览](https://docs.xbox.com/zh-CN/build/core-features/common/game-config/MicrosoftGameConfig-Overview.md)。
* [打包你的游戏](https://docs.xbox.com/zh-CN/build/core-features/common/packaging/overviews/packaging.md)。


## Related topics

- [Microsoft 游戏开发工具包 (GDK) 移植指南](https://docs.xbox.com/zh-CN/home/build-first-title/porting-guides.md)
- [使用 GDKX 构建并运行你的第一款主机游戏](https://docs.xbox.com/zh-CN/home/build-first-title/first-console-title-walkthrough.md)
- [使用 GDK 项目模板开始开发新游戏](https://docs.xbox.com/zh-CN/build/gdk-and-engines/guides/gdk-project-templates.md)
- [用户与输入设备](https://docs.xbox.com/zh-CN/build/core-features/common/user/users-input-devices.md)
- [使用 XBOX GDK 开发跨世代游戏](https://docs.xbox.com/zh-CN/build/console-features/cross-gen/index.md)
