cocos lua的两个热更新方法

一、说明:本文中的两种热更新非cocos自带热更新

二、理论:

1.第一种只存在一套资源,用一个文件记录所有文件的信息(文件名,路径,大小,MD5)。游戏启动时下载这个文件与本地文件MD5进行对比,不同的和新增的下载下来,没有的删掉。(最好再做个简要信息文件,因为资源多了记录文件信息的文件会有上百KB大小)


2.第二种存在多套资源,客户端每更新一个版本都会有一个内部版本号。更新服务端会有多套压缩包,如1.0-1.5, 1.1-1.5 ,1.2-1.5 ,1.3-1.5,1.4-1.5。此方法需要保留每个版本的文件资源,依次生成每一个版本到最新版本的增量压缩包(依据是文件名和MD5)


三、对比:

第一种和优点是方便管理,从始到终只有一套资源。缺点是玩家下载时流量多一点,因为没有压缩。

第二种优点是玩家下载流量小,但每次升级需要保留历史版本为升级依据,版本越多越不好管理。


四、取舍:

对于资源超级多的,更新周期相对较长(如一月一更,一季一更)且一次更新文件数量较多的,建议使用第二种。这样玩家下载时流量少很多,而且由于更新间隔较长,可以不保留所有版本,可以清理半年以前的版本。而对于更新频繁且资源量较少的建议使用第一种,本身流量较少,对于几天一更或者一周一更这种游戏来说管理非常方便。


五、设计:

1.一套资源的

将整套最新资源放在网站更新目录下,事先写一个update.exe的工具放在这里面。

update.exe所做的事情是:

        (1)记录当前目录下所有文件的信息(文件名、路径、大小、MD5),保存在update.json中,写于当前目录

        (2)计算update.json的MD5保存在update.cfg中(可命名为:UpdateFileMD5:xxxxxxxxxxx),写于当前目录(需要其它               字段可自己加,如版本号什么的)

运行update.exe生成升级文件。


客户端代码要做的事:

        (1)程序启动时下载update.cfg,找到UpdateFileMD5与本地的UpdateFileMD5对比是否一致,如果一致则本客户端是最新版本可以直接进入游戏;如果不一致则下载update.json,解析所有文件信息与本地文件信息进行对比,记录需要下载的(更新和增量)和要删除的(本地有而更新服务器上没有的)。计算要下载的文件总大小,提示给用户选择是否下载。下载完成后删除不需要的文件,把UpdateFileMD5写成最新的,然后进入游戏。


1.多套资源的

将历史版本和最新版本资源放在管理目录下,事先写一个update.exe的工具也放在这个目录下。

update.exe所做的事情是:

        (1)计算每个历史版本的文件与最新版本文件的MD5

        (2)对比每个历史版本文件的MD5与最新版本文件的MD5,找出需要下载的文件分别打成对应该的版本包(如1.1.rar)

        (3)将所有版本的版本号保存在update.cfg(特别标记下最新版本),写于当前目录


客户端代码要做的事:

        程序启动时下载update.cfg,比较下本地版本号是不是最新版本号,如果是最新版本则进入游戏,如果不是最新版本则下载相应的包,解压,改写本地版本号,进入游戏。


这里如果想要删除不需要的文件的,可以自己加一个协议


六、注意事项(针对cocos lua):

(1)下载或者解压完成后要清除cocos FileUtils文件信息缓存:cc.FileUtils:getInstance():purgeCachedEntries(),

否则本次更新的文件不会生效(增量除外)

(2)请在添加可写(cc.FileUtils:getInstance():getWriteablePath())目录为优先搜索目录(cc.FileUtils:getInstance():addSearchPath("xxxx")),下载的文件和解压的文件放在这个目录。因为安卓的资源是一个压缩包,为了统一以及方便管理建议这么做。

(3)lua文件重新生效需要进行reload,图片生效也需要进行更新或者清理


好了,基本就这样了,我说的不明白或者有不对的地方欢迎留言





  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值