游戏模式干预项是由原始设备制造商 (OEM) 设置的游戏专用优化,用于改善开发者不再更新的游戏的性能。例如:
- 使用 WindowManager 调整 backbuffer 的大小。
- 使用 ANGLE,而非原生 GLES 驱动程序。
您可以让游戏支持和管理 Game Mode API,以便它替换原始设备制造商 (OEM) 提供的游戏模式干预项。
Game Mode API 和游戏模式干预项适用于以下设备:
- 部分 Android 12 设备
- 搭载 Android 13 或更高版本的设备
每款游戏都可以:
- 实现 Game Mode API 行为,
- 向 OEM 提议游戏模式干预项设置,或者
- 明确选择停用游戏模式干预项。
背景
本部分介绍了游戏模式干预的用途,以及如何针对每种模式优化游戏。
调整 WindowManager backbuffer 的大小
调整 WindowManager backbuffer 大小这项干预可以降低设备的 GPU 负载。游戏保持目标帧速率时,这项干预还能够降低耗电量。
启用大小调整功能后,GPU 功耗和总体系统功耗最高可分别降低 30% 和 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>
请务必在每次选择游戏模式后重启游戏。缩减干预需要重启应用。
选择停用干预项
您可以通过选择停用某项干预,控制是否向游戏应用这项干预。每项干预都有自己的选择停用设置。
- 用于控制用户选择启用或停用游戏模式的配置 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"
/>
- 重新构建并重新提交您的游戏,以选择停用。
默认情况下,系统会使用原始设备制造商 (OEM) 设置的干预,除非您明确为游戏选择停用这些干预。
资源
如需详细了解如何衡量和优化游戏性能,请参阅以下资源:
系统性能分析器 - 分析 CPU 使用率和图形调用。
Android GPU 检查器 - 对 Android 设备上的图形进行性能分析。
Android Frame Pacing 库 - 帮助 OpenGL 和 Vulkan 游戏实现流畅的渲染和帧同步。
Android Performance Tuner - 在 Android 设备上大规模衡量和优化帧速率及图形。
功耗性能分析器 - 帮助您了解应用在哪里耗用了不必要的电量。