- Handheld Compatibility(https://aka.ms/hhcompatguide)。为便携、触屏且以手柄为主的设备打造出色游戏体验的指南、工具与示例。
- Handheld Performance(https://aka.ms/hhperfguide)。本系列聚焦开发者可以采取的简单步骤,让移动设备上的游戏运行得更久、更快。
优化游戏内设置
游戏内设置为什么重要?
正如系列引言(https://aka.ms/hhperfintro)所述,游戏内设置是开发者控制游戏在电池供电设备上更高效运行的几种方式中的第一种。当玩家在商店中查看 XBOX on PC 游戏时,产品详情页(PDP)会显示我们 Performance Fit 功能给出的推荐,提示他们的设备能否使用最常见(通常是默认)的游戏设置以 30FPS 或更高的帧率运行该游戏。 图 1 - XBOX on PC 商店产品详情页(PDP)示例。黄色矩形高亮的位置展示了 Performance Fit 推荐的显示位置。 我们的目标是让 Windows 游戏掌机上的默认游戏设置易于开发者定义,从而为玩家提供出色的初次体验:- 是的,它是 PC! 与 Windows 游戏笔记本类似,掌机游戏设备也是便携 PC。它们配备触屏,可以通过电池供电,并在性能与运行时间之间提供多种电源状态。
- 不,它不仅是 PC! 与 Windows 游戏笔记本不同,掌机 PC 预期在电池供电下能玩数小时,需要智能的游戏设置来帮助实现这一目标。掌机 PC 可能没有键盘或鼠标,需要在从 XBOX on PC 体验到与游戏启动器的交互,再到游玩期间可能出现的每一个提示的所有 UI 层级中都支持手柄。游戏也会因原生触控支持而受益良多,方便玩家使用并提高可访问性。
游戏内设置的关键建议有哪些?
以下是本文重要要点与主要章节的总结:- 让你的游戏能在 Windows 游戏掌机上良好运行,进行相应缩放。 这意味着开发者需要专门为电池供电设备进行测试与设置。这些设置应对游戏进行降配,以延长电池续航,但不牺牲玩法或整体艺术风格。他们需要在市面上具有代表性的设备(例如高效率的 ROG XBOX Ally 掌机)上测试这些设置。
- 实现硬件的自动检测,并应用游戏内设置。 一些游戏今天已经具备这一功能。开发者需要思考游戏中哪些选项对应硬件能力,并据此设计合理的默认值。
- 以 ROG XBOX Ally 与 ROG XBOX Ally X 作为你的首选参考。 这两款设备是首批采用本系列所提设置优化的 Windows 游戏掌机,优化由 XBOX + ASUS 实现。
准则 | 实现硬件自动检测并应用游戏内设置
我们提供了一份原生 C++ 示例(https://aka.ms/hhexpsample)和一份 Unity 托管 C# 示例(https://aka.ms/hhexpsample_unity)。这些示例让开发者可以更方便地把检测代码复制粘贴到自己的游戏中。这些代码片段可用于获取设备中硬件组件的能力信息。开发者随后可以利用这些能力,为自己的游戏创建能覆盖多类设备的合理默认值。 以 ROG XBOX Ally 与 ROG XBOX Ally X 为例,以下是代码片段返回的值,并附上在 C++ 示例源代码中对应位置的链接。带星号(*)的项在表格下方有详细说明。关于 UI / 缩放因子的重要提示。 针对屏幕分辨率差异做的调整,在游戏内 UI 的可读性方面有时会带来不太理想的结果,尤其是在较小屏幕上。有关屏幕尺寸与响应式设计断点的一般应用指南可能对你的游戏设计师有帮助:/windows/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design。
- ”*” = VRAM 分配是用户可选的。表中所列为默认值,不作保证,仅作为基线分析计算的示例。
- ”**” = 该设备推荐的默认分辨率为 720p。开发者应测试自己的设置,决定什么分辨率对自己的游戏运行良好,并据此设置。此外,某些每游戏设置可以覆盖告知游戏的屏幕分辨率,以便在测试显示该游戏在更高分辨率下低于 30FPS 时提升效率,但玩家可以覆盖此设置。
- ”***” = 对于 DirectX 游戏,现有建议是使用 QueryVideoMemoryInfo 动态判断视频内存的游戏预算。示例 GetMemoryInfo.cpp 中使用的 (GlobalMemoryStatusEx) 方法作为附加方案,可用于在其他维度上了解游戏如何使用内存。
准则 | 创建静态游戏内设置
静态游戏内设置只考虑上次检查时单一电源状态下的硬件配置。创建静态游戏内设置从瞄准一个客观指标(例如帧率)开始。玩家期望 游戏了解自己需要什么才能玩得好,并且默认安装时选择最佳设置,以提供最低 1080p30(如 ROG XBOX Ally X)或最低 720p30(ROG XBOX Ally)的性能。 测试步骤期望结果 你将创建/记录至少 [2] 套游戏内设置,分别为 Windows 游戏掌机的高性能类(如 ROG XBOX Ally X)与高效能类(如 ROG XBOX Ally)同样良好地保持稳定帧率。
- 在电池上测试。 使用你的默认设置,在未连接充电器、电池满电的掌机设备上安装并启动游戏。
- 在启动时以及资源加载完毕 / IO 稳定后,用 FPS 计量表监控性能。 通过按 Windows + G 打开 Windows Game Bar 的每秒帧数(FPS)计量表,或运行 PresentMon(有关更多信息,参见 GitHub 项目)实时记录并跟踪 FPS。
- 关注最低 FPS 而非平均 FPS 的设置。 调整设置直到 FPS 稳定至少达到 1080p30(如 ROG XBOX Ally X 或同等硬件)或 720p30(如 ROG XBOX Ally 或同等硬件)。
- 为高性能与高效能硬件配置分别创建一套游戏内设置库。 保存这些设置,便于在不同设备上后续测试,以确认不同硬件 SKU(如 ROG XBOX Ally 与 ROG XBOX Ally X)的理想设置。
准则 | 创建动态游戏内设置
动态游戏内设置比静态游戏内设置粒度更细。它们至少映射到两种电源状态(插电或使用电池),并且理想情况下能在游戏运行时响应电源模式变更事件。玩家期望 尤其在 Windows 游戏掌机上,当我在插电与电池供电之间来回切换时, 我期望游戏在性能与电池续航之间尽可能保持平衡。游戏了解自己需要什么才能玩得好,并且默认安装时选择最佳设置,以提供最低 1080p30(如 ROG XBOX Ally X)或最低 720p30(ROG XBOX Ally)的性能 测试步骤期望结果 你将创建/记录最多 [4] 套游戏内设置,分别在游戏启动时或在收到电源模式变更通知时应用。 这些游戏内设置对应于 Windows 游戏掌机的高性能类与高效能类, 也对应各设备频繁切换电池状态时的插电与使用电池状态。
- 在电池上测试。 使用你的默认设置,在未连接充电器、电池满电的掌机设备上安装并启动游戏。
- 在启动时以及资源加载完毕 / IO 稳定后,用 FPS 计量表监控性能。 通过按 Windows + G 打开 Windows Game Bar 的每秒帧数(FPS)计量表,或运行 PresentMon 实时记录并跟踪 FPS。
- 关注最低 FPS 而非平均 FPS 的设置。 调整设置直到 FPS 稳定至少达到 1080p30(如 ROG XBOX Ally X 或同等硬件)或 720p30(如 ROG XBOX Ally 或同等硬件)。
- 为高性能与高效能硬件配置分别创建一套游戏内设置库。 保存这些设置,便于在不同设备上后续测试,以确认不同硬件 SKU(如 ROG XBOX Ally 与 ROG XBOX Ally X)的理想设置。
- 实现检测方法。 参见本文的“Dynamic Preset 检测”一节。
准则 | 检测硬件电源状态
- 动态(推荐): 如果作品通过 RegisterPowerSettingNotificiation API 用已知的 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 —— 需要有效的 NDA 账号登录)。所有开发者也可以在 Microsoft Game Dev Discord 服务器(https://discord.gg/msftgamedev)上联系我们。- Microsoft Game Dev Handheld Development Hub: 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/
- Microsoft Game Dev Discord: https://discord.gg/msftgamedev
- Microsoft NDA Developer Forums: https://forums.xboxlive.com(使用 “handheld” 标签,将你的请求分派给我们的相关专家)
