【第22期】观点:IT 行业加班,到底有没有价值?

[CC] Cocos2d-x热更新后台实现

转载 2016年08月30日 18:34:52
后台环境:
python 2.7 + webpy0.37
webpy安装:
1、解压webpy,cmd至webpy路径下
2、cmd运行python setup.py install
详细了解webpy,请访问其官网:http://webpy.org/


为了保持客户端最安全与最小化热更新,我们需要判断出每个版本的差异,将差异文件下载到客户端。为了差异识别,我们将生产res与src下所有文件的MD5,并将其保存至相关文件夹,保存内容如下:
src/test1.lua:e6e8feb29a41a0d83c29c834c10a42a2
src/test2.lua:b87957f382a4a292db91bd937b66a000
res/ani/enemy/monster.csb:6a42885d985f777418d97ef956758f2e
res/ani/enemy/monster.exportjson:1c26ec5818281794e98a4d05c3d871c4
后面我们只需要对比客户端当前版本与服务器最新版本的资源列表的md5以及判断哪些是新增文件,这样我们就可最小化获取需要更新的列表。
到此,我们可以将此文件连同当前版本文件放至服务器,让客户端下载更新列表,并在客户端判断需要下载那些文件,但是这样真的好么,如果一次更新n个文件,那样的连接将会有n次,可能是我多虑了。但我考虑到我们的版本不可能无限次发布,因此我决定将版本差异的包放在服务器,这样客户端只用告诉我们他当前什么版本,就可以获取到升级至最新版本的更新包。
比如客户端当前版本为1.0,服务器最新版本为2.0,通过url传至服务器,客户端就可以获取一个1.0升级到2.0的资源包,客户端通过assertManager可以文件解压,我们再将解压目录文件移动至我们的查找目录就ok了。
服务器通过各个版本的资源列表,获取改动和新增的文件,并将其打包压缩至zip文件。而且由于我们发布的版本是确定的,因此这些更新文件在服务器只会生成一次,对服务器来说基本没什么压力,而且我们可以将其预先生成,保存至服务器。

在服务端,我采用如下路径配置:
App:(项目名称)
--project:(保存最新项目资源,手工配置)
----res:(资源路径)
----src:(脚本路径)
--publish:(更新包路径,目录下文件自动生成)
----version.txt (当前最新版本号,手工修改)
----1.0(1.0版本包)
------list.txt(当前版本1.0的资源列表及MD5)
------update.zip(只有基本版本才会在当前路径层级下有更新包)
----2.0
------list.txt
------1.0
--------update.zip(1.0升级到2.0需要的更新资源包)
...
我们需要手工配置下project文件,这里面保存我们所发布的最新资源和脚本;publish下保存的是各种版本的更新包。
最终我们运行程序后,可以通过url访问版本与获取更新资源包:
获取最新版本号:http://127.0.0.1:8080/?action=ver

下载更新包:http://127.0.0.1:8080/?action=update.zip&ver=1.1(ver为本地当前版本,url中需要有.zip,cocos2d-x终对url做了判断)

项目工程: 点击下载



举报

相关文章推荐

一种 Roguelike 地牢生成算法

http://indienova.com/indie-game-development/roguelike-dungeon-building-algorithm/ Dungeon Algorit...

[CPP]宏的字符串处理

宏定义无## 和 #, 参数继续展开;否则就不继续展开 1、 #define A(line) shit_##line   #define B(line) A(line)     ...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

[MM] 随机生成迷宫地牢

// Author: FreeKnight 2014-09-02 #include "stdafx.h" #include #include #includ...

【Cocos2d-x】实现资源热更新

转载于 http://blog.csdn.net/linchaolong/article/details/42321767 【Cocos2d-x】实现资源热更新 分类: Cocos2...

cocos2d-x学习备忘之三——iphone中,游戏前后台切换调用方法顺序

     在iPhone中,cocos2d-x启动和前后台切换时,调用的方法和纯iPhone框架几乎是相同的。只是中间穿插了AppDelegate.cpp中的方法。其中AppDelegate.cpp主要代码如下: bool AppDelegate::appl...

【Cocos2d-x】实现资源热更新

文章转载自:http://www.yxkfw.com/?p=50996 热更新介绍 什么是热更新? 游戏客户端启动时,主动请求服务端检查版本号,并更新资源...

Android开源项目分类汇总

第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、 GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、 F...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)