Google 致力于为黑人社区推动种族平等。查看具体举措

Android Performance Tuner 简介 (Unity)

本指南将介绍如何使用 Unity 插件记录和上传来自 Unity 2017.4 或更高版本的帧时间数据。

对于使用 C 或 C++ 的游戏引擎,请参阅原生游戏引擎指南

背景

游戏体验的关键组成部分是渲染性能。渲染性能是以下两项输入的结果:

  • 帧速率:绘制帧的频率。
  • 图形画质设置:呈现帧所用的保真度,包括模拟保真度和图形。

对于游戏,良好的渲染性能定义如下:

  • 提供稳定一致的帧速率(即,以需要的频率渲染的帧的百分比)。
  • 以尽可能高的频率渲染帧,同时保持稳定性,通常为 30 或 60 FPS,具体取决于游戏类型。
  • 根据用户屏幕尺寸和密度,为用户呈现最大程度的细节,同时仍保持所需的稳定帧速率。

Android Frame Pacing 库会限制帧时间中的大多数变化,为游戏提供稳定的帧速率。在帧时间中,其余变化是由游戏过程中某些场景显示的细节程度以及设备的图形功能决定的。使用 Android Performance Tuner 可以找出游戏过程中帧时间与目标值相比慢或快的用时,并将这些问题和优化建议关联到以下方面:

  • 具体画质设置
  • 游戏中的特定场景
  • 特定设备型号或设备规格

录制和上传数据

Tuning Fork 库依赖于由 Android Frame Pacing 库为每帧调用的其中一个 tick 函数(或者,在较低版本的 Unity 中由 Unity 引擎调用,因为此类 Unity 中不存在 Frame Pacing 库)。在库中,此 tick 信息汇总成直方图,然后通过 HTTP 端点定期上传至 Google Play。每个 tick 都被记录为与一个插桩键注释相关联。您可以使用 Unity 插件定义注释。

插桩键

插桩键指示 tick 来自帧中的什么位置,并且是必须传递给每个 tick 函数调用的整数。此操作由 Unity 插件自动完成。如果您在游戏的 Unity 设置中启用了“Optimized Frame Pacing”选项(适用于 Unity 2019.3.14 或更高版本),Android Performance Tuner 将使用来自 Android Frame Pacing 库的信息以报告增强型指标。

注释

注释可以提供有关记录 tick 时游戏在进行何种操作的背景信息。例如,注释可以识别以下任何信息:

  • 当前游戏关卡
  • 正在加载特定场景
  • 屏幕上出现“大 Boss”
  • 任何其他相关的游戏状态信息

注释在 Unity 插件提供的对话框中定义。

在内部,Tuning Fork 库使用 Google 的协议缓冲区格式存储注释和保真度参数。它是一种明确定义的多语言协议,适用于可扩展的结构化数据。如需了解详情,请参阅协议缓冲区文档

保真度参数

保真度参数会影响游戏的性能和图形保真度,例如网格细节层次、纹理分辨率和抗锯齿方法。与注释一样,保真度参数在 Unity 插件提供的对话框中定义。

内存和 CPU 开销

Tuning Fork 库使用的所有内存在初始化时进行分配,以避免游戏过程中出现意外。数据大小取决于插桩键的数量、可能的注释数量以及每个直方图中的存储分区数量;它的值为所有这些数值相乘后再乘以 4(每个存储分区 4 个字节)得出的字节数。此外,所有直方图还有两个副本,用于双缓冲方式的提交。

提交操作在单独的线程中执行,不会阻碍 tick 调用。如果上传连接不可用,提交操作会加入队列以供之后上传。

调用 tick 函数几乎没有处理开销:它只计算直方图存储分区数组的一个索引,并递增整数计数。

网络请求

该库向服务器端点发出两种类型的请求:

  • 初始化时的 generateTuningParameters 请求
  • 在游戏运行期间,定期向服务器发送数据的 uploadTelemetry 请求

离线玩家

如果在初始化时没有可用的连接,请求会重试多次,并且退避时间会延长。如果上传时没有连接,上传将缓存。上传的内容会作为文件存储在临时存储空间中。

要求

如需在游戏中使用此插件,请使用受支持的 Unity 版本:

  • Unity 2017.4 或更高版本以及 .NET 4.6 版
  • 如需使用 APK 扩展文件,必须使用 Unity 2018.2
  • 为改进帧同步和 GPU 测量,需要使用 Unity 2019.3.14 或更高版本

在 Unity 中集成 Android Performance Tuner

您可以导入和配置 Unity 插件,从而在 Unity 中集成 Android Performance Tuner。点击下面的下一页链接开始使用。