【问题标题】:How to optimize my custom mapformat (Java)如何优化我的自定义地图格式(Java)
【发布时间】:2012-01-29 16:35:05
【问题描述】:

我正在创建一个 3D 游戏,其中有一个使用高度图的大型开放世界(200×200 公里)。我将高度图划分为 200×200 = 40,000 个 1000×1000 米的区域,然后再次划分为 20×20 = 400 个 50×50 米的块。高度图是从 PNG 文件生成的。

我正在考虑存储地形的方法。我尝试了一些方法,但它会生成每个区域大约 16MB 的文件,这对于整个世界(40,000 个区域)来说是 640GB。

可以在此处找到区域文件的示例: http://updo.nl/file/e10ce974.umap

我的问题:我怎样才能在区域文件中紧凑地存储这么多信息并在以后读取它们?

【问题讨论】:

    标签: java file optimization terrain heightmap


    【解决方案1】:

    如果每个坐标的值通常不同并且方式不同的方式不可预测,则高度图是一种有效的信息存储方法。换句话说,当您处理随机数据时,高度图是有效的。如果您的数据有规律,通常会有更好的解决方案。

    考虑y = x 描述的行。您可以使用分辨率为 1 的高度图来描述这个坡度,类似于 [(1, 1), (2, 2), (3, 3), ...]。如果您的高度图具有高分辨率,则该列表将非常大。或者,您可以将该斜率描述为 穿过点 (1, 1) 和 (2, 2) 的线。在这种情况下,通过特定点/顶点定义线/体积会更有效。

    对于类似地形的数据,由于它通常是非随机的,我建议通过polygonal meshes 使用第二种方法。你可能会发现像JMesh 这样的库。

    对于进一步阅读,here 是与此主题相关的游戏开发堆栈交换的一个很好的答案(坦率地说,比我的要好)。

    【讨论】:

    • 感谢您的回答!我使用预定义的高度图,是的,所以我不能使用随机生成器或以任何方式描述我的高度图。我计划在游戏中使用物理引擎,其中内置了高度图,因此很容易为更大的地形设置。
    【解决方案2】:
    猜你喜欢
    • 2015-07-28
    • 2013-04-25
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2016-12-14
    • 1970-01-01
    相关资源
    最近更新 更多