2

我目前正在开发一个基于文本的僵尸 RPG 模拟器,其中将有一个随机生成的城市可供探索和做事。我原本打算将城市保存在 2D 数组中,但后来我意识到,如果我这样做,我的数组将占用千兆字节的数据来存储数字。在做了一些研究之后,我发现了一种叫做 perlin 噪声的东西,这是一种基于单个种子生成几乎无限且随机的地形的算法,我很好奇我是否可以对我的城市做类似的事情。有什么想法吗?


我意识到我没有给你们留下太多关于我需要什么的信息。我想要生成的城市应该由坐标网格表示,其中每个坐标在地图上绘制一个单独的建筑物。然而,建筑物应该以特定的方式布置。如果是金融区,那么写字楼应该会更频繁地出现。如果是住宅区,则应更频繁地生成公寓楼和自助洗衣店等建筑物。如果是公园,则不应生成建筑物。

此外,一些建筑物应该比其他建筑物占用更多的坐标,例如商场等。

还应该生成穿过城市的高速公路,但如果代码过于复杂,这并不重要,因为这是一个简单的学习项目。

4

2 回答 2

1

您可以像本教程中那样使用随机点和放松:http ://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/ 。它还使用 delaunay 三角剖分和双 voronoi 图和噪声边缘。

于 2013-10-13T18:04:02.427 回答
1

Perlin 噪声主要通过组合几个“图像”(例如,参见此处:http ://devmag.org.za/2009/04/25/perlin-noise/ )起作用,其中一些具有较低的频率,而另一些具有较高的频率。因此,您可以做的是使用较低频率的某个坐标处的值来确定您所在城市的区域类型。例如,最低频率的图像像素小于 0.5,第二低的像素也小于 0.5,您可以声明您位于城市的金融区。然后更高的频率(变化更多)确定建筑物或物体(树,...)的类型。

但是,您将不得不尝试使用参数以使其非常逼真。

我知道这是一个基本的答案,但请随时对此程序发表评论。

道路可能无法使用 Perlin 噪声本身生成,但是例如通过进行一些后处理的算法(例如,您在金融区,您可以编写一个规则,如果某个建筑物的左侧有建筑物瓷砖和右侧瓷砖本身没有建筑物,您应该引入一条道路。

于 2013-10-13T17:46:20.843 回答