随机地形生成
玩过 矮人要塞 Dwarf Fortress 的同学都会惊叹于它的随机地形生成系统。如果你对 ascii art 无感,那么可以 google 一下 stonesense 的图片。
矮人要塞是 3d 的地形系统。在游戏 wiki 上有介绍地形生成系统的参数细节 。
大体上是这样的: 首先有一张高度图(Elevation),决定了每个坐标的高度。然后给出一张降雨图 (Rainfall),来影响当地的植被和河流。通常降雨图是根据高度图(海岸和季风影响)计算出来的。这里有一篇文章简单描述了这个过程。
温度图(Temperature)一般根据纬度以及当地的海拔计算出来,也会影响当地的动植物。
地质的排水情况(Drainage)可以影响当地能否形成湖泊、湿地和河流。同样影响了当地的土质(进一步影响植被)。
另外还有,火山的分布情况(Volcanism),以及野生物分布图(Savagery) 会改变当地的矿产和动物分布。
其实这些参数图都是可以从外部导入游戏的(而不使用游戏里随机出来的)。有玩家制作了更好的地图生成工具 PerfectWorldDF。 玩一玩这个工具更能体会到这些参数是如何组合到一起的。
在 PerfectWorldDF 里,高度图是用一张湍流图加上 perlin noise 合成的。PerfectWorldDF 不开源,但是可以从另一个开源库 libnoise 中了解到类似的过程的算法。libnoise 的 Tutorials 图文并茂的诠释了随机地形的生成过程和算法。
ps. 关于地形生成,还可以看看这里:Artificial Terrain Generation。
最后简单提一下随机地下迷宫的生成算法。比较常用的是 Herringbone Wang Tiles。
写这篇东西主要是最近又玩了不少沙盒游戏。简单记录一下这几天的研究。
Comments
Posted by: Lichang | (5) November 13, 2018 08:49 PM
Posted by: Mutoo | (4) October 24, 2014 11:40 PM
Posted by: wzh | (3) September 29, 2014 05:11 PM
Posted by: Zack | (2) September 29, 2014 09:26 AM
Posted by: Ephay | (1) September 28, 2014 04:48 PM