关于资源增量更新策略
2015-05-30 20:45
330 查看
符号含义
{version} : 指游戏版本,一般来说指 SVN 的 HEAD 版本号{new_version} : 指需要更新的游戏版本号
{files_info} : 一个记录了完整的游戏文件结构的文件,包含了文件的路径,版本号,大小,MD5等等信息
{new_files_info} : 同上,指需要更新的
{diff_info} : 文件差异
{web_dir} : 指 WEB 服务器的根目录
{res} : 指游戏资源目录
预先操作
默认每次发布游戏,不管是发布大版本的安装包,还是小版本的资源更新,都会有一个唯一的版本号 {version} ,这个版本号可以通过一个固定的 WEB API 去获取,比如 http://cdn.game.xxx.com/version.php初始化
在 {web_dir} 创建文件名为 {version} 的文件夹,然后上传游戏资源到 {version} 目录下,目录结构为 {web_dir}/{version}/{res}更新准备
每次更新之前,将 {files_info} 和 {new_files_info} 进行比对,计算出文件差异 {diff_info},比如增加了什么文件,删除了什么文件,修改了什么文件等等,{diff_info} 的文件内容大概是这样:+icon/skill/100.assetbundle
-icon/skill/101.assetbundle
*icon/skill/102.assetbundle
+ 表示增加,- 表示删除,* 表示修改,这个完全可以自己定义
游戏更新
当需要发布新版本的时候,此时版本号为 {new_version} ,在 {web_dir} 创建文件名为 {new_version} 的文件夹,然后递归的将 {web_dir}/{version} 中的所有文件做软链接,做到 {web_dir}/{new_version} 中,只对文件创建软链接,文件夹需要创建,此时,{web_dir}/{new_version} 拥有和 {web_dir}/{version} 一样的资源,但完全不占用硬盘空间。接着,将 {diff_info} 中的信息应用到 {web_dir}/{new_version} 中,如果增加,就将软链接删除,并且上传资源,依此类推。
需要注意的地方
软链接的删除需要回溯到最根源的地方,因为随着游戏版本发布的增多,可能最新版本的文件,其他链接的目标是一个很老的版本的文件。------
大概的思路就是这样来自为知笔记(Wiz)
相关文章推荐
- MVP for Android
- AOP之代理模式(二)
- 猜测:Oracle ash报告中SQL Text 出现"** SQL Text Not Available **"的原因
- Android应用中遍历Assets的结果
- 兔子--解决EditText的drawableLeft与输入文本的协调问题
- 网络工程师必备素质-IP地址练习题
- Intellij_idea-14官方快捷键中文版
- MySQL主从复制几个重要的启动选项
- matlab中fspecial中生成高斯模板的解释以及c语言实现
- mysql登陆与退出
- 北京络捷斯特第三方物流信息系统技术解析(五) 订单录入-配送订单
- Android实战简易教程-第五枪(ListView用法研究)
- 团队冲刺阶段二第四次站立会议
- wsdl2java 生成webService客户端代码,并读取数据
- 浅析几种排序
- Missing variable or function matlab错误
- Pascal's Triangle II
- 海马汽车经销商管理系统技术解析(五)预约修改
- iOS7 与 iOS8上 uisegementcontrol 设置image不显示问题
- Storage