【发布时间】:2015-11-12 06:41:25
【问题描述】:
我正在编写一个基于 Java 磁贴的游戏,我对在数据库中存储一个非常大的磁贴地图的最佳方式很感兴趣。 (整个地图被分成了块。)
我可以将瓦片数据存储为二维数组或字符串数组(对于每个块),例如:
["1100111223333",
"3130111213333",
"1300311233333",
.............................]
每个数字代表一个具体的瓷砖。
这种方法最简单,但是当我使用非常大的地图(例如 20000x20000 瓦片)时,会占用大量内存!
根据我的计算:如果数组是 20000x20000 并且每个 tile 使用 3 个字节 (我不确切知道字符串中的字符使用了多少空间)然后 20000*20000*3 = 1200000000 字节或 1.14GB!
我觉得空间太大了。
也许我还可以以以下形式存储数据:
["G18W3S23G12W3",
["W13G3S5G12W3",
.................................]
这意味着 18 格草然后 3 格水然后 2 格沙等等......
但我认为这是一个糟糕的方法。
也许我可以为每个块创建图像并从中获取图块,但是在数据库中使用图像非常困难,不是吗?
那么我怎样才能最有效地做到这一点呢?
P.S:我使用的是字符串数组,因为我不知道如何在 SQL 中创建二维数组(有可能吗?)
【问题讨论】:
-
你的世界是随机生成的吗?因为除了非常小的瓷砖,我真的很想知道如何设计一个 20k*20k 瓷砖的预建世界。如果它是程序生成的,那么还有一些更好的方法可以优化世界拯救。
-
它是程序生成的(柏林噪声)
标签: java sql arrays database tile