我们为独立开发者建造了能够在浏览器中运行的演示,然而,长时间的加载速度是我们的死敌。如果Unity WebGL构建需要30秒才能显示第一个帧,玩家们就会离开。我们的主要瓶颈几乎总是Build.data文件在正常连接上的卡顿。以下是我们本周实际上削减了最多体积的方法:

  • 强制纹理压缩。 我们的大部分膨胀并不是代码,而是原始、未压缩的纹理,按照默认设置导入。我们设置了自动规则,强制DXT5(有时是ASTC)基于纹理类型(颜色地图vs正常地图vsUI),并在顶部添加了Crunch压缩。这一措施单独将一个测试构建从约480MB减少到约310MB,而浏览器质量没有下降。
  • 硬限制WebGL的最大纹理大小。 源代码可能是4K用于营销渲染,但2048px(甚至1024px)对于浏览器窗口来说足够了。使用WebGL选项卡在纹理导入器中可以让我们大幅缩小资产大小,而不会损害PC/控制台的全尺寸构建。
  • 地址表用于后台流式传输。 我们不再一次性将整个资产包传输给玩家,而是分离它们。初始加载场景的必需资产立即加载,而次要内容(后续关卡,额外皮肤)在后台流式传输,以便玩家可以继续玩。这些调整使我们的约500MB测试构建在标准连接上降低到几秒钟的初始加载时间。我们仍在与一些问题搏斗:音频压缩仍然需要手动一次性处理,而Basis Universal在移动浏览器上的解码开销仍在我们正在进行的基准测试中。