热更新
在App开发过程中,当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。热更新就是动态下发代码,它可以使开发者在不发布新版本的情况下,修复 BUG 和发布功能,让开发者得以绕开苹果的审核机制,避免长时间的审核等待以及多次被拒造成的成本。

Cocos Creator热更新
相对于app开发,游戏开发中游戏更新相对较频繁,之前在iOS开发时,JSPatch有一套很成熟的框架来实现iOS的热补丁。 
Cocos Creator也提供了一种不成熟的方案,可以实现热更新。具体可以参考官方文档: 
资源热更新教程 
热更新管理器 AssetsManager

在 Cocos2d-x 中,开发方式是以代码来驱动,游戏中的数据大多也是在代码中存储,除非开发者构建了自己的数据驱动框架。在 Cocos Creator 框架中,所有场景都会被序列化为纯数据,在运行时使用这些纯数据来重新构建场景,界面,动画甚至组件等元素。这种开发模式,为我们热更新提供了便利。 
详细的数据驱动可以参考官方文档:2. 数据驱动

子游戏下载
主程序的修改,可以通过热更新来更新,那么为了安装包较小,可不可以把所有的子模块都动态下载呢,举个例子:JJ斗地主、网易成都棋牌都是在进入游戏时才对游戏下载。

第一种思路:
就是在Cocos Creator的一个项目中,分成不同的模块进行开发,然后使用热更新来下载每个子游戏,这样可以直接套用官方的模式。 
但是一个很明显的缺点就是,多个小游戏之间耦合性太高,而且非常不利于多人协作开发

第二种思路:
因为整个项目都是数据文件,是否可以下载多个项目,通过main.js入口文件来进行跳转,答案是肯定的。

先看一下项目结构,在构建的时候会生成build文件夹,里面有main.js,是项目的入口文件,frameworks是各个平台的文件,res是资源文件,src是js代码生成的源文件

jsb_polyfill.js 文件是 JS 引擎编译出来的,包含了对 C++ 引擎的一些接口封装和 Entity Component 层的代码。在不同版本的引擎中,它的代码会产生比较大的差异,而 C++ 底层也会随之发生一些改变。 
project.js,所有的js代码会打包到project.js文件中,在非调试模式时是project.dev.js 
setting.js文件是所有资源文件的配置文件,通过uuid进行索引

如果子项目不包括原生代码的话,project.js setting.js 以及res文件夹就包含了所有代码和资源,如果加上main.js的入口文件,那么把这些文件整个打包下载下来,就可以实现子游戏的热更新,但是需要对部分js文件进行修改

具体实现方案
子游戏修改:
1.修改子游戏的main.js文件,并放入 build-templates/jsb-default/src 文件夹中,该文件为跳转入口文件,但是并不替换子游戏的 main.js,因此子游戏独立运行并没有影响 
main.js文件的主要改动是从子游戏的路径中读取配置文件等 
2.通过Cocos Creator提供的热更新方法,打包文件后, 把src和res文件夹通过version_generator.js生成manifest文件,把生成的两个文件以及src和res文件夹上传到远端服务器中

主程序修改:
1.修改大厅 jsb_polyfill.js 文件,并放入 build-templates/jsb-default/src 文件夹中,jsb_polyfill.js文件和 Creator 的版本有关,因为升级 Creator 时需要重新修改 
jsb_polyfill.js修改的目的是,为了实现大厅和子游戏资源文件的共享,因为 cc.AssetLibrary 的实现是会覆盖之前的资源映射关系,因此需要修改系统文件,这样在子游戏中也可以调用大厅的资源文件了

2.也要修改main.js文件 
3.实现热更新的方法,具体可以参考官方实现

Demo:https://github.com/wf96390/CocosHotupdateDemo

Demo部署: 
1. 可以使用subgame.sh进行打包,打包文件生成到hotupdate目录中 
2. 如果部署到本地的话,默认是http://127.0.0.1/subgame/目录,你也可以进行修改(打包路径+代码中的热更新路径修改),把上一步生成的src, res, project.manifest, version.manifest复制到服务器subgame文件夹中

参考: 
http://forum.cocos.com/t/topic/54899 
http://forum.cocos.com/t/topic/53115

