Map 无限世界发生器

Map 无限世界发生器,map,2d,chunks,Map,2d,Chunks,我想制作一个无限的二维世界生成器。我想我会制作一个代表世界某一部分的chunk类。我只是不知道在哪里存储块,以及如何生成新块 我想我可以将块存储在向量中,并记住它们的X,Y。对于玩家,我制作了3x3数组(他站在中间的位置),带有指向块的指针以形成向量。例如,当他向上移动时,我将上中行向下移动,并从向量中加载新的块。我不知道这是不是个好主意,这是我想到的第一件事 无论如何,我不知道如何生成块,所以它们彼此匹配(aso,水附近没有沙漠)。即使生成恒定维度的地图对我来说也是相当困难的(我真的需要无限世

我想制作一个无限的二维世界生成器。我想我会制作一个代表世界某一部分的chunk类。我只是不知道在哪里存储块,以及如何生成新块

我想我可以将块存储在向量中,并记住它们的X,Y。对于玩家,我制作了3x3数组(他站在中间的位置),带有指向块的指针以形成向量。例如,当他向上移动时,我将上中行向下移动,并从向量中加载新的块。我不知道这是不是个好主意,这是我想到的第一件事

无论如何,我不知道如何生成块,所以它们彼此匹配(aso,水附近没有沙漠)。即使生成恒定维度的地图对我来说也是相当困难的(我真的需要无限世界)


不久前,我用洪水法生成了恒定维度的世界,所以我在开始时用草填充了整个地图,然后随机画了一些水、树和其他的点,尽管我认为这在无限世界的情况下是不可用的。

这可能不是正确的方法,但可能会给你一些想法。 您可以将一个3x3 2D块数组,甚至是一个5x5块数组存储到内存中。根据玩家的位置更新这些区块以及加载哪些区块。世界的其他部分可以存储在一个文件中,该文件可以读取和写入。当玩家在未启动的区块或空区块的2-3区块内移动时,使用您想要的任何方法生成该区块

这其中棘手的部分是,如果你有河流或水体、森林或任何其他类型的景观跨越多个区块,那么在生成新区块时,你必须有一个单独的算法来处理。每次生成时可能需要测量两条线之间的交点。由陆地和水、平原和森林的交点创建的线,以及表示块体边缘的线。一旦你有了那一点,你可能就可以计算出那一点的哪一边需要土地/水,然后从那里随机生成它


这就是我在Minecraft中看到的情况。

这可能不是正确的方法,但可能会给你一些想法。 您可以将一个3x3 2D块数组,甚至是一个5x5块数组存储到内存中。根据玩家的位置更新这些区块以及加载哪些区块。世界的其他部分可以存储在一个文件中,该文件可以读取和写入。当玩家在未启动的区块或空区块的2-3区块内移动时,使用您想要的任何方法生成该区块

这其中棘手的部分是,如果你有河流或水体、森林或任何其他类型的景观跨越多个区块,那么在生成新区块时,你必须有一个单独的算法来处理。每次生成时可能需要测量两条线之间的交点。由陆地和水、平原和森林的交点创建的线,以及表示块体边缘的线。一旦你有了那一点,你可能就可以计算出那一点的哪一边需要土地/水,然后从那里随机生成它


不管怎样,这就是我在Minecraft中看到的情况。

这些问题已经在康威生活的实施中得到了解决

在hashlife算法和数据结构的讨论中描述了一种实现无界世界并只处理彼此不同的部分的方法。它还处理块内的高性能和跨块的良好性能。相同的块由多个块可以指向的一个描述表示


这些问题已经在康威生活的实施中得到了解决

在hashlife算法和数据结构的讨论中描述了一种实现无界世界并只处理彼此不同的部分的方法。它还处理块内的高性能和跨块的良好性能。相同的块由多个块可以指向的一个描述表示


主要问题是我无法跨以下区域生成横向视图:(任何算法如何做到这一点?为每个区块生成横向视图,然后在之后或生成过程中进行匹配。我不知道有任何算法可以为您实现这一点。主要问题是我无法跨以下区域生成横向视图:(有什么算法可以做到这一点吗?每个区块生成一个景观,然后在之后或生成过程中进行匹配。我不知道有什么算法可以帮你做到这一点。好吧,但我仍然不知道如何存储和生成区块,这就是我的意思。好吧,但我仍然不知道如何存储和生成区块,这就是我的想法伊恩。