关于程序员:Unity开发游戏启动慢问题解决方案

64次阅读

共计 1873 个字符,预计需要花费 5 分钟才能阅读完成。

一,我的项目背景

在手游时代,打消游戏成为休闲游戏畛域中的一个重要类型。《恶魔打消》是一款能够在手机上三消类益智游戏。游戏除了横竖替换物体失去打消之外,还增加相似魔方的行,列滑动的交互方式,让用户有不一样的交互体验。游戏有 300+ 关卡,各种不同类型的过关玩法,以及多种道具供玩家应用。

开发环境:

  • Unity2019.4.19
  • JetBrains Rifer 2019.1.3
  • Xcode 12.5.1

二,所遇到的挑战

2.1 难在于发现问题

随着用户的减少,失去越来越多的用户反馈:“游戏关上慢”。

有上线教训的程序,应该都晓得上线游戏能失去用户反馈的比例是很小的。用户反馈的两个必要条件:

  1. 喜爱你的游戏(须要你的程序)
  2. 程序存在不能忍耐的问题
    所以一旦有几个用户反馈了同一个问题,咱们肯定要器重起来(别问我怎么晓得的)。

2.2 更难于定位问题

对于用户反馈的启动慢?
程序员:启动慢?首次启动慢?冷启动慢?还是热启动慢啊?什么机型?零碎什么版本?
这么一大堆问题,必定没有方法去问用户啊。即使是问了也没有后果。因为大部分用户是不会回复的(能给反馈曾经很不易了),剩下的一部分预计要反诘了:什么是冷启动?什么是热启动?…

2.3 获取到解决方案

友盟 + U-APM 利用性能监控平台:(之前用过友盟 + 的统计性能,就感觉十分好用。这次又是友盟帮忙解决了大问题 [手动点赞]。)

由上图能够看到 U -APM 为咱们提供了”2.2”中程序原提出的所有问题的信息统计,感觉真的不要太强大有没有。

尽管有了这么多的统计信息,可是我手里没有那么多测试机啊,总不能先接入 SDK 公布一个版本,看来用户数据来校验问题是否修改吧。这种想法可真是太可怕了,光是启动慢还好,要是闪退这种间接导致程序解体的致命问题,这么干无疑会伤一批用户,不过好在 U -APM 还为咱们提供了云真机性能,并且还推出了收费体验时长,真是贴心~

三,解决问题的步骤

3.1 接入 U -AMP

接入流程如下:(每一步官网都有具体文档,这里不再赘述)
官网地址:https://www.umeng.com/

3.2 定位问题

通过接入 U -AMP 联合官网提供云真机,多机型屡次测试后。问题确定为冷启动工夫较长。

几经周折,查了很多启动慢相干文章,解决方案根本归纳如下:

1. Resources 治理资源:

Resources 目录上面的所有资源会在 ResourceManager 中记录下来,而 ResourceManager 就是一个文件,通常是一个 YAML 格局的文本文件。而这个文件是会在冷启动时加载的。所以 Resources 目录上面的有越多的资源,那么这个 ResourceManager 就会越大,加载工夫也会越长。
倡议:应用 AssetBundle 的形式治理,在当初官网也推出了可寻址零碎 Addressable AssetSystem

2. Shader 编译时长:

如果只有游戏装置之后第一次启动工夫过长,一个很大的可能是 Shader 编译,之后游戏启动因为有了 Cache,所以会快很多。这种状况的话倡议查看下 Always Include 的 Shader 内容和变体。
倡议:应用 shadervariantcollection 等计划代替。

3. 纹理资源过大:

在游戏中个别是最大的资源,抉择适合的压缩格局进行压缩,既能够缩小内存占用,又可能放慢资源的加载速度。压缩格局的抉择要从显示成果和压缩率上进行衡量。
倡议:个别在 Android 上应用 ETC 格局,在 iOS 上应用 PVRTC 格局,在某些状况下,可能还能够思考应用 Alpha 通道拆散技术进行压缩解决

3.3 解决问题

因为原工程打包慢,所以我新建了我的项目,模仿还原了 3.2 中:Resources 治理资源和纹理资源过大问题:(新建工程,在 Resource 文件夹中放了资源,在其余文件夹下放了比拟大的纹理)

打包测试后果如下

通过缩小 Resource 文件夹资源,和比照较大的贴图压缩后。
打包测试后果

通过比照能够看到启动工夫的确是缩小了,证实计划可行,能够利用到理论我的项目。

四,我的项目总结

相比于 Android 或者 IOS 原生 App,Unity3D 引擎开发的游戏在冷启动工夫上的确比拟长。然而过长的启动工夫会导致用户不好的用户体验,甚至损失一批用户。若没有用户反馈,可能问题始终得不到解决,很可能成为收益少的一大因素。

所以,平时开发时重视资源管理,后续就不会有这种相似问题。另外测试数据量,以及低端机型用户体验都是有必要作为要害测试点的。

最初强烈建议友盟 + U-APM SDK。不论是统计工程和还是性能剖析以及解体反馈都能够帮忙开发者及时疾速定位解决问题,免得带来更大的损失。

正文完
 0