> ## 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.

# 掌機相容性計畫指導方針

> 遵循掌機相容性計畫的五項指導方針，針對 Windows 遊戲掌機最佳化您的 GDK 遊戲：預設值、輸入、字型、電源和偵測。

由 XBOX 設計的掌機相容性計畫，可協助讓玩家確信遊戲能在遊戲掌機上順暢運作。與同一款遊戲在 PC 桌面環境中的行為相比，要讓遊戲在掌機上表現出色，需要一些額外的考量。掌機上的遊戲仍然是 PC 遊戲。為了在掌機上順暢運作，遊戲需要考量距離雙眼 12 英吋的小螢幕，以及來自控制器而非滑鼠和鍵盤的輸入。

需要考量的主要指導方針有五項。本文件概括說明這五項指導方針，並描述如何符合這些指導方針。

## 指導方針 1：預設值即可正常運作

玩家期望在掌機上獲得類似主機的體驗。他們不應該需要尋找功能表並調整某些設定，才能讓遊戲進入掌機模式。只需使用控制器，他們就應該能瀏覽遊戲的所有元素。雖然玩家可能想要自訂和多樣化的轉譯選項 (黑階、陰影、效能與品質)，但他們仍期望有良好的預設體驗。

讓預設值「正常運作」的關鍵，在於知道您正在遊戲掌機上執行。請使用下列程式碼判斷遊戲是否在遊戲掌機上執行。

```c theme={null}
#ifndef DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD
#define DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD    0x0000002E 
#endif
  
DWORD DeviceForm; 
RtlGetDeviceFamilyInfoEnum(nullptr, nullptr, &DeviceForm); 
  
if (DeviceForm == DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD) 
{ 
   // Do stuff for a handheld 
} 
```

啟動遊戲時，遊戲可以檢查裝置是否為遊戲掌機。如果是遊戲掌機，遊戲應選擇能帶來良好體驗的預設值：

