这是一个新手问题,但是在这里:
我的地图是2D网格,我想生成道路和河流。从起点到终点的路线一定不是瓷砖数量的最佳路线。相反,它们应该具有一定程度的随机性(回合)。
是否有针对这种情况的标准算法?
干杯!
更新:
这是在网格上使用权重并使用jgrapht库应用最短路径算法(Bellman-Ford)的结果。毕竟,我接受了多纳兹的回答。
这是一个新手问题,但是在这里:
我的地图是2D网格,我想生成道路和河流。从起点到终点的路线一定不是瓷砖数量的最佳路线。相反,它们应该具有一定程度的随机性(回合)。
是否有针对这种情况的标准算法?
干杯!
更新:
这是在网格上使用权重并使用jgrapht库应用最短路径算法(Bellman-Ford)的结果。毕竟,我接受了多纳兹的回答。
Answers:
您可以使用A *生成最佳路径,然后使用中点位移使其变形。
这将确保满足您的端点,并允许您在很大程度上控制随机性。例如,我不会像河流那样随机分配道路。无论正在建设的智能如何,道路通常都会尝试使其达到最佳状态。
请注意,如果地图上有障碍物,请在每次迭代后检查您是否没有越过这些障碍物。
另一种方法是在找到最佳路径后生成Perlin噪声,然后根据生成的噪声移动点。例如,使用以下噪音:
然后以红色显示最佳路径,以蓝色显示移动路径:
请注意,偏移的路径如何“稳定”到噪声的较暗区域。河流可能会流过山谷。
选择Perlin噪声的好处之一是,您可以将障碍因素考虑在内,并将其作为算法的一部分避免。