cocos-lua棋牌类游戏的打包热更流程

今天有时间我来说一下,对于棋牌游戏来说我们如何正确打android包与正确更新整个包体。

如今对于新生成项目的同学,我想对你们说,你的路是对的,因为只有自己尝试搭建项目了你才知道一个项目的完整流程是什么,在过程中会遇到很多你以前没有遇到过的问题。

使用AndroidStudio去开发安卓段并且打包,因为如今已经有很多的项目推荐使用,他是如此方便接入第三方,配置项目属性,甚至通过编译过程中生成中间件来完美一件打包。

 

下面就是android具体的打包流程:

1.导入android-studio项目

对就是他,他比proj.android要省事的多,会自动将你的cocos下libcocos2dx包库项目引入项目中。不用你手拖了。

2.android-studio会先更新项目插件,不用管它等一会就好

 

待到出现此类信息是就可以进行下一步了。

3.配置Edit Configurations打包命令

 

这样就配置成功外部编译工具的方式了

4.编译生成apk

我们对于热更的游戏来说一定需要分包处理,不然会导致资源过大,加载缓慢,加大热更失败的可能性,所以一般棋牌类游戏会有3块处理区域

1.启动区(初始化配置,更新检测以及更新,等操作)

2.大厅区(除游戏外的所有附属功能,启动游戏框架等)

3.游戏区(每一个子游戏的程序脚本,资源等)

 

对于这样的三块来说我们很有必要拥有单独热更的能力。

 

对于热更新最基本的是需要有对比每一个文件是否相同的能力,从而盘带你是否更新此文件。为此我们需要问每一个文件添加MD5形成映射表。

@echo off

//生成base的文件映射
rem base
MakeMD5List -dst %temp% -src ..\client\ciphercode\base
copy %temp%\filemd5List.json ..\client\ciphercode\base\res\filemd5List.json
del %temp%\filemd5List.json
//生成client的文件映射
rem client
MakeMD5List -dst %temp% -src ..\client\ciphercode\client
copy %temp%\filemd5List.json ..\client\ciphercode\client\res\filemd5List.json
del %temp%\filemd5List.json

//game_list.txt游戏列表路径文件
//生成每个游戏的文件
set /a game_count=0
rem game list
for /f "skip=1 tokens=1,2,3,4,5,6,7,8,9,10 delims==," %%a in (game_list.txt) do (
	echo game name %%b
	del %%d\filemd5List.json
	MakeMD5List -dst %temp% -src ..\%%d
	copy %temp%\filemd5List.json ..\%%d\res\filemd5List.json
	del %temp%\filemd5List.json
	
	set /a game_count+=1
	if  errorlevel 1 goto OnError
)
for /f "skip=1 tokens=1,2,3,4,5,6,7,8,9,10 delims==," %%a in (game_list_64bit.txt) do (
	echo game name %%b
	del %%d\filemd5List.json
	MakeMD5List -dst %temp% -src ..\%%d
	copy %temp%\filemd5List.json ..\%%d\res\filemd5List.json
	del %temp%\filemd5List.json
	
	if  errorlevel 1 goto OnError
)
if  errorlevel 0 goto Finish
:OnError
echo make md5 error
pause

:Finish
echo.
echo.
echo 处理游戏数目 %game_count%
echo.
echo.

 

对此我相信大家都回想到使用网狐提供的MakeMD5List.exe工具专门通过bat文件生成对应的json映射文件,以及一些拷贝操作。

 

为了减少包体积我们往往会进行压缩,最后将base,client放入游戏asset中。游戏则是放到服务器中下载下来解压使用。

 

 

在启动游戏时。

1.检测本地是否有zip有则解压加载

2.向服务器发送请求校验本地是否有版本记录(优化:映射文件中添加版本号与服务其版本号比对减少不必要的资源)

3.没有版本记录,下载远程映射文件(filemd5List.json)Md5比对,不同不能够添加到下载对列中等待下载

4.有版本记录,nNewV > nCurV执行同上,反之跳过此步骤

5.开启多个下载进程,如平分到3个线程中,执行下载程序(如共需下载100个文件),单个文件下载完成回调,文件写操作,存储操作等

6.文件下载数完成到100时执行completeCallBack回调执行其余操作,重启或者热加载

 

嗯,大概就是这个样子,你可以自己完善功能,这里只是介绍略的操作流程。

[最后奉上自己的个人博客,欢迎学习使用]

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值