最近原神 4.0 大版本更新了,更新大小令许多玩家吐槽:硬盘要装不下了。由此突发奇想,不如来统计一下原神各版本的体积变化,看看它到底是如何一步步膨胀的。
1. 方法
这一部分将会介绍我的分析方法,如果想要看结论可以直接往后跳。
1.1. 选用版本
我选用的游戏版本是国服正式版,即 CNREL 开头的版本。语音包均选择中文,即 zh_cn 开头的版本。
各版本均从原神官方的 CDN 下载的差异更新包。更新包的 CDN 链接来源是:
这个仓库收集了原神几乎所有版本的官方 CDN 下载链接,同时也有一些神秘的测试版下载链接。
之所以选择下载差异更新包而不是全量包进行分析,原因是全量包体积实在是太大了。每一个全量包都是一个完整的游戏,即使按一个版本 40G 来算,25 个版本也要整整 1TB 的空间,下好之后还需要解压,也就是说一共要 >2T 的空间才行。
因此,为了节省磁盘空间和降低下载耗时,我选择了用差异包进行分析。但是这就会引出一个问题,脱离了原神启动器,该怎么使用差异包进行更新?
1.2. 更新方法
首先,原神的差异包有两种,一种是传统的 diff 包,一种是用了差分更新技术的 hdiff 包。在 1.0 ~ 2.3 版本的更新包,都用的是 diff 形式,之后的更新就是 hdiff 了。
对于 diff 包,这个比较简单,直接将更新包内的文件覆盖到游戏文件夹,然后在按照更新包内 deletefiles.txt
记录的信息,把要删除的文件删掉就行了。这个过程我编写了一个 Python 自动化脚本完成,同时进行数据统计。
而对于 hdiff 包,它包括了 diff 包的功能之外,有些以 .hdiff
结尾的文件使用了差分更新,它需要与旧版文件一起合成新版文件。我在原神启动器的目录下,找到了米哈游使用的差分更新软件 hpatchz
,我直接使用 Python 调用该软件进行差分更新。
最后我编写的更新脚本分享在云盘里:https://run.sh.cn/gsupd,如果你要使用的话,需要把第 5 行的 hpatchz_path
指定到你的差分更新程序,另外目录均不能含空格。
1.3. 存在问题
在测试过程中,我也发现了一些不好解决的问题。我们都知道,原神进入游戏前还会进行热更新,这个热更新是下载的更新包里面不包含的,必须打开游戏后再下载。由于旧版本会直接弹出需要版本更新,因此压根无法获取到热更新包,所以这一部分的内容就无法统计到了。
不过热更新的大小一般非常小,都在几百 MB 左右,因此我认为对分析结果的影响不大,所以就不管了。
2. 分析结果
不多 BB,直接放图!如果需要详细数据表格,或者是作图用的 Python 代码,我也全都分享到了云盘:https://run.sh.cn/gsupd
2.1. 游戏体积变化
可以发现,每个大版本(1.6~2.0, 2.8~3.0, 3.8~4.0)的跃迁都比小版本要大,并且 4.0 的增长格外的大。
2.2. 更新包体积变化
可以发现,3.8 ~ 4.0 的更新包确实是纵观整个游戏更新以来,最夸张的一次。几乎是把半个游戏重新下载了一遍。
不过还能发现,1.0 ~ 1.1 的更新包也挺大,可能是刚开服进行了文件架构调整。另外 2.6~2.7 的语音包更新非常突出,超过了 5G,可能也是语音结构发生了改变。
2.3. 更新文件增删
这张图主要反映每次更新的文件增删大小。可以发现增删比例目测是 10:7 左右,也就是说每次更新并不是简单的 旧版本体积+更新包体积=新版本体积。
最近的 3.8~4.0 更新,删除的内容确实非常之多,可见确实有很大的文件调整。
发表回复