UWP 應用程式的遊戲技術

在本指南中,您將瞭解可用於開發 Universal Windows Platform (UWP) 遊戲的技術。

Windows 10 在遊戲開發方面的優勢

在 Windows 10 中引入 UWP 後,您的 Windows 10 版本將可以跨越所有 Microsoft 平台。 隨著從舊版 Windows 的免費遷移,Windows 10 客戶端的數量在穩步增加。 這兩者的結合意味著您的 Windows 10 產品可以透過 Microsoft Store 接觸到大量的客戶。

此外,Windows 10 提供許多對遊戲特別有益的新功能:

  • 減少儲存器分頁和減少儲存器系統總體尺寸
  • 改善的圖形記憶體管理,主動為前景遊戲配置並保護更多記憶體

UWP 遊戲搭配 C++ 和 DirectX

需要高效能的即時遊戲應該使用 DirectX API。 DirectX 是原生 API 的集合,用於建立需要高效能的遊戲和多媒體應用程式,如 3D 遊戲。

開發環境

若要建立 UWP 遊戲,您必須安裝 Visual Studio 2015 或更新版本來設定您的開發環境。 建議您安裝最新版本的 Visual Studio,讓您能夠存取最新的開發和安全更新。 Visual Studio 可讓您建立 UWP 應用程式,並提供遊戲開發工具:

  • Visual Studio tools for DX 遊戲程式設計,Visual Studio 提供建立、編輯、預覽和匯出影像、模型和著色器資源的工具。 您也可以使用一些工具,在建置時轉換資源,並偵錯 DirectX 圖形程式碼。 如需詳細資訊,請參閱使用 Visual Studio tools for game programming。
  • Visual Studio 圖形診斷功能 — 圖形診斷工具現在可在 Windows 中作為可選功能使用。 診斷工具可讓您即時進行圖形偵錯、圖形框架分析,以及監控 GPU 使用狀況。 如需詳細資訊,請參閱使用 DirectX 執行階段和 Visual Studio 圖形診斷功能。

如需詳細資訊,請參閱準備通用 Windows 平台和 DirectX 程式設計。

DirectX 遊戲專案範本入門

設定開發環境之後,您可以使用其中一個與 DirectX 相關的專案範本來建立 UWP DirectX 遊戲。 Visual Studio 2015 有三個可用於建立新的 UWP DirectX 專案的模板:DirectX 11 App (通用 Windows)、DirectX 12 App (通用 Windows),以及 DirectX 11 和 XAML App (通用 Windows)。 如需詳細資訊,請參閱從範本建立通用 Windows平台和 DirectX 遊戲專案。

Windows 10 API

Windows 10 提供大量的 API 集,對遊戲開發很有幫助。 遊戲的幾乎所有方面都有 API,包括 3D Graphics、2D Graphics、Audio、Input、Text Resources、User Interface 和網路。

有許多與遊戲開發相關的 API,但並非所有遊戲都需要使用所有的 API。 例如,有些遊戲只使用 3D 圖形和只使用 Direct3D ,有些遊戲只使用 2D 圖形和只使用 Direct2D,還有一些遊戲可能同時使用這兩者。 下圖顯示按功能型別分組的遊戲開發相關 API。

game platform technologies

  • 3D 圖形,Windows 10 支援兩個 3D 圖形 API 集:Direct3D 11 和 Direct3D 12。 這兩個 API 都提供建立 3D 和 2D 圖形的功能。 Direct3D 11和 Direct3D 12 不會同時使用,但可以與 2D Graphics 和 UI 群組中的任何 API 一起使用。 如需有關在遊戲中使用圖形 API 的詳細資訊,請參閱 DirectX 遊戲的基本 3D 圖形。

    API 描述
    Direct3D 12

    Direct3D 12引入 Direct3D 的下一個版本,即 DirectX 核心的 3D 圖形 API。 此版本的 Direct3D 比先前版本的 Direct3D 更快速、更有效率。 Direct3D 12 提升速度的代價是,速度較慢,而且需要您自行管理圖形資源,並具備更豐富的圖形程式設計經驗,才能提升速度。

    使用時機

    當您需要將遊戲的效能發揮到極致,而且遊戲的 CPU 容量限制時,請使用 Direct3D 12。

    詳細資訊

    請參閱 Direct3d 12 文件。

    Direct3D 11

    Direct3D 11 是 Direct3D 的舊版本,可讓您使用比 D3D 12 更高級別的硬體抽象來建立 3D 圖形。

    使用時機

    如果您有現有的 Direct3D 11程式碼、您的遊戲不受 CPU 限制,或想要受資源管理的好處,請使用 Direct3D 11。

    詳細資訊

    請參閱 Direct3D 11 文件。

     

  • 2D 圖形和 UI,與 2D 圖形相關的 API,例如文字和使用者介面。 所有 2D 圖形和 UI API 都是可選的。

    API 描述
    Direct2D

    Direct2D 是硬體加速的即時模式 2-D 圖形 API,可為 2-D 幾何、點陣圖和文字提供高效能與高品質的轉譯。 Direct2D API 建立在 Direct3D 之上,並設計為與 GDI、GDI+ 和 Direct3D 良好的互操作。

    使用時機

    Direct2D 可以取代 Direct3D 為純 2D 遊戲提供圖形,如側邊卷軸或棋盤遊戲,或者可以與 Direct3D 一起使用來簡化 3D 遊戲中 2D 圖形的建立,如使用者介面或平視顯示器。

    詳細資訊

    請參閱 Direct2D 文件。

    DirectWrite

    DirectWrite 提供處理文字的額外功能,並可與 Direct3D 或 Direct2D 搭配使用,以提供使用者介面或其他需要文字區域的文字輸出。 DirectWrite 支援多格式文字的測量、繪圖和點選測試。 DirectWrite 會處理全域和本地化應用程式所有支援語言的文字。 DirectWrite 還為希望執行自己的佈局和 Unicode 到字元處理的開發人員提供低級別的字元渲染 API。

    使用時機

    詳細資訊

    請參閱 DirectWrite 文件。

    DirectComposition

    DirectComposition 是 Windows 元件,可透過轉換、效果和動畫進行高效能的點陣圖合成。 應用程式開發者可以使用 DirectComposition API 建立視覺上吸引人的使用者介面,以豐富和流暢的動畫方式從視覺轉變成其他視覺效果。

    使用時機

    DirectComposition 旨在簡化構成視覺效果和建立動畫轉場的過程。 如果您的遊戲需要複雜的使用者介面,您可以使用 DirectComposition 來簡化 UI 的建立和管理。

    詳細資訊

    請參閱 DirectComposition 文件。

     

  • 音訊:有關播放音訊和應用音訊效果的 API。 有關在遊戲中使用音訊 API 的資訊,請參閱 Audio for games。

    API 描述
    XAudio2

    XAudio2 是一個低階音訊 API,為訊號處理和混音提供基礎。 XAudio 設計為對遊戲音訊引擎反應靈敏,同時保持建立自定義音訊效果和複雜音訊效果鏈和濾鏡的能力。

    使用時機

    當遊戲需要以最小的額外開銷和延遲播放聲音時,請使用 XAudio2。

    詳細資訊

    請參閱 XAudio2 檔案。

    音訊圖

    對於您可以使用 XAudio2 實現的功能,您可以選擇使用 Windows Runtime 音訊圖形 API。 若要協助您決定這兩種選擇,請參閱選擇 Windows Runtime AudioGraph 或 XAudio2。

    使用時機

    當您的遊戲需要播放聲音時,使用音訊圖形,而花費和延遲都很少,但使用 API 比 XAudio2 容易得多,並提供 C# 支援選項。

    詳細資訊

    請參閱 Audio graphs 文件。

    媒體基礎

    Microsoft Media Foundation 專為播放媒體檔案和流 (包括音訊和影片) 而設計,但也可以用在需要比 XAudio2 更高層級功能且可以接受一些額外開銷的遊戲中。

    使用時機

    媒體基礎對於電影場景或遊戲的非互動元件特別有用。 媒體基礎對於解碼音訊檔案以使用 XAudio2 播放也很有用。

    詳細資訊

    請參閱 Microsoft Media Foundation 概覽。

     

  • 輸入:與鍵盤、滑鼠、遊戲板和其他使用者輸入來源輸入相關的 API。

    API 描述
    XInput

    XInput Game Controller API 使應用程式能夠接收來自遊戲控制器的輸入。

    使用時機

    如果您的遊戲需要支援遊戲板輸入,而且您有現有的 XInput 程式碼,您可以繼續使用 XInput。 UWP 的 Windows.Gaming.Input 已取代 XInput,如果您正在撰寫新的輸入程式碼,應該使用 Windows.Gaming.Input 而不是 XInput。

    詳細資訊

    請參閱 XInput 文件。

    Windows.Gaming.Input

    Windows.Gaming.Input API 取代 XInput 並提供與 Xinput 相同的功能,並具有以下優勢:

    • 資源使用率較低
    • 擷取輸入時的 API 呼叫延遲較低
    • 可同時處理超過 4 個遊戲板
    • 能夠存取其他遊戲墊功能,例如觸發震動馬達
    • 當控制器透過事件而非輪詢連線/中斷連線時,能夠收到通知
    • 將輸入屬性賦予特定使用者 (Windows.System.User) 的能力

    使用時機

    如果您的遊戲需要支援遊戲板輸入,且未使用現有的 XInput 程式碼,或您需要上述其中一個優點,您應該使用 Windows.Gaming.Input。

    詳細資訊

    請參閱 Windows.Gaming.Input 文件。

    Windows.UI.Core.CoreWindow

    Windows.UI.Core.CoreWindow 類別提供事件,用來追蹤指標按下和移動,以及按下按鍵和按鍵啟動事件。

    使用時機

    當您在遊戲中需要追蹤滑鼠或按鍵時,請使用 Windows.UI.Core.CoreWindows 事件。

    詳細資訊

    如需有關在遊戲中使用滑鼠或鍵盤的詳細資訊,請參閱遊戲的 Move-look 控制項。

     

  • 數學:有關簡化常用數學運算的 API。

    API 描述
    DirectXMath

    DirectX Math API 為遊戲常見的線性代數和圖形數學運算提供 SIMD 友好的 C++ 型別和函式。

    使用時機

    使用 DirectX Math 是可選的,可簡化一般的數學運算。

    詳細資訊

    請參閱 DirectX Math 文件。

     

  • 網路:有關透過網際網路或私人網路與其他電腦和裝置通訊的 API。

    API 描述
    Windows.Networking.Sockets

    Windows.Networking.Sockets 名稱空間提供 TCP 和 UDP 通訊端,允許可靠或不可靠的網路通訊。

    使用時機

    如果您的遊戲需要透過網路與其他電腦或裝置通訊,請使用 Windows.Networking.Sockets。

    詳細資訊

    請參閱在遊戲中使用網路

    Windows.Web.HTTP

    Windows.Web.HTTP 名稱空間提供與 HTTP 伺服器的可靠連線,可用來存取網站。

    使用時機

    當您的遊戲需要存取網站以擷取或儲存資訊時,請使用 Windows.Web.HTTP。

    詳細資訊

    請參閱在遊戲中使用網路

     

  • 支援公用程式:建立在 Windows 10 API 上的程式庫。

    程式庫 描述
    DirectX 工具套件

    DirectX Tool Kit (DirectX TK) 是一個幫助程式類的集合,用於在 C++ 中編寫 DirectX 11.x 程式碼。

    使用時機

    如果您是 C++ 開發人員,正在尋找舊版 D3DX 公用程式碼的現代化替代品,或是正在轉換至原生 C++ 的 XNA Game Studio 開發人員,請使用 DirectX 工具套件。

    詳細資訊

    請參閱 DirectX Tool Kit 專案頁面,https://github.com/Microsoft/DirectXTK

    Win2D

    Win2D 是易於使用的 Windows 執行階段 API,用於即時模式 2D 圖形轉譯。

    使用時機

    如果您是 C++ 開發人員,想要更容易地使用 WinRT 包裝程式進行 Direct2D 和 DirectWrite,或者您是想要使用 Direct2D 和 DirectWrite 的 C# 開發人員,請使用 Win2D。

    詳細資訊

    請參閱 Win2D 專案頁面,https://github.com/Microsoft/Win2D

