我们现在的project.manifest 可以达到1.xM,这个大小也挺大的。
后面能否支持先下载压缩文件,解压作判断
有个version.manifest, 这个是没得具体文件内容的(无assets 和 searchPaths,文件内容实际上就是assets 占了绝大部分),你用这个就对了,这样就不得下载project.manifest,只有版本号变化了,才会下载project.manifest文件
可以在服务端打开 http压缩传输
2楼完全没解决问题啊,manifest达到1M+的话,文件估计在1W出头.
抛开引擎压缩的角度的话,缩减manifest内容的方法就两种,
1.减少文件数量
UI与ICON肯定打包,这个不用说。不知道楼主的地图是怎么弄的,如果是切成小图加载后再拼在一起,那这就是最大的资源数量了,我们之前的游戏能达到10万文件,建议每张图打一个zip,大型网游地图较多,游戏后期还会不断的加开地图。
2.减少单个文件校验文本长度。
减少文件夹嵌套以缩减文件路径长度;
将MD5改成CRC缩短校验码(效果明显)
或者如果愿意,抛弃官方的热更新,自己下载zip,然后解压得到文件版本,进行更新下载。具体可以参考论坛上js自己实现热更新的帖子(http://forum.cocos.com/t/topic/43441)
目前用js做大型游戏的较少,这注定是一条孤独的路,且行且珍惜。
顺便问一下楼主,每次更新的时候校验文件大概会卡多久,我现在4000多个文件的manifest,每次有更新时候会卡10多秒左右才会显示下载进度,更新文件多时会卡得更久。
感谢分享,大概想了一下,目前的优化方案有下面几点:
- 减少json文件的数量,现在总文件数是1W+,其中json文件占了9K+。1.5.1构建时可以合并SpriteFrame,试了一下,合并后剩下800多个JSON,一下子总数量就变成1千多个。而且合并后,我预计安卓下打开界面会变快一些,安卓的IO速度实在太慢。
- 每张地图压缩成一个ZIP,这也可以减少很多了,我们现在是1024X1024一个块的。可以从几百个文件减少到几十个。
这样优化下来,project.manifest只有1K左右的文件数,也就是100多K,大小。加上version.manifest先行,整个体验应该会比较流畅了。
这两天来试验一下想法。也许可行。
不是太懂,意思是把场景所有可能用到的动画的plist全部合并到场景上?
呃,支持压缩文件的,可能你们没注意范例里面的 remote-assets 内容,在 build 新版本之后可以把里面的部分文件或者文件夹压缩成压缩包,只要保障解压后路径正常即可。
version generator 工具在扫描的时候遇到压缩文件会在 project.manifest 里面注明,所以先压缩,后生成 project.manifest
呃,他的意思是压缩“project.manifest”这个文件,而不是压缩热更新的内容。
你打开1.5.1 Beta版的构建面板,里面有两个选项,可以合并Json文件。
现在原生版的PLIST是会打散成好多个Json的,每个SpriteFrame一个Json。
钩选构建面板上的选项后,构建时这些Json会合并起来,有一个选项是把Plist的所有Json合并成一个文件。这样就能极大的减少Json数量了。
嗯,我没有表达清楚,是指project.manifest这个文件的压缩。资源可压缩这个我知道的。
我今天写了一个生成脚本,把res/import里的json按目录压缩了,像这样子:
00.zip
0a.zip
0b.zip
0c.zip
0d.zip
压完写进manifest,这样的文件数量大大变少,现在project.manifest只有80K,按现在的程度,project.manifest不压缩也没关系。
这个好像是android 的一个bug。我之前在论坛看到有人提过。不过我没发现这个问题
今天把热更新做好了,两个平台都试过,没有发现问题,在这里得感谢panda,真的省掉很多功夫。
之前对比了http://forum.cocos.com/t/topic/43441这个贴子的热更新方案。不足之处就是不支持资源的压缩。所以最终还是选用官方的了。
经过各种优化后的project.manifest只有80K,资源项大概是800多个,在做差异对比的时候很顺畅,没有发现卡顿的现象。