先讲最基础的东西。Steam的离线模式,本质上是让你在没网的情况下启动游戏。游戏本身的存档文件,绝大多数是存在你电脑本地的,路径一般在Steam安装目录下的userdata文件夹,或者游戏自己指定的文件夹里。你离线玩,游戏写入的就是这些本地文件。这时候你的操作、进度、捡了什么东西,全老老实实记在硬盘上。只要你不手动去改,或者游戏崩溃,这些数据就是固定的,跟你开不开网没有任何关系。
那为什么说重新联网后会有变化?关键在于Steam云存档。Steam给很多游戏开了这个功能,目的就是让你换个电脑也能接续进度。云存档平时怎么工作呢?正常情况下你在线玩游戏,每次退出,Steam客户端会把你本地最新的存档文件上传到它的服务器上。同时,当你启动游戏前,Steam也会比较本地和云端的存档时间,选新的那个下载下来。这是在线模式下的自动流程。
可你一旦切到离线模式,Steam客户端就停止所有云同步了。你玩了一两个小时,退出来,本地存档已经更新,但云端还停留在你上次在线时上传的旧版本。这时候你重新联网,Steam会做什么?它会尝试同步。大多数情况下,它发现本地文件的修改时间比云端新,就自动把本地这份上传,覆盖云端。于是你的存档就和离线时完全一样,皆大欢喜。
但坑就坑在,有些游戏或者某些特殊情况,同步逻辑判断不是那么聪明。比如你离线玩完退出,游戏可能在你退出时才生成一个最终存档,但那个存档修改时间和你启动游戏时差不多,或者因为系统时间错乱,导致Steam误以为云端那个更新。这时候它就会把云端旧档下载下来,覆盖你本地的新档。等你再打开游戏,傻眼了,进度回到两小时前。这种情况虽然不常见,但确实有人遇到,尤其是在不同设备之间切换,或者电脑时间不准的时候。
还有一种情况,就是游戏本身有双重存档机制。有的游戏既写Steam云存档,自身也有内部存档冲突检测。比如某些育碧游戏或EA游戏,它们有自己的平台,Steam只是启动器。你离线玩Steam端,但游戏内可能关联了育碧账户。重新联网后,Steam云同步是一回事,游戏自己又会去连接育碧服务器,两边一比对,要是规则写得不严谨,也可能出现覆盖。不过这类问题通常属于厂商优化不好,跟Steam本身关系不大。

再提一个玩家容易忽略的点:即使你离线玩,只要游戏没有启动,你实际上可以不依赖Steam客户端。但如果你是通过Steam离线模式启动的游戏,那么游戏运行期间,Steam是禁止任何网络通信的。所以在游戏里你碰到的一些“需要联网”的功能,比如排行榜、在线验证,全都会失效。部分单机游戏有反作弊或DRM验证,它们会在启动时联网检查一次。离线模式下,这些检查会被跳过,游戏允许你玩。但等你重连了,有的游戏下次启动时会强制重新验证,这不会动你的存档,只关乎你能不能进游戏。
那到底怎么保证离线玩的进度不丢?最稳妥的办法就是,在你切离线模式之前,先确认Steam云存档已经同步完成。怎么确认?看Steam客户端右下角,如果显示“云同步已完成”之类的字样,就可以放心离线。然后离线玩完,重新联网后,别急着马上启动游戏,先让Steam客户端自己跑几秒钟同步。你看到右下角出现“云同步进行中”或者“云同步完成”,再开游戏。这样基本万无一失。
还有个土办法,就是手动备份。你去userdata目录下找到对应游戏编号的文件夹,把里面的存档文件复制一份到别处。如果重连后不幸被云端旧档覆盖了,直接把你备份的复制回去,就能找回离线那段时间的进度。这个办法对所有游戏都管用,就是麻烦点。
总结起来,离线模式和在线模式本身不会改变你游戏里的存档内容,存档文件就是那一份。但Steam云存档的同步机制,可能在你重新联网后导致“覆盖”或者“合并”的操作。如果你运气好,本地新,云端旧,那就完美同步。如果出现意外,云端旧档覆盖了本地,那你离线的进度就白打了。所以别在离线状态下一玩就是十几个小时,除非你做好了被覆盖的心理准备。最安全的方式是,要么完全不开云存档,要么保证每次离线前后都有一次干净的在线同步。
其实大多数玩家正常操作,从来不会注意到这个问题,因为Steam的云同步做得还算靠谱。只要你电脑时间准确,游戏退出时正常,基本都按新的来。但万一你遇到那种“我离线玩了三小时,重连后进度没了”的情况,现在你知道是怎么回事了,也知道怎么处理了。下次再想离线玩,心里有个数就行。