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

# 平衡性能与能效

> 通过自动检测硬件、调整默认设置以及响应电源变化，在 ROG XBOX Ally 等 Windows 掌机上平衡性能与电池续航。

![ASUS ROG XBOX Ally X](https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/handheld/rog-xbox-ally-x.png?fit=max\&auto=format\&n=5IpvKlT-jmAaVkeY\&q=85\&s=ee22349c5b67c9ab3bd01120f186f74c)

作为一个平台，XBOX 不断发展，将玩家从主机带到每一块屏幕：PC 上的 XBOX、智能电视、流媒体设备、移动设备和 Web 浏览器。这一扩展涵盖了数以百万计的电池供电游戏设备。有关这些整体工作的详细信息，请参阅：[https://aka.ms/sustainablegamedev。](https://aka.ms/sustainablegamedev。)

以下是一些有用的文章和中心页面，可帮助游戏开发人员充分利用最新的游戏设备类别 (Windows 掌机)，使游戏在其上运行良好。

* 掌机兼容性 ([https://aka.ms/hhcompatguide)。提供指南、工具和示例，用于在便携式、支持触控且以游戏手柄为主的设备上打造出色的游戏体验。](https://aka.ms/hhcompatguide\)。提供指南、工具和示例，用于在便携式、支持触控且以游戏手柄为主的设备上打造出色的游戏体验。)
* 掌机性能 ([https://aka.ms/hhperfguide)。本系列重点介绍开发人员可以采取的简单步骤，使移动设备上的游戏运行时间更长、速度更快。](https://aka.ms/hhperfguide\)。本系列重点介绍开发人员可以采取的简单步骤，使移动设备上的游戏运行时间更长、速度更快。)

本文、这些资源以及更多内容均发布在 [https://aka.ms/xboxhhdev](https://aka.ms/xboxhhdev)

## 优化游戏内设置

### 为什么游戏内设置很重要？

正如本系列简介 ([https://aka.ms/hhperfintro](https://aka.ms/hhperfintro)) 中所述，游戏内设置是开发人员控制游戏在电池供电设备上更高效运行的几种方式中的第一种。当玩家在商店中查看 PC 上的 XBOX 游戏时，如果其设备能够使用最常见 (通常为默认) 的游戏设置以 30FPS 或更高的帧速率运行该游戏，产品详细信息页面 (PDP) 就会显示来自我们的 Performance Fit 功能的推荐。

![PC 上的 XBOX Performance Fit 体验](https://mintcdn.com/microsoft-4404708b/MVw3uKm0dcJ_XQoZ/images/handheld/xbox-on-pc-performance-fit-experience.webp?fit=max\&auto=format\&n=MVw3uKm0dcJ_XQoZ\&q=85\&s=b6316d0ff68ee54b406d4cbc81c6c9bf)

*图 1 - PC 上的 XBOX 商店产品详细信息页面 (PDP) 示例。突出显示的矩形 (黄色) 表示 Performance Fit 推荐显示的位置。*

目标是在 Windows 游戏掌机上启用易于开发人员定义的默认游戏设置，从而带来出色的初次玩家体验：

* **是的，它是一台 PC！** 与 Windows 游戏笔记本电脑一样，掌上游戏设备也是便携式 PC。它们配备触摸屏，可以依靠电池运行，并具有多种电源状态，以平衡性能和运行时间。
* **不，它不只是一台 PC！** 与 Windows 游戏笔记本电脑不同，人们期望掌上游戏 PC 能依靠电池电量玩游戏数小时，因此需要智能的游戏设置来帮助实现这一点。掌上 PC 可能没有键盘或鼠标。它们需要在用户界面的所有层级支持控制器，从 PC 上的 XBOX 体验，到与游戏启动器的交互，再到游戏过程中可能出现的每个提示。为方便玩家并提高辅助功能，游戏原生支持触控也会带来很大益处。

### 游戏内设置的主要建议有哪些？

以下是本文重要要点和各部分的摘要：

1. **调整游戏规模，使其在 Windows 游戏掌机上运行良好。** 这意味着开发人员需要专门针对电池供电设备进行测试并创建设置。这些设置应降低游戏规模以延长电池续航时间，但不能以牺牲游戏玩法或整体美术风格为代价。开发人员需要在市场上具有代表性的设备 (例如高能效的 ROG XBOX Ally 掌机) 上测试这些设置。
2. **实现硬件自动检测和游戏内设置的自动应用。** 一些游戏如今已经具备此功能。开发人员需要考虑游戏中有哪些选项可以与硬件能力相对应，从而创建智能默认设置。
3. **以 ROG XBOX Ally 和 ROG XBOX Ally X 作为首要参考。** 这些设备是首批采用本系列中所述设置优化的 Windows 游戏掌机，这些优化由 XBOX 与 ASUS 共同实现。

### 准则 | 实现硬件自动检测和游戏内设置的自动应用

我们提供了一个原生 C++ 示例 ([https://aka.ms/hhexpsample](https://aka.ms/hhexpsample "https://aka.ms/hhexpsample")) 和一个 Unity 托管 C# 示例 ([https://aka.ms/hhexpsample\_unity](https://aka.ms/hhexpsample_unity))。这些示例使开发人员可以更轻松地将检测代码复制并粘贴到自己的游戏中。这些代码片段可用于获取设备内硬件组件的能力信息。然后，开发人员可以利用这些能力为游戏创建合理的默认设置，并在各种设备上进行扩展。

以 ROG XBOX Ally 和 ROG XBOX Ally X 为例，以下是代码片段返回的值，以及指向 C++ 示例源代码中可找到该值的位置的链接。请参阅标有星号 (\*) 的项目，以及表格后面的详细说明。

| **组件** | **ROG XBOX Ally (2025)**\* | **ROG XBOX Ally X (2025)** | **说明** |
| - | - | - | - |
| IsHandheld ([IsDeviceHandheld.cpp](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/IsDeviceHandheld.cpp)) | TRUE | TRUE | 如果原始设备制造商 (OEM) 希望将设备识别为 Windows 游戏掌机，则会添加此标志。 |
| 主板产品名称 (BaseBoard Product Name)\* ([GetDeviceOEMInfo.cpp](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/GetDeviceOEMInfo.cpp)) | RC73YA | RC73XA | OEM 会对此 SMBIOS 字段进行编程，并可能使用它来区分设计为兼容 Windows 游戏掌机的 SKU。 |
| CPU ([Processor.cpp](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/Processor.cpp)) | AMD Ryzen Z2 A | AMD Ryzen AI Z2 Extreme | 与 GPU 一起，提供最有可能表明硬件类别的首要标识符。 |
| GPU ([GetGPUInfo.cpp](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/GetGPUInfo.cpp)) | 供应商 ID：1002 产品 ID：150E | 供应商 ID：1002 产品 ID：163F | GPU VID/PID 可以最广泛地表明硬件性能层级。 |
| 内存配置\*\*\* ([GetMemoryInfo.cpp](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/GetMemoryInfo.cpp)) | 总内存：16 GB 专用 VRAM：6 GB (从 16 GB 总内存中共享)  | 总内存：24 GB 专用 VRAM：8 GB (从 24 GB 总内存中共享)  | 有助于做出诸如纹理大小和缓存地图大小之类的决策。 |
| 屏幕分辨率 ([GetDeviceResolutionAndRefresh.cpp ](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/GetDeviceResolutionAndRefresh.cpp)) | 1920x1080\*\* | 1920x1080 | 匹配设备的原生分辨率可能会提高视觉质量，但如果不进行其他设置优化，也可能会降低性能。 |

> * "\*" = VRAM 分配是**用户可选**的。这些是默认值且不保证，仅作为用于基准性能分析计算的示例。
> * "\*\*" = 此设备推荐的默认分辨率为 720p。开发人员应测试其设置，以确定哪些设置能让游戏运行良好，并据此进行设置。此外，在测试表明游戏在较高分辨率下运行低于 30FPS 的情况下，某些按游戏设置可以覆盖向游戏通告的屏幕分辨率以提高效率，但玩家可以覆盖此设置。
> * "\*\*\*" = 对于 DirectX 游戏，现有建议是使用 [QueryVideoMemoryInfo](https://learn.microsoft.com/windows/win32/api/dxgi1_4/nf-dxgi1_4-idxgiadapter3-queryvideomemoryinfo) 动态确定游戏的视频内存预算。示例 [GetMemoryInfo.cpp](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/GetMemoryInfo.cpp) 中使用的 [(GlobalMemoryStatusEx)](https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-globalmemorystatusex) 方法是一种补充解决方案，适用于需要了解游戏使用内存的其他方面信息的情况。

**关于 UI/缩放系数的重要说明。** 针对屏幕分辨率的差异进行调整，有时会在游戏内 UI 的可读性方面产生不太理想的结果，尤其是在较小的屏幕上。有关屏幕尺寸和断点的一些常规应用指南可能对你的游戏设计师有所帮助，请参阅：[/windows/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design](https://learn.microsoft.com/windows/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design)。

### 准则 | 创建静态游戏内设置

静态游戏内设置仅考虑上次检查状态时单一电源状态下的硬件配置。创建静态游戏内设置首先要以某个客观指标 (例如帧速率) 为目标。

> **玩家期望**
>
> 游戏了解自身流畅运行所需的条件，并在默认安装时采用最佳设置，以提供至少 1080p30 的性能 (例如 ROG XBOX Ally X) 或 720p30 的性能 (ROG XBOX Ally)。
>
> **测试步骤**
>
> 1. **使用电池进行测试。** 在***未接通电源且电池充满***的掌机上使用默认设置安装并启动游戏。
> 2. **在启动时以及资产加载完成/IO 稳定后，使用 FPS 计量器监视性能。** 按 Windows + G 打开 Windows Game Bar 的每秒帧数 (FPS) 计量器，或运行 PresentMon (有关详细信息，请参阅 [GitHub 项目](https://github.com/GameTechDev/PresentMon)) 来实时记录和跟踪 FPS。
> 3. **关注最低 FPS 设置而非平均 FPS 设置。** 调整设置，直到 FPS 稳定地保持在至少 1080p30 (例如 ROG XBOX Ally X 或同等硬件) 或 720p30 (例如 ROG XBOX Ally 或同等硬件)。
> 4. **为高性能和高能效硬件配置创建游戏内设置库。** 保存这些设置，以便将来在不同设备上进行测试，从而确认适用于不同硬件 SKU (例如 ROG XBOX Ally 与 ROG XBOX Ally X) 的理想设置。
>
> **预期结果**
> 你将创建/捕获至少 \[2] 种游戏内设置，它们在高性能类 Windows 游戏掌机 (例如 ROG XBOX Ally X) 和高能效类 (例如 ROG XBOX Ally) 上都能同样良好地保持稳定的帧速率。

### 准则 | 创建动态游戏内设置

动态游戏内设置比静态游戏内设置更加精细。它们至少对应两种电源状态 (接通电源或使用电池)，并且理想情况下可以在游戏运行时响应电源模式更改事件。

> **玩家期望**
>
> 尤其是对于 Windows 游戏掌机，当我在接通电源
> 和使用电池之间来回切换时，我希望游戏能尽可能兼顾性能和电池续航。游戏了解自身流畅运行所需的条件，并在默认安装时采用最佳设置，以提供至少 1080p30 的性能 (例如 ROG XBOX Ally X) 或 720p30 的性能 (ROG XBOX Ally)
>
> **测试步骤**
>
> 1. **使用电池进行测试。** 在*未接通电源且电池充满*的掌机上使用默认设置安装并启动游戏。
> 2. **在启动时以及资产加载完成/IO 稳定后，使用 FPS 计量器监视性能。** 按 Windows + G 打开 Windows Game Bar 的每秒帧数 (FPS) 计量器，或运行 PresentMon 来实时记录和跟踪 FPS。
> 3. **关注最低 FPS 设置而非平均 FPS 设置。** 调整设置，直到 FPS 稳定地保持在至少 1080p30 (例如 ROG XBOX Ally X 或同等硬件) 或 720p30 (例如 ROG XBOX Ally 或同等硬件)。
> 4. **为高性能和高能效硬件配置创建游戏内设置库。** 保存这些设置，以便将来在不同设备上进行测试，从而确认适用于不同硬件 SKU (例如 ROG XBOX Ally 与 ROG XBOX Ally X) 的理想设置。
> 5. **实现检测方法。** 请参阅本文中的动态预设检测部分。
>
> **预期结果**
> 你将创建/捕获最多 \[4] 种
> 游戏内设置，这些设置将在游戏启动时或在
> 收到电源模式已更改的通知时应用。
> 这些游戏内设置对应于高性能和高能效
> 类别的 Windows 游戏掌机，同时也对应于每台设备在频繁切换电池时的
> 接通电源和使用电池状态。

### 准则 | 检测硬件电源状态

* **动态 (推荐)：** 如果游戏使用 **RegisterPowerSettingNotificiation** API 并结合任何已知的[电源设置 GUID](https://learn.microsoft.com/windows/win32/power/power-setting-guids) 注册接收电源方案/配置文件更改，系统还会发送更多 **WM\_POWERBROADCAST** 消息，其 WPARAM 值设置为 **PBT\_POWERSETTINGCHANGE**，并在 LPARAM 值中附带额外的详细信息。例如，注册 **GUID\_POWERSCHEME\_PERSONALITY** 会在系统从"平衡"更改为"高性能"等情况下发出通知。使用 **GUID\_ACTIVE\_POWERSCHEME** 会在发生任何电源配置文件更改时发出通知。使用 **GUID\_ENERGY\_SAVER\_STATUS** 会在设备进入电池/节能模式时发出通知。
* **静态：** 可以如示例中所示手动查询设备，轻松确定设备是接通电源还是使用电池运行。

### 支持 | 如果我对针对掌上游戏 PC 优化游戏设置有疑问或顾虑，应该去哪里寻求帮助？

除了以下资源摘要外，参与 XBOX 开发人员计划 (例如 ID\@XBOX) 的开发人员可以在论坛 ([https://forums.xboxlive.com](https://forums.xboxlive.com) – 需要[使用有效的 NDA 帐户登录](https://developer.microsoft.com/games/articles/2023/11/publishing-pathways-id-at-xbox/)) 上与我们联系。所有开发人员还可以在 Microsoft Game Dev Discord 服务器 ([https://discord.gg/msftgamedev](https://discord.gg/msftgamedev)) 上与我们联系。

* **Microsoft Game Dev 掌机开发中心：** [https://developer.microsoft.com/games/resources/handheld-development/](https://developer.microsoft.com/games/resources/handheld-development/)
* **Microsoft Windows 游戏掌机代码示例：**[https://developer.microsoft.com/games/articles/2025/07/windows-gaming-handheld-code-samples/](https://developer.microsoft.com/games/articles/2025/07/windows-gaming-handheld-code-samples/)
* **Microsoft Game Dev Discord：** [https://discord.gg/msftgamedev](https://discord.gg/msftgamedev)
* **Microsoft NDA 开发人员论坛：** [https://forums.xboxlive.com](https://forums.xboxlive.com) (使用"handheld"标记将你的请求转给我们的主题专家)

***


## Related topics

- [性能与保留](https://docs.xbox.com/zh-CN/services/playfab/data-analytics/legacy/insights/performance-retention.md)
- [混合 CPU 环境中的游戏性能](https://docs.xbox.com/zh-CN/build/gdk-and-engines/guides/hybrid-cpu-performance.md)
- [游戏可持续性：Call of Duty 案例研究](https://docs.xbox.com/zh-CN/build/game-principles/sustainability/case-studies/case-studies-cod.md)
- [XBOX 游戏能效基础要点](https://docs.xbox.com/zh-CN/build/game-principles/sustainability/energy-efficiency-essentials.md)
- [Xbox 无障碍指南 114](https://docs.xbox.com/zh-CN/build/game-principles/accessibility/xag-deep-dives/xag-114-ui-context.md)
