Gogh本地房间的备份·恢复·共享【理论&实践篇】2025.10.15

0 点赞
gogh: 虚拟形象与专注
转载

基于对本地房间存档文件RoomSaveDataV2.bin及贴图资源文件夹ItemStickerImage、ItemStickerGif的备份、覆盖与共享操作,实现了本地房间存档的导出与恢复、跨用户共享与多人接力编辑,以及好友间的房间继承等。

本文档最近更新于2025.10.15,更新了扩展实践、注意事项和扩展阅读。 【理论】房间的本质是一串数据 【实践】备份一个房间 【理论】Gogh本地数据一览 【实践】备份一个房间的自定义媒体 【理论】让已被删除的房间恢复的原理 【实践】恢复被删除的房间 【扩展应用】好友间的房间继承 注意事项:不要随便将.bin分享给陌生人 【扩展实践】通过传输.bin文件,和好友分享一个房间 【扩展应用】多人接力编辑 【其他扩展】捏人也可以像房间一样备份、恢复和分享 【扩展阅读】RoomSaveDataV2bin的浅层解析 其他 理论·房间的本质是一串数据 要备份房间,首先需要知道一个房间由什么组成,它们是后续恢复房间时必须要掌握的信息。

一个房间的数据包含:名称(例如薄巧咖啡厅、毛厂自习室等)、大小(大或小)、属性(布鲁克林、海滨、花园等)、槽位(房间在9个槽位中的具体位置)、摆设的物品和位置以及自定义媒体。 例如,上图的房间数据如下:名称为零食屋,大房间,属性是花园,位于第6槽,里面摆放了很多家具,还有很多自定义媒体。 这些数据都存储在RoomSaveDataV2.bin文件中。也就是说,RoomSaveDataV2.bin是记录房间所有数据的存档文件。

序号0~8的存档文件分别存储了房间1~9的数据,即: RoomSaveDataV2_0 → 房间槽位1的数据 RoomSaveDataV2_1 → 房间槽位2的数据 RoomSaveDataV2_2 → 房间槽位3的数据 ...... RoomSaveDataV2_8 → 房间槽位9的数据 所以,房间备份的本质是备份其对应的Bin文件。 实践·备份一个房间

天哪,我的房间满了,为了创建新房间,我必须要删掉一个。 我打算把Cofee123删掉,但是有些不舍,因为删掉之后,它就永远消失了。如果能备份这个房间,之后偶尔还能回来看看就好了。

无法恢复?是了,你当然可以备份,还能恢复它!让我们把这个房间的属性记下来: 它叫Coffee123 小房间 海滨 位于第4槽 这个房间位于第4槽,也就是说,它对应的存档文件是RoomSaveDataV2_3.bin啦!因为根据上一节,我们知道: RoomSaveDataV2_3→房间槽位4的数据 那就让我们找到RoomSaveDataV2_3.bin这个文件在哪里吧? 找到它 使用管理员模式启动Everything,它会将【最近发生了变化的文件】显示在列表里。

为了让目标文件RoomSaveDataV2_3.bin发生变化,需要对位于第4槽的房间Coffee123进行编辑。可以随意移动屋内的物品。

我删掉了一个小玩偶并保存,此时,因为我对房间的编辑操作,RoomSaveDataV2_3.bin 的数据更新了。由于文件发生了变化,此时打开 Everything,我们能发现它在列表里。

右键该文件,选择打开文件路径

在打开的窗口中找到对应文件

将其复制到桌面

写一个关于此存档的备忘小纸条,方便后续恢复。然后将Bin文件和小纸条放入同一个文件夹中。

好了,房间备份完毕~!但是,你有没有忘记什么? 理论·Gogh本地数据一览 你往房间里上传了100张自定义图片,但是发现存档文件RoomSaveDataV2.bin仍然只有数百KB的大小,这明显不正常。 是的,如果在后续恢复房间的操作中只恢复.bin文件,房间里的所有自定义媒体(图片和Gif)都会消失,被替换为白板。那么你上传的图片都存储到哪里了? ItemStickerImage与ItemStickerGif 你在本地房间里上传的图片全部存储在ItemStickerImage和ItemStickerGif文件夹中。

敏锐的你发现,除了ItemStickerImage和ItemStickerGif,这里还有很多其他文件夹,说明Gogh还在本地存储了其他数据。 AvatarSlotThumbnailImage→存储了你捏的小人的头图。

DiaryPhoto→存储了你写的日记中的图片。 ItemStickerGif→存储了你在本地房间上传的动图

ItemStickerImage→存储了你在本地房间里上传的静态图片

