【引擎组】引擎包体优化信息收集

其实最好的方式就是最好老的那个接口保留 出一个新的接口出来 使用老的接口的话就一直报警告就行了

Cocos Creator 3.8.3 编辑器存在严重内存泄漏,只是在开发很小的3d小游戏,过了一会内存莫名奇妙的占用居高,几个同事都这样。 没找到复现方法,但可以肯定问题存在。

1724729850538 1724729902527

@Knox

可能需要你们注意一下什么行为导致内存增高

  1. 切换场景
  2. 加载 fbx
  3. 或者是具体什么操作

如果不好给 demo,可以在编辑器打开开发者工具,通过 profile 进行捕获一下内存

也可以把捕获的 Profiles 发给我们,我们可以看看

反馈问题请不要在这个帖子。

关于缓存的问题,可以用indexdb解决。解压每个文件的时候,把arraybuff缓存到db当中。同时也需要做好容错,如用户突然刷新了,或者关闭。如果压缩包小的情况,甚至比现在cocos进游戏要快的多。尤其是第二次加载。

如果是单机游戏,再魔改一下可以做到离线包效果,打开就能玩,不用依赖网络。

有个开源库Dexie.js。在外面包装了一层做了对不同系统对WEB的indexdb适配,在indexdb原基础上做了很多优化,可以直接拿来用。

如果一个子游戏bundle对应一个压缩包的情况,可以非常大的程度减少资源大小。唯一的问题就是懒加载无法用了,需要根据游戏本身逻辑,在加载流程代码适配。

大佬,有点疑惑,引擎不是有合并json的选项吗?小游戏和web平台也支持gzip,这个和你的方案有什么不一样呢?

区别还挺大的,首先是大小方面,进行zip压缩,大小会变成原本的1/10左右,虽然说服务器可以进行gizp处理,但实际使用效果不如本地进行zip。其次,加载速度,合成一整个json,远比合成多个zip的慢的多,zip包JSON还原性能消耗基本可以忽略不计。第三个就是内存方面,加载一整个JSON,又慢内存又高,自己处理zip的话,内存和速度都有很大的优势。而且JSON做缓存处理,多次解析速度比引擎更快

感谢大佬回复,我现在处理压缩zip后,在web平台能够正常解析zip内容,但是在微信平台,在解压图片的时候遇到了点问题,使用的是jszip,

image ,请问一下微信平台怎么处理图片呢?

用arraybuffer。

看了引擎的源码 似乎只支持Blob

修改一下jszip,然后再重新编译一下就行了,主要是没有全局变量,JSZip, 自己加一下就行

jszip能将zip数据解析出来,只是怎么利用arraybuff创建texture? blob微信平台不支持

如果是astc,不需要转。JPG,png可以直接用base64,也可以将二进制转为base64,只修改一下加载方式就行了

1赞

感谢大佬,可以了

Brotli压缩不香吗

不说大小 看着不难受么…