> ## 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 但還沒有 dev kit 時,請從 **Desktop**(`Gaming.Desktop.x64`)開始。你可以在本機測試所有內容。收到 dev kit 之後再加入 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 的標頭與程式庫。提供簡單的交換鏈(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。

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

## 在 dev kit 上完成端對端流程

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

<Card title="使用 GDKX 建置並執行你的第一個主機遊戲" icon="gamepad" horizontal href="/home/build-first-title/first-console-title-walkthrough">
  14 個步驟的教學:固定 GDK 版本、加入 DirectXTK12、為 XBOX Series X|S 主機建置、部署到 dev kit、診斷啟動失敗,並產生可安裝的 XVC。
</Card>

## 後續步驟

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

<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) 搭配使用,以取得身分識別、多人遊戲、排行榜、經濟系統與 live-ops 功能。在專案可以建置之後,隨時都可以接上它。
</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

- [移植到 XBOX GDK 的指南](/zh-TW/home/build-first-title/porting-guides.md)
- [使用 GDKX 建置並執行你的第一個主機遊戲](/zh-TW/home/build-first-title/first-console-title-walkthrough.md)
- [XBOX 遊戲開發文件](/zh-TW/index.md)
- [存取 GDK 資源與下載](/zh-TW/home/onboarding-access/access-resources.md)
- [玩家資料重設工具 (XblPlayerDataReset.exe)](/zh-TW/tools/tools-services/live-player-data-reset.md)
