项目上线总结贴

beijixing
Thu, 31 Aug 2017 10:38:36 +0000

本周一在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版: 微信点开即玩

阅读整个主题