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

# 在性能与能效之间取得平衡

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

<img src="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" alt="ASUS ROG XBOX Ally X" width="946" height="417" data-path="images/handheld/rog-xbox-ally-x.png" />

作为一个平台,XBOX 正在不断演进,把玩家从主机带到每一块屏幕:PC 上的 XBOX、智能电视、流媒体设备、移动设备和 Web 浏览器。这一扩展中包含了数百万台由电池供电的游戏设备。这些整体努力可在以下页面详细了解:[https://aka.ms/sustainablegamedev。](https://aka.ms/sustainablegamedev。)

以下是一些对游戏开发者有帮助的文章和汇总页面,帮助他们把握机会,把游戏做好并跑好在最新的游戏品类:Windows 掌机。

* Handheld Compatibility([https://aka.ms/hhcompatguide)。为便携、触屏且以手柄为主的设备打造出色游戏体验的指南、工具与示例。](https://aka.ms/hhcompatguide\)。为便携、触屏且以手柄为主的设备打造出色游戏体验的指南、工具与示例。)
* Handheld Performance([https://aka.ms/hhperfguide)。本系列聚焦开发者可以采取的简单步骤,让移动设备上的游戏运行得更久、更快。](https://aka.ms/hhperfguide\)。本系列聚焦开发者可以采取的简单步骤,让移动设备上的游戏运行得更久、更快。)

本文、这些资源以及更多内容会在 [https://aka.ms/xboxhhdev](https://aka.ms/xboxhhdev) 上推广。

## 优化游戏内设置

### 游戏内设置为什么重要?

正如系列引言([https://aka.ms/hhperfintro)所述,游戏内设置是开发者控制游戏在电池供电设备上更高效运行的几种方式中的第一种。当玩家在商店中查看](https://aka.ms/hhperfintro\)所述,游戏内设置是开发者控制游戏在电池供电设备上更高效运行的几种方式中的第一种。当玩家在商店中查看) XBOX on PC 游戏时,产品详情页(PDP)会显示我们 Performance Fit 功能给出的推荐,提示他们的设备能否使用最常见(通常是默认)的游戏设置以 30FPS 或更高的帧率运行该游戏。

<img src="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" alt="XBOX on PC Performance Fit Experience" width="2264" height="1052" data-path="images/handheld/xbox-on-pc-performance-fit-experience.webp" />

*图 1 - XBOX on PC 商店产品详情页(PDP)示例。黄色矩形高亮的位置展示了 Performance Fit 推荐的显示位置。*

我们的目标是让 Windows 游戏掌机上的默认游戏设置易于开发者定义,从而为玩家提供出色的初次体验:

* **是的,它是 PC!** 与 Windows 游戏笔记本类似,掌机游戏设备也是便携 PC。它们配备触屏,可以通过电池供电,并在性能与运行时间之间提供多种电源状态。
* **不,它不仅是 PC!** 与 Windows 游戏笔记本不同,掌机 PC 预期在电池供电下能玩数小时,需要智能的游戏设置来帮助实现这一目标。掌机 PC 可能没有键盘或鼠标,需要在从 XBOX on PC 体验到与游戏启动器的交互,再到游玩期间可能出现的每一个提示的所有 UI 层级中都支持手柄。游戏也会因原生触控支持而受益良多,方便玩家使用并提高可访问性。

### 游戏内设置的关键建议有哪些?

以下是本文重要要点与主要章节的总结:

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                                                  | 该 SMBIOS 字段由 OEM 写入,可用来区分设计为兼容 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))                                          | Vendor ID: 1002<br />Product ID: 150E                   | Vendor ID: 1002<br />Product ID: 163F                   | GPU 的 VID/PID 提供对硬件性能等级最宽泛的指示。                      |
| 内存配置\*\*\* ([GetMemoryInfo.cpp) ](https://github.com/microsoft/Xbox-GDK-Samples/blob/main/Samples/Handheld/Snippets/GetMemoryInfo.cpp)                            | 总内存: 16 GB<br /><br />专用 VRAM: 6 GB(从 16 GB 中共享) <br /> | 总内存: 24 GB<br /><br />专用 VRAM: 8 GB(从 24 GB 中共享) <br /> | 有助于做出诸如纹理大小和缓存图大小等决策。                               |
| 屏幕分辨率 ([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. **实现检测方法。** 参见本文的“Dynamic Preset 检测”一节。
>
> **期望结果**
> 你将创建/记录最多 \[4]
> 套游戏内设置,分别在游戏启动时或在收到电源模式变更通知时应用。
> 这些游戏内设置对应于 Windows 游戏掌机的高性能类与高效能类,
> 也对应各设备频繁切换电池状态时的插电与使用电池状态。

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

* **动态(推荐):** 如果作品通过 **RegisterPowerSettingNotificiation** API 用已知的 [Power Setting GUIDs](https://learn.microsoft.com/windows/win32/power/power-setting-guids) 之一注册接收电源方案/配置变更,则会额外收到 WPARAM 值设置为 **PBT\_POWERSETTINGCHANGE** 的 **WM\_POWERBROADCAST** 消息,LPARAM 中还包含额外详情。例如,注册 **GUID\_POWERSCHEME\_PERSONALITY** 会通知系统从(比如)Balanced 切换到 High Performance 的变化。使用 **GUID\_ACTIVE\_POWERSCHEME** 会通知任何电源方案的变更。使用 **GUID\_ENERGY\_SAVER\_STATUS** 会通知设备进入电池/节能模式。
* **静态:** 也可以像示例中那样手动查询设备,以简单判断设备是插电还是使用电池。

### 支持 | 如果我在优化掌机 PC 游戏设置时有疑问或担忧,该到哪里寻求帮助?

除下面的资源汇总外,加入 ID\@XBOX 等 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 Handheld Development Hub:** [https://developer.microsoft.com/games/resources/handheld-development/](https://developer.microsoft.com/games/resources/handheld-development/)
* **Microsoft Windows Gaming Handheld Code Samples:** [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 Developer Forums:** [https://forums.xboxlive.com](https://forums.xboxlive.com)(使用 "handheld" 标签,将你的请求分派给我们的相关专家)

***


## Related topics

- [《使命召唤：现代战争 II》与《Warzone》案例研究](/zh-CN/build/game-principles/sustainability/case-studies/case-studies-cod.md)
- [混合 CPU 环境下的游戏性能](/zh-CN/build/gdk-and-engines/guides/hybrid-cpu-performance.md)
- [性能与保留](/zh-CN/services/playfab/data-analytics/legacy/insights/performance-retention.md)
- [什么是 PlayFab Economy？](/zh-CN/services/playfab/economy-monetization/economy-what-is.md)
- [XBOX One 中的音频架构](/zh-CN/build/console-features/audio/overviews/xbox-one-audio-architecture.md)
