码迷,mamicode.com
首页 > 其他好文 > 详细

关于资源增量更新策略

时间:2015-05-30 21:09:14      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

符号含义

  • {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} 中,如果增加,就将软链接删除,并且上传资源,依此类推。

需要注意的地方

软链接的删除需要回溯到最根源的地方,因为随着游戏版本发布的增多,可能最新版本的文件,其他链接的目标是一个很老的版本的文件。

------

大概的思路就是这样





关于资源增量更新策略

标签:

原文地址:http://www.cnblogs.com/yili16438/p/7d5d84602a5aa307e3f38c0bfb7fe11e.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!