Python - 向用户显示游戏保存文件的推荐方式

Posted

技术标签:

【中文标题】Python - 向用户显示游戏保存文件的推荐方式【英文标题】:Python - Recommended way to show game save files to user 【发布时间】:2019-08-11 20:08:42 【问题描述】:

在网上搜索,我发现了很多关于将程序数据保存/加载到文件中/从文件中加载的教程。但是,我已经知道这一点(我正在使用 Python pickle 序列化/反序列化对象)。

我的问题是如何向用户显示文件?特别是如果有多个文件,我想显示每个保存文件的摘要信息,供用户选择要加载的文件。

我正在考虑的一些选项如下:

    加载所有存档,显示关键信息。

    这是最简单的解决方案,但我一直在想一定有更好的方法吗?

    将保存文件的元数据存储在另一个文件中。

    读取此文件以显示每个保存文件的关键信息。

    我的问题是我需要担心这个元文件和实际保存文件之间的一致性/完整性吗?例如,如果保存操作成功更新了游戏保存文件,但游戏在更新元文件之前崩溃,则数据已损坏。

    将元数据放在文件名中

    当元数据只有几个字段时可能会起作用。但这还是个好主意吗?

    将元数据作为头信息放入文件中

    然后,只读取要显示的标题部分。但是,我不知道如何使用pickle 实现这一点

我并没有制作过大的游戏,但我仍然希望实施最佳实践方法。所以我正在寻找一个简单愚蠢的解决方案,而不是一些过于复杂的解决方案,但仍然希望更清洁/不像上面的选项 1 那样愚蠢。

【问题讨论】:

假设有两个或三个以上的文件(其中 1. 就足够了),一种方法是将元数据添加到单个文件并使用其他文件的元数据创建一个缓存文件。缓存可能包含其他信息,例如修改日期和其他文件的大小以确保一致性,或者可以在每次创建/更新/删除常规文件之前将其删除。然后在需要时重新创建缓存文件。 嗯,你的想法是正确的。所有这些都是有效的选项,虽然我不喜欢#3。 #4 将是最好的选择,我想。在阅读腌制信息之前,您只需要弄清楚是否可以跳过标题。我的猜测是这是可能的。 #3可以变得非常安全。您可以将新文件连同索引副本一起写入临时文件。然后,一旦它们被写入,重命名它们以将它们移动到位。如果其中一个重命名失败,则选择执行重命名的最佳顺序以保持一致性,这不太可能。 我喜欢 Michaels 的想法,即让索引文件可以从单个游戏保存文件中重建。 【参考方案1】:

感谢Michael Butscher 和Steve 的建议!我认为这很适合我的情况。

    每个保存文件都会附带一个元数据文件,例如save023.datsave023.meta

    为确保pair之间的一致性,首先对临时文件save023.dat.temp进行写操作@

    成功后,更新元文件save023.meta

    最后,在步骤 3 成功后,将 save023.dat.temp 重命名为 save023.dat

    在任何情况下,如果元文件丢失,或者如果程序检测到存在.temp 文件,它将重新生成.meta 文件(然后重命名.temp 文件,如果适用)

【讨论】:

以上是关于Python - 向用户显示游戏保存文件的推荐方式的主要内容,如果未能解决你的问题,请参考以下文章

书籍 | 推荐系统将向何处去?

书籍 | 推荐系统将向何处去?

在 python 中向用户显示消息

在安全且独立于平台的 Unity 中保存游戏数据的最佳方式

保存游戏状态的最佳方法是啥?

保存照片和视频到相册显示