cocos lua 实现热更新

这篇博客记录了作者首次尝试实现游戏热更新的全过程,主要利用Cocos的assetManager从服务器获取version.mainifest和project.mainifest文件,通过对比版本信息和资源MD5码来实现更新。步骤包括使用HFS服务器、自动生成manifest文件以及编写Python脚本。在测试过程中遇到了服务器IP设置问题,导致资源下载失败。
摘要由CSDN通过智能技术生成

第一次搞热更新,这里记录一下全过程,方面以后查看。
原理:每次登陆游戏利用cocos的assetManager从服务器拉去当前最新的两个文件。 一个是version.mainifest,一个project.mainifest. 这两个文件都是xml的描述文件。一个包含了版本信息,第二个包含了游戏所有资源的MD5码。首先通过version文件对比本地的版本是否相同,如果不相同,再通过跟本地的project文件对比MD5码来判断哪些文件需要重新下载,替换资源。
步骤:
1.首先要进行测试先下载一个HFS服务器,这个服务器方便易学。每次将最新项目全部拖进服务器中,用GeneateManifest.py文件自动生成version 和 project文件。
2.编写Geneate文件。
这个文件是一个python。目的是生成对应的version和project文件。project文件可以帮你给每个资源生成独一无二的MD5码,相当于每个资源的标记。下面是一段python文件的代码,非常简单。

#!/usr/bin/env python
#coding:utf-8
import os
import json
import hashlib
import subprocess


assetsDir = {
    "searchDir" : ["src", "res"],
    "ignorDir" : ["cocos", "obj","version"]
}

versionConfigFile = "res/config/version_info.json"  #版本信息的配置文件路径

versionManifestPath = "res/version/version.manifest"    #由此脚本生成的version.manifest文件路径

projectManifestPath = "res/version/project.manifest"    #由此脚本生成的project.manifest文件路径


class SearchFile:
    def __init__(self):
        self.fileList = []

        for k in assetsDir:
            if (k == "searchDir"):
                for searchdire in assetsDir[k]:                 
                    self.recursiveDir(searchdire)

    def recursiveDir(self, srcPath):
        ''' 递归指定目录下的所有文件'''
        dirList = []    #所有文件夹  

        files = os.listdir(srcPath) #返回指定目录下的所有文件,及目录(不含子目录)

        for f in files:         
            #目录的处理
            if (os.path.isdir(srcPath + '/' + f)):              
                if (f[0] == '.' or (f in assetsDir["ignorDir"])):
                    #排除隐藏文件夹和忽略的目录
                    pass
                else:
                    #添加非需要的文件夹                                  
                    dirList.append(f)

            #文件的处理
            elif (os.path.isfile(srcPath + '/' + f)):               
                self.fileList.append(srcPath + '/' + f) 
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值