我正在开发一个类似文明游戏的项目,需要一种好的算法来生成类似地球的世界地图。我已经尝试过几种方案,但都没有找到真正成功的。
其中一种选择是使用Perlin噪声生成高度图,并在某个水平面上添加水,以使大约30%的世界为陆地。虽然Perlin噪声(或类似的分形技术)通常用于地形,而且相当逼真,但它不能很好地控制结果大陆的数量、大小和位置,而这些信息对游戏玩法至关重要。
第二种选择是从随机位置的单个瓷砖开始(我正在使用网格瓦片),确定大陆的期望大小,每次添加一个与现有大陆水平或垂直相邻的瓷砖,直到达到所需大小。然后为其他大陆重复此过程。这种技术是《文明4》中使用的算法的一部分。问题在于,在放置了前几个大陆之后,可能会选择被其他大陆包围的起始位置,从而无法适应新大陆。此外,它倾向于产生距离过近的大陆,看起来更像是河流而不是大陆。
有没有人知道一种好的算法,可以在基于网格的地图上生成逼真的大陆,并控制它们的数量和相对大小?