项目上线总结贴

本周一在AppStore正式上线后,我们新产品终于在全平台上线了, Web + Android + iOS,也算是一个小小的里程碑。在这里对 @zilong @jare @panda 等朋友在开发过程中给予的无私帮助, 表示衷心的感谢~

真正接触 cocos2d-x 是在2011年. 从 cocos2dx, 2dx-lua, quick, 再到 creator, 真的是跟着这个引擎一路走来, 可以说每一代我们都相应地更新着我们自己的引擎框架. 甚至在16年底,我们还fork了 2dx 3.13.1, 更新了我们的框架,使其支持 CocosCodeIDE调试功能。 几年下来,说没感情是不可能的, 在项目的开发过程中, 确确实实地遇到了一些问题, 有一些是引擎层面的,但更多地还是我们的处理逻辑特别是对js语言的理解不深导致的。这里做一个简单的总结~

  1. “WEB版启动/加载时间过长” 的调整方案
    — 梳理启动界面,移除不必要的加载项:一些通用的字体,音效等, 可以从启动界面移除,或使用异步加载的方式,尽量减少启动界面的加载项。
    — 有效利用异步操作,进行资源的加载: 如游戏登录的时间,页面解析的时间(预加载)等,都是可以利用来进行资源加载的
    — 静态页面缓冲: 引擎代码(约900K)无法再精减,可以加入的静态缓冲页面来缓解玩家的焦虑。
    总而言之,就是将初始加载的东西减到最少,然后利用一切耗时的异步操作来同时加载必要的资源。

  2. “CPU功耗的优化处理”
    — 优化逻辑,找到热点函数: 在论坛里, 发现很多人都会在卡顿看帖时来喷引擎(包括我。。。), 但大多数情况下, 确实是通过review代码,profile可疑的热点函数就能解决的。
    — 降低 DrawCall: 我们通过对资源、界面的梳理,有效利用图集,并常驻时期的 drawCall 控制在 30~40之间。
    — 异步处理及必要的缓存: prefab的实例化,是比较耗时的操作, 特别是一个列表中列表项较多,且每个列表项中的元素也较多时。 通过NodePool避免重复创建/销毁,还不够的话就异步加载,如果还不够,那只能改UI交互逻辑了(我们就是这么处理的, 当然也是不得已而为之, 当时我们的优化主要是针对WEB版,效果明显,当我们信誓旦旦地打开 Android版时。。。这里就要吐槽下引擎了,1.4.2, 无论如何都没想到 Native版会比 Web版性能差。 只能调整UI逻辑, 将包含较多元素的列表项,放在了二级页面,才得以解决)
    — 根据实际情况降帧处理。

  3. 其它想说的话

最后,附上产品的下载链接,希望各位大佬多多指点~

Android版:Taptap详情页
iOS版: AppStore详情页
Web版: 微信点开即玩

5赞

我记得 1.5 开始,同一个 Prefab 实例化过一次后,后面就会快得飞起。1.6.1 开始,连第一次实例化都变快了。

…… 1.6, 1.7 …

嗯,最近在整体测试1.6.1,没问题就整体更新过去了。现在因为线上的都是1.5.1引擎的包,过渡期的热更新处理是个麻烦事,所以要慎重一点~

大佬问你下,web版项目中的project文件是在过度场景就自动加载了吗。你说“一些通用的字体,音效等, 可以从启动界面移除…”,我在启动界面进度条充满后,切换主场景,同时异步加载字体库,音效等, 问题就是进度条100%,耗时10多s才进与主场景。没感觉到异步加载效果。还望指点一二

如果楼主有空,或者同情一下我们这些还在苦逼挣扎着的人们,建议再抽点空,详细讲解一下填的坑,毕竟道理大家都懂,实操就不一定了

1赞

还在苦逼的挣扎+1