平衡性能和电源效率

华硕 ROG XBOX ALLY X 华硕 ROG XBOX ALLY

作为一个平台,Xbox 已发展成为将玩家从主机带到每个屏幕:Pc 上的 Xbox、智能电视、流式处理设备、移动设备和 Web 浏览器。 这包括数百万个由电池供电的游戏设备。 此处详细介绍了这些整体工作: https://aka.ms/sustainablegamedev

下面是一些有用的文章和中心页面,可帮助游戏开发人员利用使游戏在最新游戏类别(Windows 手持设备)上正常运行。

  • 手持兼容性 (https://aka.ms/hhcompatguide) 。 指南、工具和示例,用于在便携式、支持触摸和游戏板优先的设备上构建出色的游戏体验。
  • 手持性能 (https://aka.ms/hhperfguide) 。 本系列重点介绍开发人员可以采取的简单步骤,使移动设备上的游戏运行时间更长、更快。

本文、这些资源以及更多内容将在 https://aka.ms/xboxhhdev

优化 In-Game 设置

为什么 In-Game 设置很重要?

如 () https://aka.ms/hhperfintro 系列简介中所述,In-Game 设置是开发人员可以控制游戏在电池供电设备上更高效运行方式的几种方法中的第一种。 当玩家在应用商店中查看 Xbox 电脑版游戏时,如果他们的设备可以使用最常见的 (通常默认) 游戏设置, (PD) P 的“产品详细信息”页面会显示性能适合功能中的建议。

Pc 上的 Xbox 性能适合体验

图 1 - (PDP) 的示例 Xbox on PC Store 产品详细信息页。 黄色) 突出显示的矩形 (显示性能拟合建议的打印位置。

目标是在 Windows 游戏手持设备上启用默认游戏设置,这些设置易于开发人员定义,以允许出色的首次玩家体验:

  • 是的,这是一台电脑! 与 Windows 游戏笔记本电脑一样,手持游戏设备也是便携式电脑。 它们集成了触摸屏,可以在具有各种电源状态的电池上运行,以平衡性能和运行时间。
  • 不,这不仅仅是一台电脑! 与 Windows 游戏笔记本电脑不同,手持游戏电脑预计在电池电量下玩游戏数小时,并且需要智能游戏设置来帮助实现这一目标。 手持电脑可能没有键盘或鼠标,需要控制器支持 Xbox 电脑上的所有用户界面层,以便与游戏启动器和游戏时可能弹出的每个提示进行交互。 游戏还将从为玩家提供本机触摸支持来获得便利性和辅助功能方面大有裨益。

In-Game 设置的关键建议是什么?

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

  1. 缩放游戏以在 Windows 游戏手持设备上正常运行。 这意味着开发人员专门为电池供电的设备测试和创建设置。 这些设置应缩小游戏规模,以便延长电池使用时间,但不会以牺牲游戏玩法或整体艺术风格为代价。 他们需要在代表市场 (的设备(例如高效 ROG Xbox Ally 手持设备) )上测试这些设置。
  2. 实现自动检测硬件和 In-Game 设置的应用。 目前,某些游戏已经拥有此功能,但开发人员需要考虑其游戏中有哪些选项可用于映射到硬件功能,以创建智能默认值。
  3. 让 ROG Xbox Ally 和ROG Xbox Ally X成为你的第一个指南。 这些设备将是首款采用本系列中引用的设置优化的 Windows 游戏手持设备,这些设置将从 Xbox + ASUS 实现。

指南 |实现硬件的自动检测和 In-Game 设置的应用

我们提供了本机 C++ 示例 (https://aka.ms/hhexpsample) 和Unity托管 C# 示例 (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) TRUE TRUE 如果原始设备制造商 (OEM) 想要被标识为 Windows 游戏手持设备,则会添加此标志。
BaseBoard 产品名称* (GetDeviceOEMInfo.cpp) RC73XA RC73YA 此 SMBIOS 字段由 OEM 编程,可用于区分设计为兼容 Windows 游戏手持设备的 SKU。
CPU (Processor.cpp) AMD Ryzen Z2 A AMD Ryzen AI Z2 Extreme 除了 GPU,还提供了最有可能指示硬件类的第一个标识符。
GPU (GetGPUInfo.cpp) 供应商 ID:1002
产品 ID:150E
供应商 ID:1002
产品 ID: 163F
GPU VID/PID 提供硬件性能层的最广泛指示。
内存配置*** (GetMemoryInfo.cpp) 总内存:16GB

专用 VRAM:6GB (共享 16GB 总)
总内存:24GB

专用 VRAM:8GB (共享 24GB 总)
对于做出纹理大小和缓存映射等决策非常有用。
屏幕分辨率 (GetDeviceResolutionAndRefresh.cpp ) 1920x1080** 1920x1080 匹配设备的本机分辨率可能会提高视觉质量,或者在没有其他设置优化的情况下降低性能。
  • “*” = VRAM 分配是 用户可选择的。 这些是默认值,并不能保证,只是用于基线挥霍计算的示例。
  • “**” = 此设备的建议默认分辨率为 720p。 开发人员应测试其设置,以确定哪些功能适合其游戏并相应地设置。 此外,某些 Per-Game 设置可以覆盖向游戏播发的屏幕分辨率,以在测试显示此游戏以更高分辨率运行低于 30FPS 的情况下提高效率,但玩家可以重写此功能。
  • “***” = 对于 DirectX 游戏,现有建议是使用 QueryVideoMemoryInfo 动态确定视频内存的游戏预算。 示例 中使用的 (GlobalMemoryStatusEx) 方法 GetMemoryInfo.cpp 是一种额外的解决方案,以防游戏使用内存的其他方面值得了解。

有关 UI/缩放因子的重要说明。 调整屏幕分辨率的差异有时会在游戏内 UI 的可读性方面产生不太理想的结果,尤其是在较小的屏幕上。 有关屏幕大小和断点的一些常规应用指南(可能对游戏设计人员有所帮助),可在此处找到: /windows/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design

指南 |创建静态 In-Game 设置

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

玩家期望

游戏了解它需要什么才能发挥良好,并且默认使用最佳设置安装,以提供至少 1080p30 性能 (例如,ROG Xbox Ally X) 或 720p30 性能 (ROG Xbox Ally) 。

测试步骤

  1. 在电池上测试。 使用默认设置在已 满电池供电的 手持设备上安装并启动游戏。
  2. 在启动时和资产加载/IO 稳定后,使用 FPS 计量监视性能。 按 Windows + G 或运行 PresentMon (,访问 Windows 游戏栏每秒帧数 (FPS) 计量, 请参阅 GitHub 项目,了解) 实时记录和跟踪 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) )保持稳定的帧速率。

指南 |创建动态 In-Game 设置

动态游戏内设置比静态游戏内设置更精细。 它们映射到至少 2 个电源状态, (插入电源或电池) ,理想情况下,可以在游戏运行时响应电源模式更改事件。

玩家期望

尤其是对于 Windows 游戏手持设备,当我在接通电源或电池电源之间来回跳动时,我期望我的游戏能够尽可能平衡性能和电池使用时间。游戏了解它需要什么才能发挥良好,默认情况下会安装最佳设置,以提供至少 1080p30 的性能 (例如,ROG Xbox Ally X) 或 720p30 性能 (ROG Xbox Ally)

测试步骤

  1. 在电池上测试。 使用默认设置在已 满电池供电的 手持设备上安装并启动游戏。
  2. 在启动时和资产加载/IO 稳定后,使用 FPS 计量监视性能。 按 Windows + G 或运行 PresentMon 以实时记录和跟踪 FPS,访问 Windows 游戏栏每秒帧数 (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 和任何已知 Power Setting GUID 接收电源方案/配置文件更改,则还会发送其他 WM_POWERBROADCAST 消息,并将 WPARAM 值设置为 PBT_POWERSETTINGCHANGE 以及 LPARAM 值中的其他详细信息。 例如,注册 GUID_POWERSCHEME_PERSONALITY 将通知系统是否已从“平衡”更改为“高性能”。 使用 GUID_ACTIVE_POWERSCHEME 将通知是否发生了任何电源配置文件更改。 使用 GUID_ENERGY_SAVER_STATUS 将通知设备是否已进入电池/节能模式。
  • 静态: 可以手动查询设备,如示例所示,以便更简单地确定设备是已供电还是电池供电。

支持 |如果我对优化手持游戏电脑的游戏设置有任何疑问或疑虑,我该去哪里?

除了以下资源摘要外,还鼓励 Xbox 开发人员计划(如ID@Xbox)的开发人员在论坛 (https://forums.xboxlive.com - 活动 NDA 帐户登录所需的) 与我们联系,所有开发人员都可以在 Microsoft Game Dev Discord 服务器 (https://discord.gg/msftgamedev) 与我们联系。