1

嘿,我正在尝试创建一个可以替换我当前存储系统的存储系统。

我需要能够以与使用 .Net 紧凑框架的 WP7、XBOX 和 PC 兼容的方式每秒相当快地保存 10 个文件,几乎没有垃圾创建。

最初在我正在制作的游戏中,我只是将文件保存到磁盘上,因为世界不同地区和其中的东西有 100 个文件(我已经尽我所能将文件折叠在一起),在后台线程上这些文件批量处理,然后分批写入,同时流式传输新文件。

虽然这对电脑来说很好,但在手机上人们会经常退出游戏或关闭手机,因此实际上只会保存 X of Z 文件,从而导致未知的保存文件状态。更糟糕的是,在 Xbox 上保存单个文件并将其提交到磁盘需要长达 1 秒的时间,并且还会产生大量垃圾(每分钟 > 30 mb),这会导致 Xbox 每次暂停 1-3 秒1-3 秒,因为它的“非常糟糕”的垃圾收集器每分配 1mb 的内存就运行一次。游戏中的其他所有内容都不会产生垃圾,并且会被池化和缓存,所以这也是一个问题。

因此,我随后迁移到使用单个文件使用 zip 系统存储所有内容。这可行,但很少会损坏 zip 文件,因为我以一种从未设计过的方式使用它...基本上我在游戏开始时加载文件,然后在它位于内存流中时保存到它并从中保存,然后根据播放器进度每 3-7 分钟我将单个文件转储到磁盘。

所以基本上 zip 文件(我已经尝试了 2 种实现)没有做我需要的。有谁知道是否还有其他东西可以满足我的需要,或者对我应该如何构建自己的想法有任何想法?

tldr;

所以简而言之,我需要一个系统

  • 单个文件
  • 可以存在于内存中,只需定期提交到本地磁盘
  • 几乎不产生垃圾
  • .Net Compact 框架兼容(或与源代码,所以我可以这样做)
  • 文件/结构编辑就地完成
  • 可靠第一,性能第二
  • 无需压缩或加密
  • 不需要能够只加载文件的一小部分
  • 可能是一种数据库/不必模仿文件结构

类似于这个问题在这里

有人有想法么?

4

0 回答 0