今天是疯狂星期四,给大家晒一下最近的成果。
麒麟子上周末将 《Jare 大冒险》 升级到了 Cocos Creator 3.8,并更新到了 Cocos Store。
在做了更精细的分包管理、资源加载拆分,以及利用分析工具剔除了不必要的资源加载后,最终几乎可以做到秒进游戏。
今天就给大家分享一下我是如何做分包加载优化的。
由于游戏包会后加载,所以游戏包可以引用基础包和首包的代码。
接下来我们看看,是如何得到这个方案的。
Cocos Creator 的 bundle(分包) 机制,它可以将游戏拆分为不同的 bundle。
首先我们来看看内置的 bundle。
它们的优先级如下:
这里有几个关键的规则:
注意:resources 和 main 包里的代码,是可以在任何分包里使用的。
由此,我们可以得到一个最粗略的分包方案。
这种机制下,由于首包只保包含了最简单的资源,因此引擎在启动后并加载首包,都是非常快速的。 进入首包后启动加载流程,此时会出现画面和进度条,用户不会焦虑。
但有几种情况需要注意:
但由于一些游戏,通常都会有一个主菜单界面,供玩家选择玩法、自定义自己的数据、选择关卡、签到等等。
当用户处于这个界面的时候,还不需要加载游戏素材。这种情况下,可以单独分一个包,作为缓冲。
当用户点击进入游戏时,可以接受更长的加载时间,体验感会更好。对于一些资源较多、玩法较重、关卡加载时间较长的游戏来说,是必须的选择。
另外就是一些特殊情况的考量。最终就形成了开始的这套推荐方案:首包、基础包、游戏包和其他包。
分包成功之后,我们就可以很快地进入游戏了。但对于许多游戏来说,场景中会有非常多的面板,如果把这些面板都放在场景节点中,会让场景文件特别大,解析和初始化时间很长。
这里,我用了最新的 KylinsToolkit
中的 KFC
(Kylin’s Framework Core) 框架优化了界面管理。
只需要编辑好Prefab,并写好 Controller,就可以在任何地方用一行代码显示想要的界面。
kfcUIMgr.inst.showUI(UI_GameHUD);
界面的分层、资源加载、分辨率适配都是自动管理的。
关于
KylinsToolkit
和KFC
的介绍,请查看公众号菜单。
微信开发者工具中的代码依赖分析
功能,可以说是非常棒的资源的分包分析工具。它可以帮我们检查分包大小,找出分包中的大文件。
在微信开发者工具中的入口如下:
下面是优化前的分包图(11.43MB):
通过分析,我发现我的资源中一些情况:
最终分包大小情况如下(7.44MB):
从总包的 11.43MB 降到了 7.44MB,缩小了 3.99MB。
目前只是手工处理了一些看得见的较大的图片,以及移除了不应该有的资源引用。
想要完全优化更多包体,可以使用 pngquat 等图片压缩工具,将 3D 模型纹理全部处理一下,可以减少非常多。
今天是疯狂星期四,但麒麟子这里说的 KFC
和它无关。KFC 框架是 Kylin’s Framework Core 的缩写。
麒麟子过去一年多,大部分时间都花在了引领新人入门以及图形渲染教学上,而忽略了某些群体的需求,比如:
因此,麒麟子花了一些时间,重启并开源了 KylinsToolkit
,并将项目框架方面的部分,抽取为了 KFC
。
KylinsToolkit
是麒麟子十多年项目经验的总结,虽然不是最优解,但却能在一定程度上,让项目的起步、模块分割、多人协同和后期维护更加顺畅。
目前 KFC
包含了下面几个部分:
kylins_base
: 一些基础工具组件,如屏幕自动适配、资源加载队列、声音播放管理器、输入管理器等等。kylins_camera
:漫游摄像机、FPS摄像机、第三人称摄像机、2D 跟随摄像机kylins_easy_controller
:虚拟摇杆(支持 2D 和 3D)、按键、摄像机控制器kylins_ui_framework
:极简版的 MVVM 型的 UI 框架,与逻辑数据单向依赖。支持 UI 分层管理、UI 自动加载器、UI 事件托管 等等。后期会逐步加入网络、2D游戏常用控件、3D游戏常用控件等等。
在此基础上,麒麟子会尽量抽空,基于 KFC 和 KylinsToolkit 中的其他模块,来制作更多的项目模板和案例。也希望有更多使用 KFC 和 KylinsToolkit 来制作项目的朋友能加入进来。
点击这里,领取 KFC 框架!
后续会考虑码云镜像,但我暂时还不知道怎么弄,有会的朋友可以教我。
https://store.cocos.com/app/detail/4241