游戏模式干预项

游戏模式干预项是由原始设备制造商 (OEM) 设置的游戏专用优化措施,用于提高开发者不再更新的游戏的性能。例如:

  • 使用 WindowManager backbuffer 调整大小。
  • 使用 ANGLE,而非原生 GLES 驱动程序。

您可以让游戏支持并管理 Game Mode API,让它替换 OEM 提供的游戏模式干预项。

Game Mode API 和游戏模式干预项适用于以下设备:

每款游戏都可以:

  • 实现 Game Mode API 行为;
  • 向 OEM 建议游戏模式干预设置,或
  • 明确选择停用游戏模式干预项。

背景

本部分介绍了游戏模式干预项的用途以及如何针对每种模式优化游戏。

调整 WindowManager backbuffer 的大小

调整 WindowManager backbuffer 大小这项干预可以降低设备的 GPU 负载。游戏保持目标帧速率时,这项干预还能够降低耗电量。

启用大小调整功能可以减少高达 30% 的 GPU,降低系统总体功耗 10%。根据所用设备、环境条件以及其他因素(例如同时处理),具体结果可能会有所不同。

如果游戏受 GPU 限制且未配速,那么在 GPU 负载降低期间,它可能会拥有较高的帧速率。

我们强烈建议所有游戏都安排合理的节奏,因为不均匀的帧速率会严重影响用户对性能的感知。

FPS 节流

Android FPS 节流是一项游戏模式干预方式,可帮助游戏以更稳定的帧速率运行,从而减少耗电量。Android 13 或更高版本提供了这项干预。如需了解详情,请参阅 FPS 节流概览

评估游戏模式干预项

本部分使用 adb 命令。

设置模式

您必须先在应用的游戏模式配置文件中停用游戏模式,然后才能测试游戏模式干预项。否则,平台将绕过它们,仅遵循游戏内优化。

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="false"
    android:supportsPerformanceGameMode="false"
/>

(可选)备份现有设备配置

对于 Pixel 或其他设备,您的设备配置中可能有预先存在的游戏干预配置。您可以使用以下命令查询配置:

adb shell device_config get game_overlay <PACKAGE_NAME>

如果查询返回 null,请忽略预先存在的配置。否则,请将其保存,并在评估后重置。

评估干预措施

如需单独评估 WindowManager backbuffer 大小调整干预的影响,请使用以下命令在不同游戏模式下设置不同的 WindowManager 缓冲区大小调整值。

adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5

在上面的示例中,mode=2 为“性能”,mode=3 为“省电模式”。downscaleFactor 值指定为适用于调整大小设置的百分比(例如,0.7 为 70%,0.8 为 80%)。90% (0.9) 调整幅度几乎可以忽略不计,而 50% (0.5) 调整幅度非常大。

警告:在 Android 12 中,可能无法正确调整子进程的大小。尤其要确保消息框和弹出式窗口正确呈现。我们建议您将调整大小设置限制为至少 70%。

设置新的调整大小值后,在不同游戏模式之间切换,以了解 WindowManager backbuffer 大小调整干预对游戏的影响:

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

请务必在每次选择游戏模式后重启游戏。缩减干预需要重启应用。

选择停用干预项

您可以通过选择停用某项干预功能来控制是否将某项干预措施应用于您的游戏。每项干预都有自己的选择停用设置。

  1. 用于控制是否启用游戏模式的 XML 文件同样用于干预设置:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:allowGameDownscaling="false"
    android:allowGameFpsOverride="false"
/>
  1. 重新构建并重新提交您的游戏,以选择停用。

默认情况下,系统将使用原始设备制造商 (OEM) 设置的干预,除非您明确选择为游戏停用这些干预。

资源

如需详细了解如何衡量和优化游戏性能,请参阅以下资源: