> ## 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 上建置掌機遊戲啟動器，涵蓋全螢幕體驗偵測、資源限制、Web 技術、導覽按鈕處理，以及前景管理。

遊戲啟動器有許多不同的形式。當玩家啟動遊戲時，有些遊戲不會直接啟動，而是先啟動啟動器。許多遊戲和發行商依賴啟動器來協助維持玩家的參與度。啟動器也可用於在遊戲真正啟動之前設定選項、造訪遊戲網站，或與其他遊戲功能互動。這些啟動器需要在遊戲掌機裝置上順暢運作。啟動器和遊戲一樣，需要遵循下列文章中的指引。

* [由 XBOX 設計的掌機相容性計畫指導方針](/zh-TW/build/gdk-and-engines/handheld/handheld-guidance)
* [掌機裝置的其他考量](/zh-TW/build/gdk-and-engines/handheld/handheld-considerations)

雖然讓遊戲能在掌機裝置上運作的指引同樣適用於啟動器，但啟動器還有一些開發人員需要注意的其他考量。

## 全螢幕體驗

遊戲掌機啟動時，OEM 可以將其設定為啟動以全螢幕運作的專用遊戲應用程式。例如，在 ASUS ROG XBOX Ally X 上，裝置會啟動進入全螢幕版本的 XBOX 應用程式。玩家可以輕鬆存取其遊戲目錄，並有機會參與及購買新遊戲。

OEM 可以設定預設的全螢幕應用程式。設定此項目後：

* 許多標準的 Windows 體驗會被抑制，例如工作列、部分啟動應用程式和其他服務。這種抑制可讓遊戲有更多可用的記憶體。
* 預設應用程式可以確保一次只執行一款遊戲的原則。
* 從睡眠或休眠繼續時，玩家會回到遊戲或應用程式。如果遊戲和應用程式在睡眠或休眠之前已關閉，玩家會回到預設遊戲應用程式。
* 裝置從關機狀態開機時，會自動啟動預設應用程式。
* 遊戲和應用程式會自動以全螢幕模式啟動。

整體而言，Windows 將此稱為「全螢幕體驗」(FSE)。

若要查看遊戲掌機上是否已啟用 FSE，請讓您的遊戲呼叫 `IsGamingFullScreenExperienceActive` 函式。下列程式碼範例示範如何使用此函式。

```cpp theme={null}
#include <gamingexperience.h>
#pragma comment(lib, "windowsapp.lib")

if (IsApiSetImplemented("api-ms-win-gaming-experience-l1-1-0"))
{
   if (IsGamingFullScreenExperienceActive())
   {
      // Full Screen Experiences (FSE) is active
   }
}
```

裝置上的玩家可以開啟和關閉 FSE。應用程式和遊戲可以使用 **RegisterGamingFullScreenExperienceChangeNotification** 函式註冊變更通知，以取得這些變更的通知。若要取消註冊變更通知，請使用 **UnregisterGamingFullScreenExperienceChangeNotification** 函式。下列程式碼範例示範如何註冊變更通知。回應通知時，請務必接著查詢 FSE 的目前狀態。

```cpp theme={null}
static GAMING_FULL_SCREEN_EXPERIENCE_REGISTRATION g_fseHandle = nullptr;

// ...

if (IsApiSetImplemented("api-ms-win-gaming-experience-l1-1-0"))
{
  RegisterGamingFullScreenExperienceChangeNotification([](PVOID)
  {
    // Full Screen Experience (FSE) changed, query if active
    if (IsGamingFullScreenExperienceActive())
    {
      // FSE has changed to active
    }
    else
    {
      // FSE has changed to inactive
    }
  }, nullptr, &g_fseHandle);
}

// ...

if (IsApiSetImplemented("api-ms-win-gaming-experience-l1-1-0"))
{
   UnregisterGamingFullScreenExperienceChangeNotification(g_fseHandle);
}
```

若要取得全螢幕體驗的相關資訊，請使用 Windows SDK 版本 10.0.26100.3916 或更新版本。此版本於 2025 年 4 月發行。

## 資源

遊戲啟動器經常在背景執行並耗用記憶體等資源。與一般 PC 相比，遊戲掌機的記憶體和資源有限。因此，遊戲啟動器需要遵循最佳做法，為玩家提供最佳體驗。

