今年1月份,我分享了我程序化山脉生成的原型。过去几个月,我给出了侧面的图形,实行了水的添加。但是,水图案的切割比想象的要复杂,这让我头疼。但是我觉得我现在已经解决了这个问题。

实际上,水的生成比起山脉生成要简单得多。我将生成流水程序管道分成几个阶段:

  1. 最初,我生成海岸线(简单来说就是一个二维点集)。

  2. 然后,我计算出海岸内每个顶点的深度值。

  3. 最后,我生成需要的侧部脸面。

除了生成自身的流水图案,还需要生成流水的侧部脸面。

我大概花了很多时间在海岸生成上。我想,它只是某个平面上的点集,但是我并不容易得到好结果。我用不同的方法试了约5次。主要的问题是,两排相邻的图案之间或是不成象形。

最后,我转到混合方法:我定义了固定连接点,手工编写了一些海岸边类型模板,可以根据定义的连接点来改变模板的形式。这让我的控制权提高了。变化是从一系列模板中随机选择一个。

这种决定也是与Dorfromantik处理水体相比有关。但是他们似乎是已经使用了3D变形的方法,而只定义了2D形状和它们的生成。

下一步,我考虑松绑约束——例如允许连接点有少量的随机偏差,并用线性插值法连接海岸线来获得更平滑的过渡效果。

我意识到这个帖子可能会比较技术,这样我会给技术方面的详细信息就容易些,如果您有兴趣,可以在评论中让我知道。也许您会想要看到我的更多详细解说和截图(一张截图和一步一步的过程通常比单纯的文字更容易理解)。

另外,最近,我们组了一个团队,我们将转换这个项目成为一个完整的游戏。我们正在花心思把它打造成实体,而我们工作是有节奏的。

这个名字是Hexscapes,让我们看看它会发展成什么形式。