gpt4 book ai didi

java - 如何存储巨大的瓦片 map ?

转载 作者:搜寻专家 更新时间:2023-10-30 23:08:00 26 4
gpt4 key购买 nike

我正在编写一个基于 Java 瓦片的游戏,我对在数据库中存储非常大的瓦片 map 的最佳方式很感兴趣。 (整个 map 被分成 block 。)

我可以将图 block 数据存储为二维数组或字符串数​​组(针对每个 block ),例如:

["1100111223333",
"3130111213333",
"1300311233333",
.............................]

其中每个数字代表一 block 混凝土砖。

这种方法是最简单的,但是当我使用非常大的 map (例如 20000x20000 瓦片)时,它会占用大量内存!

根据我的计算:如果数组是 20000x20000 并且每个图 block 使用 3 个字节(我不知道字符串中一个字符到底使用了多少空间)那么 20000*20000*3 = 1200000000 字节或 1.14GB!

我认为那太多了。

也许我还可以以以下形式存储数据:

["G18W3S23G12W3",
["W13G3S5G12W3",
.................................]

这意味着 18 block 草,然后 3 block 水,然后 2 block 沙,依此类推...

但我认为这是一个糟糕的方法。

也许我可以为每个 block 创建图像并从中获取图 block ,但是在数据库中使用图像非常困难,不是吗?

那么我怎样才能最有效地做到这一点?

附注:我使用了一个字符串数组,因为我不知道如何在 SQL 中创建一个二维数组(这可能吗?)

最佳答案

因为它是程序生成的,所以你有一个很好的方法来优化你的保存文件。你可以做我的世界版本:保存你的种子,这样你就不必保存整个 map ,然后保存在生成​​ map 的每个 block 后修改的图 block 。

然后当您加载时,根据您的种子生成所需的 block ,并应用修改。

关于java - 如何存储巨大的瓦片 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23994265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com