轻松系列之-合成+装修类游戏优化(大纲)

最近给公司的二合项目做优化,记录下工作类容,以免忘记!
项目技术栈采用:

项目优化效果:

  • 内存减少200-400m
  • fps由40±>60
  • 发热现象减少
  • 各个页面dc减少50-100左右
  • 首次加载时间10s内,二次加载速度3-5秒左右

以下是大纲:

  1. 发现热点

  2. Chrome 分析工具

1. Spector 分析drawcall

2. Preformance 分析函数热点

3. Memory 分析内存热点
  1. PrefDog

  2. 运行性能

  3. CPU

1. 对象池

  1. 减少重复创建时间

  2. 减少gc

  3. 但增加了内存大小
2. UI

  1. 多纹理合批

  2. 分层渲染合批

  3. 分帧计算
3. Spine

  1. Share cache

  2. 大量使用的spine,尽量少用混合,特别是交替不同的混合模式

  3. 不使用或少使用spine的clip
4. TileMap

  1. 开启地图裁剪

  2. 多层tilelayer共享裁剪

  3. 多纹理合批

  4. tmx地图优化,删除或者替换活动点位的资源

  5. tm动态加载,减少prefab带来的数据变大的问题
5. 脏标记模式
  1. 内存
1. 纹理压缩

  1. gpu纹理压缩

  2. png图片压缩

  3. 如果开启了gpu纹理压缩,单压缩png是没有效果的,需要减少图片分辨率
2. 内存释放

  1. 配置表的原始数据删除

  2. 非常用窗口、场景关闭后删除相关资源
  1. 加载速度

  2. 包体

1. 引擎分离

2. 代码子包
  1. 分包策略

  2. bundle包采用zip减少加载数量

1. 采用了多个纹理压缩格式时,需要对zip做分包处理(需要修改相关资源加载代码)
  1. 类似活动或者单独使用的散图直接通过地址加载,或者非zip模式的包

  2. 加载策略

1. 重要性加载

2. 新用户加载

3. 玩家相关性加载

4. 增量加载(由于项目cdn地址与版本号关联,造成不同版本相同hash资源重复下载,因此修改了缓存key保证命中率)
15赞

既然有新点赞就继续加内容吧:

  1. UI做到界面与数据分离。
  • 这里的数据指的是各种图标数据,千万别把资源数据与界面数据打包在一起,item之类的最好不要打图集。
  • 至于DrawCall优化,可以自己做动态图集或者使用引擎自带的动态合图减少DC
  1. 实践发现cocos的文本初始化很耗时,我在项目中使用了超级富文本插件,既可以减少DC,又可以减少创建时间。
    以上两点优化后。我们项目的界面创建时间大大减少了,以下是优化前后对比:
    优化前 优化后

现在各种界面直接秒开,我以前一直以为是fairygui创建卡,我真的是错怪它了。当然这个需要使用ui资源的延迟加载功能。
我用的fairygui库为: wingcd/FairyGUI-cocoscreator at ccc3.8-textmesh (github.com)
此版本包含:

  1. 资源延迟加载
  2. 资源自动释放
  3. textmesh支持

赞一个,先备份下,等我验证一下,实用性先

开始做游戏了?之前你在引擎组是吧 :laughing:

没有进过引擎组

我说上面的皮卡丘

哦哦。不好意思,没注意看