在虚幻引擎中开始使用 Android 动态性能框架 (ADPF)

Android 动态性能框架 (ADPF) 是 Google 为希望优化其应用性能的开发者提供的强大工具。通过其热 API,ADPF 提供有关设备热状态的实时信息,然后用于调整应用中的图形设置。

出于研究目的,Arm 使用虚幻引擎和 ADPF 开发了一个演示,以调查 ADPF 如何用于优化游戏性能。

ADPF 监控热状态,并相应地在游戏引擎中调整图形质量。

考虑到开发者,其目标是让用户可以更长时间地玩游戏,同时不影响游戏体验和设备功耗过高。

开始之前

在更详细地查看演示之前,重要的是要强调 ADPF 的官方 Google 文档。此文档是宝贵的资源,提供了有关如何使用 ADPF 的深入见解和指导。

但是,对于那些喜欢可自定义学习的人,ADPF 示例存储库包含在 Android 应用中实现 ADPF 的实际示例。

图形设置调整

在虚幻引擎的上下文中,我们可以动态调整图形设置以保持性能。

我们使用 ADPF 中的热状态监视器和热余量 API 来监控热节流。然后,当设备开始节流时,您可以调整质量设置,例如阴影质量、反射质量和纹理质量。

虚幻引擎中的以下图形质量设置用于修改各种设置

  • ViewDistanceQuality(视图距离质量)
  • ShadowQuality(阴影质量)
  • GlobalIlluminationQuality(全局光照质量)
  • ReflectionQuality(反射质量)
  • AntiAliasingQuality(抗锯齿质量)
  • TextureQuality(纹理质量)
  • VisualEffectQuality(视觉效果质量)
  • PostProcessingQuality(后期处理质量)
  • FoliageQuality(植被质量)
  • ShadingQuality(着色质量)
  • OverallScalabilityLevel(整体可伸缩性级别)

实际测试

Arm 创建了我们自己的演示游戏,用于研究移动图形和游戏技术。今年,我们在其中一个演示——SteelArms 演示中测试了 ADPF。

SteelArms 具有不同级别的图形强度和大量的 CPU 工作负载。它旨在像现代手机游戏一样,因此我们可以模拟当前手机上的游戏行为。它还允许我们测试不同技术在基于 Arm 的移动设备上的游戏中的表现。

结果

图 1:SteelArms 启用和禁用 ADPF 的全屏比较。

之前的图片显示了当 ADPF 激活以调整图形设置时,最佳(电影)质量和最低(低)质量之间的差异。这种变化是渐进的,用户在游戏过程中不会察觉。

图 2:集成 ADPF 的游戏:分屏。

左侧(蓝色机器人)显示最高图形设置,右侧(红色机器人)显示最低图形设置的分屏视图。

图 3:集成 ADPF 的游戏:并排细节比较。
图 4:集成 ADPF 的游戏:并排。

在之前的图 3 和图 4 中,可以看到机器人相同的并排视图。如果仔细观察,可以看到通过使用 ADPF 调整的图形设置。注意到拳击台的地板、机器人的肩膀、拳击台的绳索和人群了吗?所有这些的质量似乎都略有降低,这是通过使用 ADPF 完成的。

当节流即将发生时,SteelArms 演示中这些效果被缩减了。很难发现后期处理和视觉效果中这些微小的降低。此外,用户在玩游戏时通常不会注意到它们。这意味着您可以在不影响游戏体验的情况下保持游戏的大部分视觉体验。您可以在保持游戏功耗性能和设备电池寿命的同时完成所有这些操作。

如前所述,出于演示目的,我们正在比较最高质量和最低质量设置的图像。这就是为什么仔细观察时仍然可以看到差异。然而,在游戏过程中缩小时,用户几乎察觉不到,同时保持稳定的游戏体验。

结果

图 5:启用/禁用 ADPF 时 FPS、设备温度、热状态和余量的比较,帧速率提高约 57%

设备避免过热并保持在 1.0 的热余量内。

功耗

图 6:启用/禁用 ADPF 时的功耗比较

ADPF 结果

ADPF 关闭和开启时的结果可以在前面所示的图中看到。这表明游戏的帧速率和核心功耗存在差异。当 ADPF 开启时,帧速率最多可提高 57%。当 ADPF 关闭时,GPU 会消耗大量电量。然后,大 CPU 核心会出现与 GPU 工作负载一致的功耗峰值,因为它正在赶上被要求处理的计算量。相比之下,当 ADPF 开启时,大 CPU 核心响应节流并降低设备中所有核心的整体功耗。

结论

ADPF 可以显著改善游戏的功耗。这最终意味着玩家可以玩更长时间,设备电池寿命更长,温度更低。从开发者的角度来看,ADPF 保持了游戏正确的帧速率。同时让他们可以灵活地缩减质量设置,并且仍然为用户提供出色的游戏体验。

较新和较旧的设备都可以从使用 ADPF 中受益。它允许游戏在上一代设备上以高标准运行,而无需额外的优化工作。