0

这个问题是在以下考虑之后出现的:考虑像 Travian 或 Tiberium 战争这样的 MMOG 的巨大世界地图。即使它们是 2D 地图,它们通常也有很多不同的身份,例如玩家所在的城镇、地形特征等。

这些地图是如何保存在数据库中的?每个图块是否都有一个条目,并且该位置的身份具有外键?还是反过来:每个身份都是定义其位置的两个位置属性(x,y)?

从更广泛的意义上讲,我的问题如下:在类似 mysql 的数据库上存储位置格子(方形瓷砖、六边形瓷砖等)的最有效方法是什么?在查询数据库以获取位置或位置列表时,进行此类存储的瓶颈(如果有)是什么?

4

1 回答 1

0

这完全取决于场景。例如,如果地图是稀疏的,将具有坐标的实体的位置存储在单行中可能是有意义的。如果拓扑是不规则的(即,任何给定的瓦片有任意多条路径),那么您可以将其存储为图形(即,单独的“节点”和“边”表,在一对多配置中) . 您可能决定对数据库中的项目使用连续(例如,真实)坐标,然后在应用程序中简单地将它们划分为逻辑“图块”。

同样,瓶颈将取决于应用程序。你是否经常需要问“我周围现在有什么?”,或者你只是问“我能从这里到那里吗?”。如果您有特定的用例,也许您可​​以添加更多细节,我们可以尝试提供更详细的答案。

与任何谈论性能的事情一样,假设情况下的随机猜测永远不能替代原型设计和测量。

于 2012-11-11T15:14:58.500 回答