创建简单的城市街道

时间:2015-02-07 14:14:55

标签: java random terrain

我正在尝试创建一个用于创建简单的2D城市道路系统的算法。它甚至不是程序性的,只是局限于一个小网格。

简单来说,我的意思是这样的: enter image description here

我曾想过从边缘拍摄随机长度的线条,但这并没有给我带来我想要的连线效果。

我也尝试随机放置节点并用L形线连接它们,但这也没有产生好的结果。

对资源,理论或示例代码的任何链接都将受到高度赞赏!

P.S它可以是任何语言。我只需要知道这背后的概念。

2 个答案:

答案 0 :(得分:1)

我会创建不同大小的随机块,然后将它们加在一起,在每个块之间留一个代表街道的空间。

详细说明我会制作一个二维数组。将第一个随机块放在一个角落中,并设置块所覆盖的所有字段,其中包含非街道磁贴的ID。用街道瓷砖环绕整个街区。然后将其放在第一个街区的街区旁边,重复下一个街区的过程。这样做直到阵列中的所有字段都是非街道图块或街道图块。

答案 1 :(得分:1)

生成地形时,例如山脉,分形结构经常使用,所以也许这里可以使用类似的想法。谷歌搜索“分形地形生成”以阅读更多内容。对于生成街道布局的情况,您可以尝试以下算法(这只是我的头脑,所以不能保证这实际上看起来不错):

  • 从矩形区域开始。
  • 在随机位置放置从一个边缘到另一个边缘的随机数量的小街道。随机性确保布局的变化。这个单一迭代的一个例子看起来就像你在问题中给出的例子,但更简单,我猜1-4行是合理的。
  • 您刚刚创建的街道将您的区域划分为矩形块。递归地将相同的除法算法应用于每个块,当然每次都选择不同的随机数。
  • 经过3或4次迭代后,您应该拥有一个相当复杂的街道网络。您可以在后续迭代中创建的街道稍微窄一些,这样您就可以在城市中拥有一些主要街道,一些主要街道和一些小街道。