Xbox Live 服務

Xbox Developer Programs,允許任何開發人員將 Xbox Live 整合到他們的 UWP 遊戲中,並發佈到Xbox One 和 Windows 10。 將 Xbox Live 社群體驗 (例如登入、顯示狀態、排行榜等) 整合到您的標題中,以最短的時間完成開發。 Xbox Live 社交功能旨在有機地增加您的受眾,將認識傳播給超過 5500 萬活躍玩家。

如果您想要獲得更多的 Xbox Live 功能、專屬的行銷和開發支援,以及有機會進入主要 Xbox One 商店,請申請 ID@Xbox。 要檢視 Xbox Live 建立者計畫和 ID@Xbox 計畫可用的功能,請參閱 Feature table。

如需詳細資訊,請前往 新增 Xbox Live 至您的遊戲。

使用 DirectX 和 UWP 編寫遊戲的替代方案

不含 DirectX 的 UWP 遊戲

較簡單的遊戲 (例如紙牌遊戲或棋盤遊戲)不需使用 DirectX 即可編寫,而且不必使用 C++ 語言編寫,因此效能要求也較低。 這類遊戲可以使用 UWP 所支援的任何語言,如 C#、Visual Basic、C++ 和 HTML/JavaScript。 如果遊戲不要求效能和密集圖形,請以簽出 JavaScript 和 HTML5 觸控遊戲範例。

