改进性能和散热管理对于开发成功的 Android 游戏至关重要。传统上,开发者必须通过降低游戏保真度或进一步优化渲染程序来管理这些问题。这些更改往往针对特定游戏,并且往往不够灵活。
Android 生态系统中的多个参与者为开发者提供了自适应性能 API。为了简化自适应性能功能的集成并减少生态系统中的碎片化,Google 和 MediaTek 携手合作集成了我们的产品:Android 动态性能框架 (ADPF) 和 MediaTek 自适应游戏技术 (MAGT)。
借助 ADPF,开发者能够根据实时热情况调整游戏工作负载,并为操作系统提供提示以优化当前工作负载的性能。您可以使用这些信号来调整保真度和性能设置,例如分辨率、帧速率,甚至资源加载策略。这样可以更好地平衡性能、散热和保真度,尽可能为 Android 游戏玩家提供最佳体验。Android 生态系统一直在充分利用这项技术。通过在运行时调整工作负载以响应 Thermal API,Kakao Games 的 Ares 得以将 FPS 稳定性提高到 96%。
MediaTek 是领先的 Android SoC 提供商。该公司生产了一些芯片,例如新的 Dimensity 9300。MediaTek 还提供 MAGT SDK,该 SDK 已于 2021 年推出。该 SDK 提供了用于在 MediaTek SoC 上调整性能的高级功能,例如有关实时性能的精细信息以及有关增加工作负载的提示。除了向开发者提供 MAGT 之外,MediaTek 还开始提供增强的 ADPF 功能。
![](https://developer.android.google.cn/static/images/cards/distribute/stories/mediatek_google.jpg?authuser=8&hl=ca)
使用 ADPF 防止温控降频并优化性能
MediaTek 允许 ADPF 框架访问当前和目标设备温度,以防止严重节流。利用 ADPF getThermalHeadroom()
函数,应用可以在设备进入严重节流模式之前估算可用的热余量。使用此估算值,应用可以动态调整工作负载以防止设备触发限制,从而改善整体用户体验。
该应用(以 Unity 的 Boat Attack 演示为例)还使用 Performance Hint Session API 来优化其性能。它分别通过 updateTargetWorkDuration()
和 reportActualWorkDuration()
函数提供每一帧的目标帧时间和当前帧时间。MediaTek 平台会计算两次 reportActualWorkDuration()
调用之间的工作负载,并分配足够的 CPU 容量,以确保可在目标持续时间内完成工作负载。
因此,MediaTek 平台能够在功耗平衡的情况下始终提供最佳的每秒帧数 (FPS),保证流畅的用户体验。
实现更高的帧速率、更低的功耗和更长的游戏会话时长
总体而言,Unity Boat Attack 演示将帧速率提高了 8.5fps,将功耗降低 12%,并将游戏会话时间延长了 25 分钟或更长时间。FPS 标准差降低了 25%。 这种显著的改进可让您提高游戏的保真度,并以热可持续的方式长时间运行游戏会话。
![](https://developer.android.google.cn/static/images/cards/distribute/stories/mediatek_table.png?authuser=8&hl=ca)
![](https://developer.android.google.cn/static/images/cards/distribute/stories/mediatek_fps.png?authuser=8&hl=ca)
即使不调整保真度设置,仅启用性能提示会话,工作负载也可以将其平均渲染线程时间缩短近 10%。
MediaTek SoC 的自适应性能未来趋势
ADPF 将在未来几年内升级,以增加新功能,并增加与 MAGT 无关的与设备无关的新功能。对于希望更充分地利用 MediaTek 设备的开发者来说,MAGT SDK 包含专门针对 MediaTek 芯片组架构的高级功能,并且很快还将提供核心 ADPF 功能。
![](https://developer.android.google.cn/static/images/cards/distribute/stories/mediatek_logo.png?authuser=8&hl=ca)
![](https://developer.android.google.cn/static/images/cards/distribute/stories/android_logo.png?authuser=8&hl=ca)
Android 自适应功能使用入门
Android 动态性能框架现在可通过 Unity、Unreal、Cocos Creator 游戏引擎和我们的原生 C++ 库向所有 Android 游戏开发者提供。
- 对于 Unity 开发者,您可以从 Adaptive Performance Provider v5.0.0 开始。请注意,搭载 Android 11(API 级别 30)的大多数 Android 设备以及 Android 12(API 级别 31)中的 Performance Hint API 都支持 Thermal API。
- 对于 Unreal 开发者,您可以从大多数以 Android 12(API 级别 31)或更高版本为目标平台的 Android 设备上开始使用 Android Dynamic Performance Unreal Engine 插件。
- 对于 Cocos Creator,您可以从 v3.8.2 开始使用 Thermal API,从 v3.8.3 开始使用 Performance Hint API。
对于这些游戏引擎,Thermal API 与自适应性能集成,可帮助您检索设备热信息,并且每隔 Update()
或 Monitor()
就会自动调用性能提示 API,而无需执行任何其他操作。最后,对于自定义引擎,您可以参考我们的原生 ADPF C++ 示例。
其他资源
了解 Android 动态性能框架如何帮助您稳定游戏的 FPS 并减少温控降频。
了解 MediaTek 自适应游戏技术,对 MediaTek SoC 进行高级性能调整。