> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.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](/home/setup-install/get-started) 完成 GDK 安装并构建一个示例。

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

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

## 项目模板

安装 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 title="使用 GDKX 构建并运行你的第一款主机游戏" icon="gamepad" horizontal href="/home/build-first-title/first-console-title-walkthrough">
  14 步教程:锁定 GDK 版本、添加 DirectXTK12、为 XBOX Series X|S 主机构建、部署到开发套件、诊断启动失败,并生成可安装的 XVC。
</Card>

## 后续步骤

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

<CardGroup cols={2}>
  <Card title="移植" icon="arrow-right-arrow-left" href="/paths/porting/overview">
    从其他平台移植一款已发布的游戏。
  </Card>

  <Card title="XBOX Play Anywhere" icon="globe" href="/paths/play-anywhere/overview">
    一次购买,PC 与主机通用,存档共享。
  </Card>

  <Card title="XBOX Series X|S 主机" icon="tv" href="/paths/series-xs/overview">
    以主机为先:Quick Resume、DirectStorage 与 Smart Delivery。
  </Card>

  <Card title="Windows 与 ROG XBOX Ally" icon="laptop" href="/paths/windows/overview">
    在 Windows PC 与掌机上发布。
  </Card>

  <Card title="Unreal Engine" icon="gamepad" href="/paths/unreal/overview">
    面向 Unreal 的 GDK 插件与平台扩展。
  </Card>

  <Card title="Unity" icon="cube" href="/paths/unity/overview">
    面向 PC 与 XBOX 的 Unity 集成。
  </Card>

  <Card title="Godot 与社区引擎" icon="code" href="/paths/community-engines/overview">
    Godot、GameMaker 及自研引擎相关说明。
  </Card>
</CardGroup>

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

## 参见

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


## Related topics

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