RoomThumbnailImage→存储了你目前房间的封面图。

SaveData → 存储着捏人数据(AvatarCustomJsonSaveData)、房间数据(RoomSaveDataV2)、待办任务表(TodoListSettings)等许多重要数据。

也就是说,想要完整备份你的房间状态,除了记载着家具布局的RoomSaveDataV2.bin文件之外,你还需要同时备份你在自定义图片家具(例如展示柜)上传的媒体们。 实践·备份一个房间的自定义媒体 让我们继续完成Coffee123房间的备份工作。

上上节我们通过备份RoomSaveDataV2.bin,直接备份了房间的状态,包括家具布局等比较重要的数据。现在我们需要对这个房间的媒体进行备份。 如你所见,这个房间有4个自定义媒体。正如上节所讲,我们要找到ItemStickerImage和ItemStickerGif。它们位于C:UsersYayAppDataLocalLowgoghJapangoghSteamCloudSynced76561198849828876(划线部分根据每个人的电脑不同,显示不同,但基本路径相同。)

这么多图片,哪些是你需要备份的?如图,前四张图片的文件名前缀为3_,这表示它是槽位4房间里的媒体。同理,其他文件名前缀为5_的图片,都是槽位6房间里的媒体。图片的文件名不可以修改,它们拥有特殊的意义。 在我们之前创建的装着.bin和小纸条的文件夹里,创建同名文件夹。

我要备份的房间Coffee123位于槽4,那么,在ItemStickerImage和ItemStickerGif里筛选所有前缀为3_的图片,复制到我们刚刚创建的同名文件夹。

恭喜你完成了一个房间的完整备份!现在,我们成功备份了家具位置【RoomSaveData】、房间属性(小纸条)和自定义媒体【ItemStickerImage】与【ItemStickerGif】!

现在,可以把这个房间删掉了。再见了,Coffee123!

理论·让已被删除的房间恢复的原理 注意:备份的房间只能恢复到它当初所在的槽! 我们上文中提到的所有文件,其实都存储在gogh/SteamCloudSynced文件夹中。 这个文件夹的中文名为【Steam云同步】,Cloud指云,Synced指同步。

如图,每次退出Gogh时,Gogh都会和Steam进行云同步。Gogh和Steam进行云同步通信的本质是将SteamCloudSynced文件夹里面的所有文件上传到云端。每次启动Gogh时,Steam云端与Gogh会共同检查本地与云端的SteamCloudSynced一致性。如发现不一致,云端数据将优先覆盖本地资料。这一机制确保通过Steam云服务,Gogh可以在不同设备上读取相同的数据,从而实现自定义房间和角色在多个设备间的同步。通过对.bin文件进行正确的操作并退出游戏,Gogh会将修改后的.bin上传至Steam云端。再次启动Gogh时,经过校验,Gogh会成功读取.bin文件并恢复其记录的房间数据。bin 文件,并记得房间名称、属性和大小,就可以恢复删除的房间。 操作中有许多值得注意的地方,让我们来通过实践说明。 实践·恢复被删除的房间 上文中,我们备份了位于槽4的房间Coffee123的所有数据后,删除了这个房间,给其他房间腾位置。按照官方在游戏内的说明,删除的房间无法进行复原。现在让我们来进行房间的复原。

第一步:清空对应的槽 恢复的房间只能恢复到它所对应的槽,由于我们要恢复Coffee123,而且它之前是存储在第4槽的(这些都记在我们之前写的小纸条里了),所以我们要清空目前的第4槽。

将第4槽【温馨的小屋】备份后删除。

第二步:新建与要恢复的房间属性一致的空白房间。 当前槽位为空,需在该空槽中新建房间。 根据记录:Coffee123是一个小型海滨房间。 因此,创建一个空白的小型海滨房间。

第三步:离开空白房间 当新创建的小型海滨空白房间完成后,房间内空无一物。为避免阻碍房间恢复进程,必须离开该房间并前往其他任意本地房间。这是由于此空房间即将接受数据覆盖,若停留在房间内会对数据覆盖造成影响。

第四步:文件覆盖 将Gogh最小化,使用Everything或者直接访问路径,找到存储着槽4房间当前空白状态的文件RoomSaveDataV2_3.bin(位于gogh SteamCloudSynced SaveData),用先前备份的存储着Coffee123房间状态的同名文件覆盖该文件。

覆盖完成后,请记得将图片文件粘贴回对应的文件夹中。

第五步:退出游戏 完成文件操作后,打开Gogh,在游戏内退出游戏。

