本周一在AppStore正式上线后,我们新产品终于在全平台上线了, Web + Android + iOS,也算是一个小小的里程碑。在这里对 @zilong @jare @panda 等朋友在开发过程中给予的无私帮助, 表示衷心的感谢~
真正接触 cocos2d-x 是在2011年. 从 cocos2dx, 2dx-lua, quick, 再到 creator, 真的是跟着这个引擎一路走来, 可以说每一代我们都相应地更新着我们自己的引擎框架. 甚至在16年底,我们还fork了 2dx 3.13.1, 更新了我们的框架,使其支持 CocosCodeIDE调试功能。 几年下来,说没感情是不可能的, 在项目的开发过程中, 确确实实地遇到了一些问题, 有一些是引擎层面的,但更多地还是我们的处理逻辑特别是对js语言的理解不深导致的。这里做一个简单的总结~
-
“WEB版启动/加载时间过长” 的调整方案
— 梳理启动界面,移除不必要的加载项:一些通用的字体,音效等, 可以从启动界面移除,或使用异步加载的方式,尽量减少启动界面的加载项。
— 有效利用异步操作,进行资源的加载: 如游戏登录的时间,页面解析的时间(预加载)等,都是可以利用来进行资源加载的
— 静态页面缓冲: 引擎代码(约900K)无法再精减,可以加入的静态缓冲页面来缓解玩家的焦虑。
总而言之,就是将初始加载的东西减到最少,然后利用一切耗时的异步操作来同时加载必要的资源。 -
“CPU功耗的优化处理”
— 优化逻辑,找到热点函数: 在论坛里, 发现很多人都会在卡顿看帖时来喷引擎(包括我。。。), 但大多数情况下, 确实是通过review代码,profile可疑的热点函数就能解决的。
— 降低 DrawCall: 我们通过对资源、界面的梳理,有效利用图集,并常驻时期的 drawCall 控制在 30~40之间。
— 异步处理及必要的缓存: prefab的实例化,是比较耗时的操作, 特别是一个列表中列表项较多,且每个列表项中的元素也较多时。 通过NodePool避免重复创建/销毁,还不够的话就异步加载,如果还不够,那只能改UI交互逻辑了(我们就是这么处理的, 当然也是不得已而为之, 当时我们的优化主要是针对WEB版,效果明显,当我们信誓旦旦地打开 Android版时。。。这里就要吐槽下引擎了,1.4.2, 无论如何都没想到 Native版会比 Web版性能差。 只能调整UI逻辑, 将包含较多元素的列表项,放在了二级页面,才得以解决)
— 根据实际情况降帧处理。 -
其它想说的话
…
最后,附上产品的下载链接,希望各位大佬多多指点~
Android版:Taptap详情页
iOS版: AppStore详情页
Web版: 微信点开即玩