gogh: Focus with Your Avatar

gogh: Focus with Your Avatar

Not enough ratings
Gogh本地房间的备份·恢复·共享【理论&实践篇】2025.10.15
By Js
基于对本地房间存档文件 RoomSaveDataV2.bin 及贴图资源文件夹 ItemStickerImage、ItemStickerGif 的备份、覆盖与共享操作,实现了本地房间的存档与恢复、跨用户共享与多人接力编辑,以及好友间的房间继承等。
   
Award
Favorite
Favorited
Unfavorite
目录
欢迎加入 Gogh 咕咕群(群宣素材 By 群主提坦)



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


一个房间的数据的包含:
  • 名称(比如薄巧咖啡厅,毛厂自习室等)
  • 大小(大或者小)
  • 属性(布鲁克林,海滨,花园等)
  • 槽位(房间在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个自定义媒体。正如上节所讲,我们要找到 ItemStickerImageItemStickerGif。它们位于


C:\Users\Yay\AppData\LocalLow\gogh Japan\gogh\SteamCloudSynced\76561198849828876
(划线部分根据每个人的电脑不同,显示不同。但基本路径相同。)



这么多图片,哪些是你需要备份的?如图,前四张图片的文件名前缀为 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

等待 Gogh 和 Steam 云端的通信完成之后,重新打开 Gogh,我们会发现刚刚创建的空白房间的默认名称变成了 Coffee123,而这正是我们要复原的房间的名称!



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












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

💥注意事项·不要随便将 .bin 分享给陌生人❗❗❗

.bin 文件记录着您的房间的所有数据,而您的房间是您亲手打造的心血。

将 .bin 文件随便交给陌生人,会导致您的房间被:
  • 无授权复制为好几个副本分发给更多你不认识的人❗❗❗
  • 你的房间不再唯一❗❗❗
  • 恶意改造后被拿去开多人房说是自己搭的❗❗❗

确保你的朋友值得信任,否则不要将 房间文件 分享出去!❗❗❗
⭐⭐⭐扩展实践·通过传输 .bin 文件,试着和好友分享一个房间吧
在探索 .bin 能否实现跨用户的房间分享的过程中,Gogh 咕咕群的群主 提坦 非常大方地将他捏的一个超可爱零食屋的 .bin 存档发给我做测试。实话说,没有他的帮助,这篇指南就写不出来。



——温馨、细节满满,还带着一种静谧的治愈感。

那么接下来,让我们试着接收好友分享的房间文件,并将其导入进 Gogh.

第一步:接收好友发来的 .bin 以及补充信息



第二步:按照信息在对应槽位新建属性相同的空房间

注意到这是一个位于 第6槽 ,属性为 花园 房间。

这些信息十分重要,是我们能否成功导入好友房间的关键。

打开 Gogh,在 第6槽 创建一个 空的 ,属性为 花园 房间。





第三步:离开这个空白房间(但不是关闭游戏)

的、空白大型花园房间 创建完成后,房间内空无一物,为了不阻碍导入房间数据的进程,我们必须离开这个房间,到其他任意一个本地房间去。因为这个空房间等下要接受数据覆盖,我们在房间里会影响数据覆盖。

第四步:文件覆盖

将 Gogh 最小化,用 Everything 或者直接访问路径,找到存储着 槽6 房间目前空荡荡状态的文件 RoomSaveDataV2_5.bin (位于gogh\SteamCloudSynced\SaveData),用已经准备好的,好友分享过来的 RoomSaveDataV2_5.bin 覆盖上去。注意!文件同名才能覆盖。



别忘记把房间内的自定义媒体也导入进去,否则导入的房间里面的自定义媒体会被替换为白板(方法在上文已经提及,这里不再复述)
静态图片放入 ItemStickerImage 动态图片放入 ItemStickerGif




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




第六步:等待 Gogh 和 Steam 云端的通信完成之后,重新打开 Gogh
等待 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就会提示存档损坏。

Q:将房间开放联机,会让我的房间被复制吗?
A:
不会。
虽然你可能注意到,当玩家加入你的房间,Gogh 会将房间数据下载到玩家的电脑里,但玩家只能接收到一个明文的 .json



没有任何办法将这段明文的 .json 转化为 本地房间的可读数据 .bin,因为 .bin 强加密。
这也是 Gogh 保障创作者权益不被侵犯的举措之一。


房间开放联机,不会导致你的房间被复制。

但是,记录着房间数据的 .bin 文件如果被他人获取,这个房间就会被复制。任何时候不要轻易地将自己房间的 .bin 文件分享给它人。
其他
参考视频

Gogh对含自定义媒体房间的备份和恢复
https://www.bilibili.com/video/BV1mg43zbE5N/

Gogh普通房间的备份与复原
https://www.bilibili.com/video/BV19Z4gzqEbL/