如何将运行时程序生成的世界划分为若干块



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

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

我不能弄清楚的是,我如何准确地采用程序世界生成算法,一次只在一个块上使用它。例如,如果我有一个算法,生成一个大的结构(如城堡,森林,河流),将分布在许多块,我如何调整它,只生成一个块,然后相邻的块?

如果我完全错过了一些明显的东西,我道歉。提前感谢!

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

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

你可以在其他事情上使用高度映射的方法。这些数据可以确定植被类型、人口密度等,而不是高度。比起小山和山谷匹配的大块高度图,你可以有一个森林匹配的植被图。

任何复杂的世界都需要一些创造性的编程

最新更新