在 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" 您的游戏。
我的场景:一个理论上无限世界的类似 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" 您的游戏。