在地图上以程序生成的2D弯曲道路


9

我一直在尝试使用算法为正在开发的游戏自动生成路线图。

我使用“ Kingdom Rush ”游戏作为参考点,因为它们具有一些精美的地图。

游戏“ Kingdom Rush”中的路线图示例

我是程序性内容生成的新手,并且想知道这里是否有人有任何指针。我已经尝试过生成随机的道路拓扑,例如,一些入口/源节点,一些内部节点(叉和合并)以及一些出口汇点节点,然后使用图形布局算法根据此信息创建实际的道路图。

这是一个使用Fruchterman-Reingold算法进行道路布局的示例:

PCG生成的地图1

蓝色图形使用一些随机生成的Bézier控制点来使边缘看起来不太平直。

这是使用相同算法但使用不同随机数生成的另一个示例:

PCG生成的地图2

麻烦的是,大多数结果最终看起来都非常相似,而且我不确定可以添加哪些规则来改善过程生成地图的可控制性和多样性。

任何建议表示赞赏。


很棒的问题。参考图像对您的帮助很大,包括到目前为止您尝试过的东西。您能否详细说明“可控制性”的含义?您可以控制很多事情;一些例子会有所帮助。
皮卡列克

嗨!感谢您的回复。通过可控性,我的意思是可以编写某些规则(例如,将相交点的距离设置成彼此之间的距离不超过一定距离;不允许角度大于x度),并且生成算法是否遵守这些约束?此外,这些规则不应妨碍算法生成各种有趣地图的能力。不过,您的鼓励令人振奋。我开始对使它生效的细节感到沮丧!
SixTwoOne

Answers:


2

您的示例道路的交叉点之间的路段上有曲线,而生成的道路没有。您是否尝试过在道路上添加更多“冗余”控制点?

将循环数作为生成参数怎么样?同样,“弯曲度”(冗余控制点的数量)出口的数量将是另一个。

我认为您也可以在道路交叉口设置双控制点来结束道路。那应该使交叉点看起来更好。


我认为中间控制点建议是好的!我目前使用的图形布局算法仅产生直线,但是我可以在其他两个节点之间的某个地方放置“弯曲的弯曲”节点,并使用试探法将控制点放置在附近,使其看起来很漂亮。我当然需要更多地研究这个问题,因为它也与创建外观更好的交叉点有关。
SixTwoOne '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.