我玩Steam已经很多年了,但从来没有遇到这么诡异的问题:明明在客户端里切换了账号,登录成功,游戏库却还是原来那个账号的。这让我几近崩溃,因为我正准备用借来的账号玩一款游戏,却怎么都找不到它。
事件始末
那天晚上,我和朋友约好了要一起联机,他慷慨地把他的账号借给我,因为他的库里正好有那个游戏。我回到家,打开Steam,退出我的账号,输入他的账号和密码,点击登录。一切都很顺利,右上角也显示了他的昵称。但是,当我点开“库”标签,游戏列表竟然还是我的那几十个游戏,根本没有他那个新游戏的影子。我第一反应是网络延迟,于是等待了几分钟,又多次点击“库”刷新,但毫无变化。
疯狂尝试
我开始怀疑是Steam客户端出了毛病。我先尝试了最傻的方法:重启Steam。结果没用。然后我又重启了电脑,还是没用。我甚至重装了Steam客户端,问题依旧。这时我真的有点急躁了,因为朋友还在等我上线。我甚至想过是不是他的账号有问题,但他在他自己电脑上登录完全正常。
自己动手
冷静下来后,我决定从一个程序员的视角来思考。Steam必然在本地存储了某些用户数据,可能缓存了库的信息。我进入Steam安装目录(通常是在C:\Program Files (x86)\Steam),开始翻看文件夹。我注意到一个叫“userdata”的文件夹,里面有一些数字文件夹(每个Steam用户ID)。我猜这可能是存储每个用户配置的地方。但直接删除这个文件夹可能会丢失所有游戏的配置,太冒险了。我把目光转向了根目录下的几个.VDF文件,比如loginusers.vdf和config.vdf。我推测这些文件保存了登录过的账号和客户端配置。
我决定先备份这些文件,然后退出了Steam,删除了loginusers.vdf和config.vdf(只删除这两个,其他的不动)。重启Steam后,客户端要求我重新登录。我输入朋友的账号,成功登录,这次库终于显示的是他拥有的游戏了!我兴奋地向他报告这个好消息,然后我们开始了愉快的联机。后来我了解到,Steam为了提供快速切换用户的体验,会在loginusers.vdf中缓存多个账号的信息,但有时版本冲突或数据残留会导致库显示错乱。删除这个文件迫使Steam重新从服务器获取账号信息,这样就修复了问题。
后记
自从那次以后,我偶尔也会遇到类似的缓存问题,但现在已经知道怎么处理了,再也没有被它困扰过。这次经历让我认识到,虽然Steam是一个相当成熟的平台,但本地客户端也会有一些小bug,不过只要理解了原理,解决问题并不难。