* 啟動器不在前景時，盡量減少其資源使用量。
* 啟動器成功啟動遊戲後，請考慮終止啟動器 (或至少盡量減少其資源)，以便為遊戲提供更多資源。
* 避免安裝到工作列通知區域，因為玩家在 FSE 中無法使用該區域。
* 確保玩家可以輕鬆關閉啟動器。
* 與遊戲一樣，請考慮啟動器如何盡量減少其 [電力使用量](/zh-TW/build/gdk-and-engines/handheld/handheld-considerations#power) 以及對電池續航力的影響。

## Web 技術

啟動器經常依賴 HTML 來傳遞內容。與啟動器的所有其他部分以及在遊戲掌機上順暢運作的開發人員指引一樣，請確保符合下列需求：

* HTML 內容預設的運作方式，在距離臉部 12 英吋 (30.5 公分) 持握的 7 吋 (17.8 公分) 螢幕上運作良好且清晰可讀。
* 所有圖示都符合裝置實際情況。
* 文字輸入使用虛擬鍵盤，不需要實體鍵盤。

最重要的是，使用者必須能夠使用控制器瀏覽任何 HTML 內容。請使用 HTML Gamepad API，確保您所有透過 Web 傳遞的內容在設計時都考量到控制器。如需詳細資訊，請參閱 [Using the Gamepad API - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API)。

## 遊戲覆疊與導覽按鈕

啟用 FSE 時，Windows 對控制器上的 **Guide** 按鈕具有獨佔存取權。當玩家在全螢幕體驗中短按 **Guide** 按鈕時，會開啟 XBOX Game Bar。玩家可以快速存取系統公用程式和 OEM 小工具。XBOX Game Bar 可透過 Game Bar Widget SDK 進行擴充。如需詳細資訊，請參閱 [XBOX Game Bar SDK](https://learn.microsoft.com/gaming/game-bar/)。

為了確保與使用 **Guide** 按鈕之現有體驗的相容性，玩家可以按下 **View+Menu**，將 **Guide** 按鈕傳送至具有焦點的應用程式。控制器驅動程式會將 **View**、**Menu** 和 **Guide** 按鈕按壓一併作為輸入承載的一部分傳送。長按 **Guide** 按鈕會開啟最佳化的 **Task Switcher**，玩家可以在其中對選取的應用程式按下 **View**，以傳送 **Guide** 按鈕按壓。

## 前景與背景管理

遊戲和啟動器不需要為 FSE 的 Windows 前景管理執行任何特殊操作。請確保其前景視窗管理在 Windows 上正常運作 (無論是否啟用 FSE)。

Windows 的設計是讓玩家掌控他們互動的視窗。前景視窗可以將其他應用程式帶到前景，但背景應用程式無法取得前景。Windows 將前景控制作為作業系統層級的權限加以強制執行。

遊戲和啟動器常見的某些案例，需要應用程式更明確地控制前景管理。例如，某些遊戲可能採用單一執行個體，將新處理序的啟用重新導向回已在背景執行的處理序。新處理序需要明確地將前景權限轉移回已在執行的處理序。遊戲會使用 [AllowSetForegroundWindow](https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-allowsetforegroundwindow)、[CoAllowSetForegroundWindow](https://learn.microsoft.com/windows/win32/api/objbase/nf-objbase-coallowsetforegroundwindow) 和 [SetForegroundWindow](https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setforegroundwindow) 處理這些轉移。

當 FSE 未啟用時 (這是 Windows 上遊戲的預設狀態)，不正確的前景行為對玩家的影響很小。應用程式的圖示會在工作列中閃爍以吸引注意，當玩家選取該圖示時，應用程式就會移至前景。

當 FSE 啟用時，工作列會隱藏。因此，玩家不太可能注意到背景視窗，也無法自行彌補。


## Related topics

- [PC 掌機概觀](/zh-TW/build/gdk-and-engines/handheld/overview.md)
- [掌機相容性指導方針與測試案例](/zh-TW/build/gdk-and-engines/handheld/handheld-guidelines-and-testcases.md)
- [平衡效能與電源效率](/zh-TW/build/gdk-and-engines/handheld/handheld-performance.md)
- [XGameSave API 概觀](/zh-TW/build/core-features/common/game-save/xgamesave.md)
- [封裝概觀](/zh-TW/build/core-features/common/packaging/overviews/packaging.md)