第六步:等待Gogh和Steam云端的通信完成之后,重新打开Gogh。此时会发现刚刚创建的空白房间的默认名称变成了Coffee123,这正是需要复原的房间的名称。

点进去看看,一切都回来了... 恭喜你完成了已被删除的房间的恢复!

理论扩展·好友间的房间继承 RoomSaveDataV2.bin 支持跨设备读取,让你的朋友将他的 RoomSaveDataV2.bin 以及房间属性发送给你,你就可以在自己的设备上同步你朋友的房间了!

注意事项:不要随便将【.bin】文件分享给陌生人!!!

.bin 文件记录着您的房间的所有数据,而您的房间是您亲手打造的心血。 将 .bin 文件随便交给陌生人,会导致您的房间被:无授权复制为好几个副本分发给更多你不认识的人! 你的房间不再唯一! 恶意改造后被拿去开多人房说是自己搭的! 确保你的朋友值得信任,否则不要将房间文件分享出去!

——温馨、细节满满,还带着一种静谧的治愈感。 那么接下来,让我们试着接收好友分享的房间文件,并将其导入进Gogh。 第一步:接收好友发来的.bin以及补充信息

第二步:按照信息在对应槽位新建属性相同的空房间 注意到这是一个位于第6槽,属性为大的花园房间。 这些信息十分重要,是我们能否成功导入好友房间的关键。 打开Gogh,在第6槽创建一个空的,属性为大的花园房间。

第三步:离开空白房间(但不要关闭游戏) 当新的、空白且大型的花园房间创建完成后,房间内空无一物。为了不阻碍导入房间数据的进程,必须离开这个房间,前往其他任意一个本地房间。因为这个空房间稍后要接受数据覆盖,若停留在房间内会影响数据覆盖。 第四步:文件覆盖 将Gogh最小化,使用Everything或者直接访问路径,找到存储着槽6房间当前空荡荡状态的文件【RoomSaveDataV2_5.bin】(位于gogh的SteamCloudSynced SaveData目录下),用已准备好的、好友分享的【RoomSaveDataV2_5.bin】覆盖该文件。注意:文件必须同名才能覆盖。

请不要忘记导入房间内的自定义媒体,否则导入的房间中的自定义媒体将被替换为白板。静态图片放入ItemStickerImage,动态图片放入ItemStickerGif。

第五步:文件的覆盖与复制操作完成后,关闭游戏,等待云存档同步完成。

第六步:等待Gogh和Steam云端的通信完成后,重新打开Gogh,进入刚刚接受文件覆盖的【槽6】房间,查看房间导入结果。

朋友的房间出现了——说明我们导入成功了。恭喜你! 扩展应用·多人接力编辑 例如朋友A擅长创造性地摆设大件家具,随后将房间文件RoomSaveDataV2.bin(一版)分享给擅长布置装饰画的朋友B,朋友B再将RoomSaveDataV2.bin(二版)发送给擅长生活氛围布置的朋友C,朋友C再将RoomSaveDataV2(三版)发送给擅长细化的朋友D,从而完成多人接力编辑,最后编辑好的房间可以在所有人的设备上同步。 其他扩展·捏人也可以像房间一样备份、恢复和分享 和房间数据的载体RoomSaveDataV2.bin一样,你捏的小人的数据存储于AvatarCustomJsonSaveData.bin,它们共同位于gogh SteamCloudSynced SaveData。小人的备份、恢复、分享操作与房间的备份、恢复、分享操作一致。 扩展阅读:RoomSaveDataV2.bin 的浅层解析 RoomSaveDataV2.bin 可能是按48字节段封装的、基于Windows CryptoAPI的混合加密输出(对称加密+公钥封装),带有随机IV/nonce,这使得在缺乏私钥的情况下从密文恢复明文几乎不可能——总体实现安全且规范。 这也是导入房间需要槽对槽、属性对属性的原因——它们本质上都是存储于加密的.bin文件中的类似校验性质的信息。如果将槽3的存档文件覆盖到槽4,或者覆盖前后的房间属性不一致,Gogh就会提示存档损坏。 问:将房间开放联机,会让我的房间被复制吗? 答:不会。虽然你可能注意到,当玩家加入你的房间时,Gogh 会将房间数据下载到玩家的电脑中,但玩家只能接收到一个明文的.json文件。

没有任何办法将这段明文的.json转化为本地房间的可读数据.bin,因为.bin强加密。 这也是Gogh保障创作者权益不被侵犯的举措之一。 房间开放联机,不会导致你的房间被复制。 但是,记录着房间数据的.bin文件如果被他人获取,这个房间就会被复制。任何时候不要轻易地将自己房间的.bin文件分享给他人。 其他 参考视频