Steam刚下载就要更新?这背后的设计让我又爱又恨

相信每一个Steam玩家都遇到过这种倒霉事:花了一整晚把游戏下完,兴奋地点击“开始”,结果弹出一个进度条——“需要更新”。更可气的是,这个更新有时候比原游戏还大。我前阵子预购了《赛博朋克2077:往日之影》,提前下载了80多G的预载文件,结果发售当天解锁时,Steam直接开始下载一个40G的更新包。那种感觉就像你饿了一整天,好不容易等到饭端上来,结果告诉你还要再等一小时。

预载的“骗局”

很多人以为预载就是提前把完整游戏存到硬盘里,解锁就能玩。实际上,为了防剧透和防盗版,预载文件是加密的,里面还塞满了无用填充数据。解锁时Steam不仅要做解密,还要比对文件版本。如果开发者在预载版本和正式版之间发过任何补丁,那预载文件就变成了旧版本,必须重新下载改动过的部分。最坑的是,有些游戏因为打包方式不同,哪怕只改了一行代码,相关资源包都得整个重下。我见过十几兆的更新补丁,结果Steam下了一个几十G的包,真是让人怀疑人生。

Steam刚下载就要更新?这背后的设计让我又爱又恨

增量更新为什么不够“聪明”

Steam一直宣传自己的Delta增量更新技术,理论上只下载变化的部分。可实际体验里,很多更新依然要花费大量时间和磁盘空间。这跟游戏引擎的打包方式有关,像Unreal引擎喜欢把资源打包成几个巨型的Pak文件,一旦内部文件有修改,整个Pak就得重新生成并下载。我曾研究过《命运2》的更新,每次改个武器数值,客户端就要下载好几G的包,因为那些数据嵌在了一个巨大的库文件里。虽然Steam能识别出变化,但没办法只下载改动的那几个字节,它只能下载整个块。这不是Steam的锅,是开发者的打包策略。但作为玩家,我只觉得这体验真差。

校验引发的二次下载

还有一种情况更气人:明明Steam显示“已下载完成”,你一点更新,它又开始“正在下载”。这往往是因为文件校验没通过。Steam在下载过程中会对每个区块做哈希校验,如果发现损坏或丢失,就会重新下载那个区块。特别是在网络不稳或者硬盘有坏道时,很容易触发这种重下。我大学时用机械硬盘玩Steam,经常碰到下完一个游戏,校验失败,又得重来。那种感觉就像考试写完了结果老师说你卷子被撕了,重写一份。虽然现在用固态好些了,但偶尔还是会被校验阴到。

我的Steam血泪史

这些年我经历了太多“刚下载就要更新”的瞬间,从早期的五六百兆更新,到现在的动辄几十G。技术进步了,痛苦也升级了。我知道Steam这么做有它的道理——统一版本、安全验证、热修支持。但我有时候就是想不通,为什么不能把更新提前放进预载里?为什么解密流程不能更顺滑?每次看到更新进度条,我都有种被Steam和开发商联手耍了的感觉。后来我慢慢认命了,现在看到“需要更新”四个字,我只会叹一口气,走到厨房给自己泡杯茶,然后坐在电脑前等它跑完。这种仪式感,或许就是Steam教给我的耐心吧。