5

我目前正在开发一款模拟操作系统的游戏。因此我需要一个游戏内文件系统。目前,我正在使用 zziplib 能够从 zip 存档中加载文件,但是这是一个只读的“文件系统”,我需要一种方法来编写新文件并在之后对其进行序列化(并在下一次执行期间对其进行反序列化)!是否有任何有用的库可供使用,或者我应该根据任何库为自己编写一个?

4

3 回答 3

6

这可能是使用简单数据库作为文件系统的地方之一。

使用类似sqlite存储数据的东西(使用路径作为键,blob 作为数据,或类似的东西)。

这样做的好处之一是您实际上不必担心存储,并且您可以使用现有的数据库工具“离线”查看/编辑数据,而不必自己编写。(此外,您还可以在其中存储其他游戏信息。)

于 2011-06-13T14:05:11.867 回答
5

您可以查看PicoStorageC++ 中的嵌入式文件系统。我也没有直接使用过,但我都看过它们。Embedded File System 确实有一个依赖项,它可能是一个阻碍——它需要链接 Qt。也许可以删除它,但它主要将它用于 QString 和 QFile(并且没有理由需要 UI)。

9 年后更新:如评论所述,上述链接不再有效。PicoStorage的这个替代链接可能是可行的(我可以从那里下载源代码,但我没有努力验证它)但我找不到 EFS 的现代等效项。

于 2011-06-13T14:27:20.607 回答
2

我的六便士在上面的答案之上。SolFS(现为 CBFS Storage)和CodebaseFS提供虚拟文件系统能力;两者都有一个用于 C/C++ 的 API,并且似乎完全符合您的要求。不过……我还不清楚你的任务规模。您的游戏是否需要管理数十个、数百个、zounds... 的文件?这些文件的大小是多少?等等。在寻找合适的解决方案之前,我会提出这些问题。

于 2011-06-13T15:06:59.230 回答