跳至正文
简

ReLayer Floating UI压力测试:繁忙战斗画面中的性能

介绍开发中的ReLayer Floating UI,以及我们在Android模拟器压力测试中的发现。

画面繁忙时,Floating UI还能跟上战斗吗?我们在ReLayer示例中快速移动镜头和角色、切换主题并密集显示数字。这里分享在Android模拟器上进行的30秒测试结果。

ReLayer Floating UI压力测试:繁忙战斗画面中的性能

画面繁忙时会怎样?

我们让开发中的示例连续运行30秒:快速请求切换主题、改变镜头、移动角色、密集显示数字,最后将这些情况同时叠加。数字密集的两个阶段以每秒1,000个显示事件为目标;这些是显示测试值,不是实际游戏伤害。

数字共享128个同时显示的槽位。槽位满时,新事件会替换旧数字,因此每秒1,000个事件不代表同时显示1,000个数字。计时前我们预先准备了主题缓存。

Unity 2022.3与原生x86_64 Android模拟器的1080p连续30秒测试,主题缓存已预热。帧率会波动;这不是实体设备测试。

结果与测试条件

在1080p Android模拟器上,使用Unity 2022.3和原生x86_64的30秒测试中,Unity相机平均为66.85 FPS,WebView动画回调平均每秒88.37次。测试提交了12,012个显示事件,生成工作跳过次数为0。两项平均值都超过60,但部分测量区间仍低于60。

另一次Unity 6 ARM64模拟器测试中,Unity平均为52.80 FPS,WebView平均为87.92 FPS。由于引擎版本和进程架构都不同,这不是针对单一原因的比较。这些结果包含录制开销,来自模拟器,并非实体设备的结果或帧率保证。

融入游戏世界的界面

示例将名字、血条、伤害与治疗数字、增益和连击带入场景。八种风格从奇幻到鲜明的战术界面各有不同,开发者也可以修改React源码,让它符合自己游戏的视觉语言。

Unity随着镜头和角色移动追踪UI的位置。React内容会被捕获为图像,并在内容变化时异步更新。位置追踪与内容刷新是两个过程,因此新的血量数值可能比移动稍晚到达。

Floating UI示例的Astral风格
Astral为同一场景带来不同的视觉氛围。
90秒示例展示五种风格。扩展版Floating UI仍在开发中。

为下一次命中留出余地

在保持相同负载的测试中,我们找到了复用已准备画面、减少重复工作的机会。我们也会关注平均值之外的变化:对于专注战斗的玩家,短暂的停顿同样重要。

本文介绍的扩展Floating UI和压力测试改进仍在开发中,尚未作为商店软件包发布。我们会在准备发布的过程中继续测试不同环境。

延伸阅读