6-1 地图单元与河流

  第6章是目前为止篇幅最长的一个章节,难度也相对之前的章节会大很多。在第6章中。我没事用的三角剖分方法会更为复杂,而且还要使用着色器代码实现一些简单的视觉效果。在之前的章节中,我们为了丰富地图的细节,加入了高度属性,又对地图单元之间的连接处进行了阶梯化,还加入了噪点扰动。但是这些细节并不够丰富,在接下来的章节中,我们将添加地貌的另一个基本要素:河流。

  在六边形地图中添加河流有三种方法:
  第一种方法是让河流从地图单元中穿过,即从一个地图单元流向另一个地图单元,这是《无尽传说》中的做法。
  第二种方法是让河流在地图单元之间流过,沿着地图单元的边缘到另一个地图单元的边缘,《文明5》中是这么做的。
  第三种方法是不使用额外的河流结构特性,而是直接用特殊的地图单元表示水体,《奇迹时代3》中是这么做的。
  第而在我们的项目中,由于地图单元的边缘连接已经用阶梯化或陡峭的方式特殊处理过,没有留给河流的空间,所以就采用第一种方法,让河流从一个单元格流向另一个单元格。这意味着每个单元格要么就是没有河流经过,要么河流穿过这个单元格,要么这个单元格是河流的起点或者终点。而在有河流穿过的单元格中,要么河流是笔直穿过,要么是一步锐角转弯,要么是两步钝角转弯。如下图所示:

  结合项目中地图单元的特性,分析后得出了一些有规律的信息。在接下来的章节中,我们首先通过代码设置有河流经过的地图单元中河流的方向。