我想摸一下CocosCreator的上限

前言

Creator做游戏是真的方便。

但当游戏项目规模上升时,使用Creator开发就变得有点不舒服。

  • 打开慢

  • 切回编辑器卡顿

这些问题,相信很多人都有遇到过。也有很多人问,怎么解决?

论坛里的解决方案

  • 自己打图集

  • 用mac

  • 用固态硬盘

  • 用高配置电脑

  • 放到cdn

这些方案并可能有用,但感觉不太实际和靠谱,也没有具体的操作方案

疑问和比较

CocosCreator能否舒服的开发大型项目?上限在哪里?

论坛上也有一个帖子:是否有人比较过Laya、Egret、Cocos这几个引擎?

  • 里面的帖子和回复都很有意思,也挺有意义的。

  • 我用Laya最多,相对感受也颇深,Laya的开发方式偏web

    • Laya的IDE资源多的时候,导出也会卡,卡很久。

    • 如果不是图集资源,或者用来拼UI的资源,一般不会放在assets目录

    • 会放在最终导出的目录bin,也是预览服务器的静态资源目录

  • Creator大项目卡顿的原因是什么呢?

    • 比较直接的是:资源数量过多
      • 导致启动项目会花很长时间去遍历处理资源
      • 导致每次切回编辑器时花时间去做检索资源之类的操作

我的想法

让Creator在开发预览时能加载使用不在assets的资源

然后在构建时,定制构建流程将外部资源处理发布到发布目录

这个也是我跟官方提的一个建议,但貌似没那么重视,哈哈哈

实现

让Creator加载assets外的资源

  • 使用预览模板

    • Creator预览服务器的静态资源目录在xxx\Creator\x.x.x\resources\static\preview-templates

    • 如果我们将它复制到我们项目目录下,那么预览服务器静态资源目录就指向我们项目目录下的preview-templates

    • 我们可以将外部资源放到这个目录下

  • 本地搭建个资源服务器

    • 这个大家都懂,不细讲,就是麻烦而已
  • 自己写个插件hook一下开发预览的资源加载(这是我选择的做法)

加载和解析复杂的资源(龙骨、图集)

Creator加载远程的资源,只能加载并解析简单的

  • 比如音频、文本、json、图片

但有些资源是组合的,需要我们自己下载并组装

  • 比如图集、龙骨、spine

好在官方有demo和参考,以及可以调试源码来看如何构建那些资源并显示

  • 这里我写了一个外部资源的加载和解析逻辑,方便加载和组装这些组合型资源

最终效果

我用的是某西游项目,知道的人都知道,懂的人都懂

我的电脑配置:

那个项目的情况

  • 它组织资源的方式比较粗暴

  • 它在展示角色的界面用龙骨,在主城战斗中使用序列帧

  • 大概有14000个资源放在resource,加上meta文件就约28000个文件

  • 改造之后

    • 将大约13000个资源移到外部

开发体验数据

没使用之前

  • 第一次10分14秒

  • 第二次2分52秒

  • 第三次2分53秒

  • 第四次2分42秒

  • 排除第一次:平均169秒

使用插件并改造之后

  • 第一次3分22秒
  • 第二次23秒
  • 第三次24秒
  • 第四次24秒
  • 排除第一次:平均23.666秒

统计比较

  • 第一次启动打开速度快了3倍

  • 第一次之后的启动速度快了七倍

  • 切回编辑器卡顿感明显减轻很多

适配情况

  • 支持模拟器预览
  • 支持微信小游戏
  • 支持web发布
  • 支持fairygui

后续计划

  • 完善runtime

  • 完善插件

最后

上测试视频

解决方案测试视频:https://www.bilibili.com/video/av930007589

大项目测试视频:https://www.bilibili.com/video/av672691395

如果想要体验和测试欢迎关注公众号和加QQ群交流,测试项目就放在Q群

群里有个小伙伴说用了之后秒开。。。不知道是不是夸张,但应该是有效果的。

公众号搜索:玩转游戏开发

或扫码:img

QQ 群: 1103157878

博客主页: https://ailhc.github.io/

掘金: https://juejin.cn/user/3069492195769469

github: https://github.com/AILHC

11赞

mark住明天在看

mark一下

干得漂亮!

同感,初次启动卡顿忍了,但是只是切换到其它app再回来,每次都要卡一下(这个问题比较严重)。
我们项目是美术和策划都会使用creator拼UI,里面图片资源大概8000多个左右(还在继续增加),已经多次找客户端反馈这个问题:什么时候解决??。然后他们就在想:如果用unity怎么怎么样…

Unity也慢呀,这种要AssetDB的都慢。不要AssetDB(例如Laya那种path为主的)的才快,但是一些资源的BUG无法提前获知。为了一个健壮的工程,这点时间还是有的。你都开发月流水千万的产品,不怕缺少了预检测导致上线有BUG吗?

关键是是不是比别人慢。貌似比Unity快很多。

这打开省的一点时间,还不是转嫁给测试人员了?测试人员不是人家家长生的呀?

1赞

3.0应该满足你的需求一万多资源还是挺流畅的,新项目可以试试

就是3.0引擎文件有点大,只保留2D基础功能都有1.5M大小

我也有疑问
引擎组大大和其他大佬都建议升级3.0解决这个问题
不过现在3.0的问题还挺多的,
需要观望下

编辑器只要资源多了,必卡,为什么官方不优化一下呢

mark 一下

都是跟unity学的,每个资源都搞了一个同名文件记录资源的配置信息,资源多了那配置信息文件也倍数上来了。。。

我们在安排人手优化了,2.4.6 就是一个优化版本。3.0 本身也是相比 2.x 做了很多优化,最近也同步启动调研了,目前初步方案和中期方案都已经有了,会尽量避免大项目的卡顿。

另外建议采用 AssetBundle 拆分项目~ 这个才是最解耦的做法。