> ## 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-TW/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 的標頭與程式庫。提供簡單的交換鏈(swap chain)、D3D 裝置,以及更新與轉譯迴圈。
* 包含 `XGameRuntime.h` 並連結 `XGameRuntime.lib`。所有 GDK Gaming Runtime 功能皆可直接使用。
* 預設即可使用 XSAPI 延伸程式庫。
* 可針對標準 x64 平台或自訂的 `Gaming.Desktop.x64` 平台建置。
* 會建立一個 `MicrosoftGameConfig.mgc` 檔案,內含 Partner Center 身分識別的預留位置。

### 僅限 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 XBOX Game**,再加入鎖定 `Gaming.XBOX.XboxOne.x64` 的第二個建置組態(或反過來,從 **Direct3D 12 Desktop Game** 開始)。

使用 `#define` 或 `#ifdef` 防護來調整原始碼,或將平台專屬程式碼分割到獨立的 DLL 中:

* PC 組態使用標準 D3D12。
* XBOX 組態使用 D3D12.x。

切換使用中的組態會自動變更偵錯工具、連結的程式庫與其他工具設定。

## 在開發套件上完成端對端流程

在選擇更深入的路徑之前,請先完成主機實作逐步解說。它會帶著你將建立的 **Direct3D 12 XBOX Game** 範本一路做到在 XBOX 開發套件上執行鬆散部署(loose deployment),並進一步產生可安裝的 XVC。

> [card] [使用 GDKX 建置並執行你的第一個主機遊戲](https://docs.xbox.com/zh-TW/home/build-first-title/first-console-title-walkthrough.md)
>
> 14 個步驟的教學:固定 GDK 版本、加入 DirectXTK12、為 XBOX Series X|S 主機建置、部署到開發套件、診斷啟動失敗,並產生可安裝的 XVC。

## 後續步驟

你已經有一個可建置的專案。請選擇最符合你要推出內容的精選路徑。指南會為你指出接下來需要的更深入文件(建置、服務、最佳化、發行與 API 參考)。

> [card] [移植](https://docs.xbox.com/zh-TW/paths/porting/overview.md)
>
> 將已在其他平台推出的遊戲移植過來。

> [card] [XBOX Play Anywhere](https://docs.xbox.com/zh-TW/paths/play-anywhere/overview.md)
>
> 一次購買,同時涵蓋 PC 與主機。共用存檔。

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

> [card] [Windows 與 ROG XBOX Ally](https://docs.xbox.com/zh-TW/paths/windows/overview.md)
>
> 在 Windows PC 與掌上型裝置上推出遊戲。

> [card] [Unreal Engine](https://docs.xbox.com/zh-TW/paths/unreal/overview.md)
>
> 適用於 Unreal 的 GDK 外掛程式與平台延伸模組。

> [card] [Unity](https://docs.xbox.com/zh-TW/paths/unity/overview.md)
>
> 適用於 PC 與 XBOX 的 Unity 整合。

> [card] [Godot 與社群引擎](https://docs.xbox.com/zh-TW/paths/community-engines/overview.md)
>
> Godot、GameMaker 與自製引擎的相關說明。

> [!TIP]
>
> 大多數遊戲會將 GDK 與 [PlayFab](https://docs.xbox.com/zh-TW/services/playfab/get-started.md) 搭配使用,以取得身分識別、多人遊戲、排行榜、Economy 與 live-ops 功能。在專案可以建置之後,隨時都可以接上它。

## 另請參閱

* [移植指南](https://docs.xbox.com/zh-TW/home/build-first-title/porting-guides.md):移植主題的技術索引(ERA 到 GDK、著色器、GameInput 與 Steamworks 對應)。
* [MicrosoftGame.config 概觀](https://docs.xbox.com/zh-TW/build/core-features/common/game-config/MicrosoftGameConfig-Overview.md)。
* [封裝你的遊戲](https://docs.xbox.com/zh-TW/build/core-features/common/packaging/overviews/packaging.md)。


## Related topics

- [Microsoft Game Development Kit (GDK) 移植指南](https://docs.xbox.com/zh-TW/home/build-first-title/porting-guides.md)
- [使用 GDKX 建置並執行你的第一個主機遊戲](https://docs.xbox.com/zh-TW/home/build-first-title/first-console-title-walkthrough.md)
- [使用 GDK 專案範本開始開發新遊戲](https://docs.xbox.com/zh-TW/build/gdk-and-engines/guides/gdk-project-templates.md)
- [使用 XBOX GDK 開發跨世代遊戲](https://docs.xbox.com/zh-TW/build/console-features/cross-gen/index.md)
- [開始封裝 PC 遊戲](https://docs.xbox.com/zh-TW/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC.md)
