如今,很多年轻人以游戏来消磨时间,益智类游戏成为休闲领域中的一个重要类型。但是在打开时总会遇到一些问题,比如“启动时间太长、加载状态中、启动慢”等。这些问题会让用户瞬间降低使用感,这篇文章就针对游戏启动时长的问题进行分析解决。

  一、项目背景

  这是一款益智游戏。在打开游戏时会出现打不开、加载不出来等等问题。下文就以友盟+u-apm这款工具去解决以上问题。

  二、所遇到的挑战

  2.1 难在于发现问题

  随着用户的增加,App会出现一系列的问题,就会得到越来越多的用户反馈:如,游戏打开慢、界面加载不出来等,反而会降低用户的体验感。

  有上线经验的程序,应该都知道上线游戏能得到用户反馈的比例是很小的。用户反馈的两个必要条件:

  喜欢你的游戏(需要你的程序)

  程序存在不能忍受的问题

  所以,在用户向我们反映同一种问题,或者其他系列问题时,我们一定要重视起来,针对用户反映的问题去检测,从而得到改善,使用户感受到最佳的体验感。

  2.2 更难于定位问题

  针对用户反馈的启动慢问题?

  程序员:启动慢? 首次启动慢? 冷启动慢? 还是热启动慢啊? 什么机型? 系统什么版本?

  以上这一系列问题,肯定是没有办法去问用户的。即便是问了也没有结果。因为大部分用户是不会回复的(能给反馈已经很不易了),剩下的一部分估计要反问了:什么是冷启动?什么是热启动?...

  2.3 获取到解决方案

  友盟+ U-APM 应用性能监控平台:(之前用过友盟+ 的统计功能,就感觉非常好用。这次又是友盟帮助解决了大问题。)

友盟一键登录android 友盟ap_用户反馈

  如图,可以看到U-APM为我们提供了”2.2”中程序员提出的所有问题的信息统计,感觉真的是不要太强大了。

  统计信息倒是有了,可没有那么多的测试机啊,总不能先接入SDK发布一个版本,看来用户数据来校验问题是否修正吧。这种想法可真是太可怕了,光是启动慢还好,要是闪退这种直接导致程序崩溃的致命问题,肯定会伤到好多用户,那么,也就没有用户在去使用App了。不过好在U-APM还为我们提供了云真机功能。

  “云真机”提供了海量Android、iOS真机,通过资源集中管理,合理调度分配,为开发者提供发版前测试、发现线上问题后复现等场景使用,助力开发者平衡成本与需求,提升研发效率。友盟+云真机搭载在U-APM应用性能监控平台上,U-APM提供了灵活地测试操作界面,支持ADB调试、WEB远程调试、扫码、抓包、虚拟定位等测试功能,并提供了测试报告供开发者后续查看。并且还推出了免费体验时长,真是贴心~

  三,解决问题的步骤

  3.1 接入U-AMP

  接入流程如下:(每一步官方都有详细文档,这里不再赘述)

友盟一键登录android 友盟ap_用户反馈_02

  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文件夹中放了资源,在其他文件夹下放了比较大的纹理)

  打包测试结果如下

友盟一键登录android 友盟ap_启动时间_03

  经过减少Resource文件夹资源,和对比较大的贴图压缩后。

  打包测试结果

友盟一键登录android 友盟ap_用户反馈_04

  经过对比可以看到启动时间确实是减少了,证明方案可行,可以应用到实际项目。

  四,项目总结

  相比于Android或者iOS原生App,Unity3D引擎开发的游戏在冷启动时间上确实比较长。但是过长的启动时间甚至损失一批用户。若没有用户反馈,可能问题一直得不到解决,很可能成为收益少的一大因素。

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