遊戲引擎

除使用 Windows 遊戲開發 API 編寫自己的遊戲引擎外,許多基於 Windows 遊戲開發 API 的高品質遊戲引擎可用於在 Windows 平台上開發遊戲。 考慮遊戲引擎或程式庫時,您有多種選擇:

  • 完整遊戲引擎:完整遊戲引擎可封裝您從頭開始編寫遊戲引擎時所使用的大部分 Windows 10 API,例如圖形、音訊、輸入和網路。 完整的遊戲引擎也可以提供遊戲邏輯功能,如人工智慧和路徑尋找。
  • 圖形引擎:圖形引擎封裝 Windows 10 圖形 API,管理圖形資源,並支援各種模型和世界格式。
  • 音訊引擎:音訊引擎封裝 Windows 10 音訊 API,管理音訊資源,並提供進階的音訊處理與效果。
  • 網路引擎:網路引擎封裝 Windows 10 網路 API,以新增對等或伺服器對遊戲的多人支援,並可能包含進階網路功能以支援大量玩家。
  • 人工智慧和路徑發現引擎:AI 和路徑發現引擎提供一個框架,用於控制遊戲中代理的行為。
  • 特殊目的引擎:有多種額外的引擎用於處理幾乎任何與遊戲開發相關的任務,例如建立清單系統和對話方塊樹。

正在將遊戲提交到 Microsoft Store

當您準備好發佈遊戲後,您必須建立開發人員帳戶,並將遊戲提交至 Microsoft Store。

如需將遊戲提交至 Microsoft Store 的詳細資訊,請參閱提交並發佈遊戲。