Cocos Creator子游戏动态下载实现(大厅+子游戏模式)相关推荐

  1. [Cocos Creator] Cocos Creator中的动态合图(dynamicAtlasManager)做了什么

    Cocos creator中有一个动态合图的功能,也就是在运行时将内存中的任意纹理组合成一张虚拟的图集,从而合并绘制,减少drawcall.那么,Cocos Creator是如何实现这个功能的呢. 核 ...

  2. Cocos Creator 3.x 动态加载 龙骨动画

    龙骨动画比序列帧 优点好太多了,  CocosCreator 提供了很好的支持: 我们就用 龙骨软件自带的动画做一个demo 给大家介绍下:  1. 第一步 肯定是导出资源 我这边是按照目录进度的加载 ...

  3. 初学者使用cocos creator制作第一个小游戏以及脚本编辑器的选择

    这是一个官方文档的补充版,以官方文档的快速上手:制作第一个游戏为基础,整合了其他文档内容,同时添加一下自己学习文档的理解,不仅能复习一下自己学到的知识,也帮助新人学习开发更加简单,好了,话不多说,进入 ...

  4. 《Cocos Creator 代码编辑器》插件使用说明

    cocos 代码编辑插件一览: 使用教程: 使用前:日常工作中游戏脚本通常绑定在节点上,需要修改脚本代码时需打开第三方代码编辑器进行编辑.  使用后:使用本插件后点击场景的节点可直接在creator上 ...

  5. 【更新至 11P】Cocos Creator 3D 官方中文视频教程

    为了帮助各位开发者更快上手 Cocos Creator 3D 的使用,开发出好玩优质的 3D 游戏作品, Cocos Creator 3D 引擎开发工程师放空结合 3D 休闲小游戏案例<快上车 ...

  6. cocos creator 大厅+子游戏模式探讨(creator版本1.8.2)

    之前一直从事android开发,接触cocos creator不久.近期公司安排我研究大厅子游戏模式的热更新,前后花了近一周时间,在论坛上查资料,请教大神,期间得到了一些帮助,在此很感谢cocos中文 ...

  7. cocos creator 大厅 ➕ 子游戏(子游戏作为单独的项目更新)

    先标记上文章的出处,嘿休嘿,感谢这位:https://www.jianshu.com/p/fe54ca980384 cocos creator版本: 1.9.1 首先建立大厅的项目 添加文件  Sub ...

  8. Cocos Creator 下载图片动态替换纹理

    Date: 2022-04-19 Cocos Creator v3.4.2 assetManager.loadRemote方法, 示例代码如下: let headImg = this.headSpri ...

  9. CocosCreator 2.4.3热更新实现方案(AssetBundle),大厅+子游戏模式快速实现

    _ 实现功能 项目环境 关于 Asset Bundle 实现过程 工程结构 快速使用代码 构建发布 Creator 构建 制作热更新资源 制作随包发布模块 测试功能 模块完整下载 windows下测试 ...

最新文章

  1. php ole word,介绍 · PHPword新版开发指南 · 看云
  2. centos7中安装RocketMQ4.7版本
  3. 信息竞赛进阶指南--单调栈(模板)
  4. python判断正数和负数教案_正数和负数 教学设计
  5. fastai学习:01_intro Questionnaire
  6. SQL Server 索引和表体系结构(包含列索引)
  7. python 获取帮助页_Python-爬取页面内容(涉及urllib、requests、UserAgent、Json等)
  8. iOS 不错的第三方开源库归类分享
  9. MySQL的UNIQUE KEY对数据中字母的大小写不敏感
  10. 为什么说《让子弹飞》是古今中外的神片
  11. matlab分布拟合函数
  12. 基于Spark的学生成绩分析系统
  13. 在VM环境下安装iKuai(爱快)软路由——适合小白(最新最全教程)
  14. PID各自的作用究竟是什么?
  15. 如何将多个Excel 表合并成一个
  16. 水果忍者腾讯版 v1.0.2 官方安卓版下载
  17. Qt之Q_PROPERTY(新)
  18. 云班课计算机基础知识答案,云班课上的作业
  19. php 多个一维数组合拼成二维数组的方法
  20. 线阵CCD相机与面阵相机的区别

热门文章

  1. GBase 8s SQL 指南:语法————2.2 SQL 语句
  2. SVM理论疏导——什么是超平面
  3. 10栋楼连一网?看思创MS5000为1978 ARTVILLAGE酒店如何组网!
  4. cvte2019校园招聘嵌入式编程题1详解
  5. 黑客加密与解密视频课程
  6. Diffusion Models扩散模型简单讲解与简单实现
  7. Perl Data::Dumper模块介绍
  8. Unity中的跳跃设计
  9. 微信获取好友、公众号、群聊的信息
  10. 怎么把emlog文章做成html,EMLOG调用文章图片代码