mcthesw / game-save-manager

一个简单的游戏存档管理器
https://help.sworld.club
GNU Affero General Public License v3.0
573 stars 20 forks source link

[功能/FEATURE] 请求加入云存档 #61

Closed aoeng closed 7 months ago

aoeng commented 8 months ago

云存档对于广大学习版游戏玩家才是刚需

mcthesw commented 8 months ago

云存档是个重要功能,近期一直在想怎么实现,目前只有初步想法

总之云存档估计最后会实现,但是实现的具体细节需要很多讨论,需要一段时间,要是你有具体的想法也欢迎分享

aoeng commented 8 months ago

你想复杂了,steam怎么做的云存档你就怎么做,额外的导入导出仅是锦上添花而已 关于路径问题,游戏方把存档放到哪个路径一般是每个游戏是固定的,可能每个系统不同路径,但是相同的系统路径都是相同的,我说的系统是windows和linux

aoeng commented 8 months ago

我刚在搜索中发现,其实也可以用win的OneDrive,同样可以做到备份的功能

mcthesw commented 8 months ago

如果是规范开发的游戏还好说,在同一系统下一般只用置换用户名(关于如何使用%APPDATA%这样的路径我还在尝试中),但是这个策略只适用于部分游戏(之前在issue中也讨论过) 还有一些游戏,存档位置存放在游戏目录下,这样就可能会因为位置改变而发生改变 所以我觉得,要支持两种方式的话,都必须区分机器和让用户手动选择存档位置

现阶段确实可以用OneDrive或者坚果云这类软件来实现一个简易的云同步

aoeng commented 8 months ago

嗯,steam可能在上传游戏的时候已经设置好存档存放位置,我们可以类似备份一样让用户手动下载同步到本地的存档目录

mcthesw commented 8 months ago

是的,我觉得这个功能还可以结合 #8 来做,如果我能直接识别游戏存档文件,那么也可以省去用户操作

aoeng commented 8 months ago

你甚至可以和破解的网站合作 类似 ,直接做个学习版游戏平台带上备份功能,那直接无敌了,就是可能风险比较大

aoeng commented 8 months ago

哈哈,本来想买个自行车,结果买了个法拉利???哈哈哈

mcthesw commented 8 months ago

这种有风险的还是尽量避免,最多通过插件支持,不过插件系统的实现真的只是在早期构想了,短期内肯定做不出来

aoeng commented 8 months ago

关于云存档肯定需要后端服务器和存储库支持的,这个还是有很大成本的

mcthesw commented 8 months ago

云存档的文件存储目前计划用OpenDAL实现,这样需要要求用户自己使用坚果云、OneDrive这类支持WebDav的服务,或者白嫖各大云厂商免费提供的S3、OSS存储服务。我的想法是我尽量不向用户提供任何在线服务,避免产生太多成本或造成隐私问题

AsterNighT commented 8 months ago

存档,或者更广义地来说,需要同步的文件,也许可以被分成两类。

  1. 存储于某个相对于可执行文件的目录的文件
  2. 存储于某个绝对路径的文件

其实2也不都是彻底的绝对,也可以分成真的绝对(例如windows下的 C:\ProgramData,某些游戏会把一些配置文件存在这里),相对用户目录的绝对(也就是你所说的%APPDATA%,或者是家目录)。

用户在恢复之前当然必须先添加游戏。如果把游戏的可执行文件改成必须的,那么第一种文件的路径问题就迎刃而解了。第二种文件其实本身就不需要额外的配置,所以这个路径应该不是什么大问题。不知道有没有什么反例需要处理。

mcthesw commented 8 months ago

现在存档管理器一律是按照绝对路径处理的,按照“相对于可执行文件的目录的文件”确实可以解决这类问题,不过这需要对存档管理器的路径存储方式做一些修改 如果按照这样做,应该可以解决绝大多数场景应用了

mcthesw commented 7 months ago

66 增加了相关讨论,在细节敲定后就可以着手制作

mcthesw commented 7 months ago

已经实现WebDav云存档功能,充分测试后就可以发布