您的位置:首页 > 其它

关于资源增量更新策略

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: