社交游戏地图瓷砖存储

时间:2012-07-24 14:26:46

标签: mongodb game-engine

我正在开发社交游戏的原型,我使用mongodb作为存储引擎。 我想知道在mongo集合中存储与瓷砖关联的地图图块(状态/类型等)是否是一种好方法。

map:{0:{type:grass,state:harvest,last_action_date:2012-01-12} 1:{...} .... 44:{...}}

也许平面文件应该更好?我不知道在像mongo这样的数据库中存储tile map的最佳实践。

这样我就可以获取一个请求,所有地图图块以及与图块相关联的所有状态...(每个图块都用一个允许确定图块的X / Y坐标的编号索引)< / p>

有人在mongodb中使用这种系统吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

Mongo中数据的结构应根据您需要如何编写,访问和/或修改该数据来确定。将整个地图放在单个文档中作为双子文档的数组(仅适用于小地图)也许是有意义的。也许将地图的每个图块存储为单个文档更有意义(这似乎更有可能)。

如果您将瓷砖存储为单独的文档,则为它们提供一个公共密钥,例如“map:'map1'”,以便您可以立即拉出整个地图。同时,将瓷砖存储为单独文档的功能是您不需要一次加载整个地图。而是给每个图块一个像“map1”这样的公共密钥(这样你就可以在同一个集合中存储多个图),包括一个x和y坐标(假设是2d空间),并在这三个字段上创建一个唯一的索引。通过这种方式,您可以随时快速有效地撤回您需要使用的磁贴,并从内存中删除当前计算或演示所不需要的磁贴。