* 選擇與一般掌機功能相符的解析度和設定。
* 將預設輸入變更為預期使用控制器，並在預期需要文字輸入時彈出虛擬鍵盤。
* 加大字型 (詳情請參閱下方的 [指導方針 4：UI 可讀性](#guideline-4-ui-readability) 一節)。

為掌機裝置開發時，不要只偵測遊戲是否在掌機上執行。也請思考依賴控制器而非滑鼠和鍵盤，會如何影響玩家體驗。這會影響玩家瀏覽介面的方式以及您管理焦點的方式等。

您可能還需要解決輸入方面的挑戰，例如控制器的精確度比滑鼠低。瞄準輔助等功能可以協助彌補這一點。

若要開始確保掌機上的「預設值即可正常運作」，下列協助工具指南是很好的資源：

* [XBOX 協助工具指導方針 101：文字顯示](/zh-TW/build/game-principles/accessibility/xag-deep-dives/xag-101-text-display)
* [XBOX 協助工具指導方針 107：輸入](/zh-TW/build/game-principles/accessibility/xag-deep-dives/xag-107-input)
* [XBOX 協助工具指導方針 112：UI 導覽](/zh-TW/build/game-principles/accessibility/xag-deep-dives/xag-112-ui-navigation)
* [XBOX 協助工具指導方針 113：UI 焦點處理](/zh-TW/build/game-principles/accessibility/xag-deep-dives/xag-113-ui-focus-handling)

## 指導方針 2：圖示

圖示等螢幕上的提示可協助玩家了解如何瀏覽和遊玩遊戲。請確定沒有任何指示暗示使用掌機原生不提供的輸入方法，以免造成混淆。

## 指導方針 3：文字輸入

為 PC 撰寫的遊戲通常假設有滑鼠和鍵盤。在遊戲掌機上，預設輸入是控制器。當您的遊戲需要文字輸入時，請確定玩家只需使用控制器搭配虛擬鍵盤即可輸入文字。

在可能需要文字輸入時觸發虛擬鍵盤。兩種常見的做法是在文字方塊上偵測到「觸控」時，或在文字方塊具有「輸入焦點」且按下 **A** 按鈕時，啟動虛擬鍵盤。

您可以自由建立自己的虛擬鍵盤。您也可以使用 Windows 內建的虛擬鍵盤。下列程式碼示範您的遊戲如何在控制器模式下啟動並隱藏 Windows 虛擬鍵盤。

```C theme={null}
#include <winrt/windows.ui.viewmanagement.core.h>
using namespace winrt::Windows::UI::ViewManagement::Core;
#pragma comment(lib,"windowsapp.lib")


// CoreInputViewKind::Gamepad enum requires headers from 26100.3624 Windows SDK or greater
// Otherwise, use static_cast<CoreInputViewKind>(7) for earlier SDKs

CoreInputView::GetForCurrentView().TryShow(CoreInputViewKind::Gamepad);

CoreInputView::GetForCurrentView().TryHide();
```

此程式碼會取得適當的 `ICoreInputView3` 介面並呼叫 `TryShow` 方法，傳入支援控制器的新虛擬鍵盤識別碼。如果鍵盤目前正在顯示，`TryHide` 會將其隱藏。

<Note>
  只有在 Windows 判斷適合顯示鍵盤時，`TryShow` 方法才會顯示鍵盤。例如，在連接實體鍵盤 (及其他區別條件) 的裝置上呼叫此方法，可能不會顯示虛擬鍵盤。在配備觸控螢幕的掌機裝置上，此呼叫會如預期般運作。
</Note>

<Note>
  上述 API 不依賴 GDK。它是 Windows API，於 2018 年 10 月發行的 Windows 10 版本 10.0.17763.0 中推出，不過 `CoreInputViewKind::Gamepad` 列舉需要 Windows SDK 10.0.26100.3624 或更新版本。
</Note>

## 指導方針 4：UI 可讀性

7 吋寬的小螢幕在遊戲掌機上很常見。這些小螢幕可能會讓遊戲中的文字 UI 難以閱讀。針對這些小螢幕給遊戲開發人員的指引如下：

* 如果螢幕為 1280 x 720，文字的像素高度應至少為 9 像素。我們建議高度為 12 像素或以上。
* 如果螢幕為 1920 x 1080，文字的像素高度應至少為 14 像素。我們建議高度為 18 像素或以上。

文字可讀性是協助工具問題的主要來源。許多遊戲都體認到這一點，並提供遊戲內的字型大小設定。滿足文字可讀性的一種方式，是在偵測到遊戲在掌機裝置上執行時，自動將其中一種較大的文字大小設為預設值。

大部分遊戲使用點陣字型，但點陣字型不會根據螢幕大小、DPI 或其他 Windows 設定自動縮放。如果您使用點陣字型，請提供較大文字大小的選項。

如果您在遊戲中使用 TrueType 字型，可以使用 [DirectWrite](https://learn.microsoft.com/windows/win32/directwrite/direct-write-portal) 處理文字。`DirectWrite` 可以利用重要的 Windows 功能，例如字型縮放、DPI 和其他 Windows 設定。

## 指導方針 5：支援的顯示

遊戲會運用螢幕空間來提供絕佳體驗。遊戲不應有大幅的黑邊，或以會扭曲遊戲畫面的長寬比進行轉譯。由於遊戲掌機通常是小螢幕，大幅的黑邊會讓小螢幕變得更小，進而影響遊戲體驗。

## 其他考量

除了列出的五項指導方針之外，請參閱 [為掌機 Windows 裝置開發 GDK 遊戲時的其他考量](/zh-TW/build/gdk-and-engines/handheld/handheld-considerations)。


## Related topics

- [XR-018：使用者產生的內容](/zh-TW/publishing/certification/xr/xr-018.md)
- [XR-037 內容套件的相依性](/zh-TW/publishing/certification/xr/xr-037.md)
- [XR-047 使用者設定檔存取](/zh-TW/publishing/certification/xr/xr-047.md)
- [術語](/zh-TW/publishing/certification/console-cert-terminology.md)
- [PlayFab Party 版本資訊](/zh-TW/services/playfab/multiplayer/networking/release-notes.md)
