3

我一直在考虑制作一个带有伪无限运行时程序生成世界的自上而下的 2D 游戏。我读过几篇关于程序生成的文章,也许我误读或误解了它们,但我还没有遇到一篇解释如何将世界划分为块的文章(就像 Minecraft 显然那样)。

显然,我只需要生成玩家当前可以看到的世界的一部分。例如,如果我的游戏是基于图块的,我可以将世界划分为 n*n 个块。如果玩家在这样一个块的边界,我也会生成相邻的块。

我无法弄清楚我究竟如何采用程序世界生成算法并且一次只在一个块上使用它。例如,如果我有一个算法可以生成一个分布在许多块中的大结构(例如城堡、森林、河流),我该如何调整它以只生成一个块,然后再生成相邻的块?

如果我完全错过了明显的事情,我深表歉意。先感谢您!

4

1 回答 1

4

研究中点位移算法。请注意,沿一侧的点均基于角的起始值。您可以在不知道网格的其余部分的情况下计算它们。

我使用这种方法来生成地形。我需要每个“块”地形的边缘与相邻块对齐。使用中点位移算法的一种变体,我做到了,沿着块边缘的每个点的高度仅基于两个角处的值来计算。如果我需要添加随机性,我会使用来自两个角的数据播种一个随机数生成器。这样,任何两个相邻的块都可以独立生成,并且边缘肯定会匹配。

您可以将高度图的方法用于其他事情。除了高度,数据可以确定植被类型、人口密度等。而不是山丘和山谷匹配的高度图块,您可以拥有森林匹配的植被图。

对于任何类型的复杂世界,它肯定需要一些创造性的编程。

于 2011-10-14T15:14:51.287 回答