在 Minecraft 游戏中从硬盘存储和检索块的最有效方法

Most efficient way to store and retrieve chunks from harddisk in a Minecraft game

我的场景:一个理论上无限世界的类似 Minecraft 的游戏。块需要在游戏运行时实时存储和从文件系统中检索。

一个块的大小从几个字节到理论最大值 65kb。

当玩家修改块时,块的大小可能会改变,所以我不能简单地覆盖它在我的关卡文件中的旧位置,我如何才能有效地管理硬盘上的此类数据。

是否为此使用数据库更好,比如 SqLite?

在游戏的 v1 中,您可以作弊...在 NTFS 文件夹中,您最多可以有 2^32 - 1 files。一个块 == 一个文件。优点是它非常容易实现,速度足够快,而且你不必调试未知的库。 FileStream API 是已知量。

然后在游戏的 v2 中,您可以使用 SqLite 或 http://nfilestorage.codeplex.com or http://filedb.codeplex.com or http://litedb.org 之类的东西或任何其他 nosql 数据库。在 v2 中,您可以查看 "bettering" 您的游戏。