随机二维拼贴地图生成算法

谁能告诉我一种生成岛屿结构或山地结构的方法,比如我的世界?

我只是在为随机形状生成寻找合适的理论,但它应该保持一个定义的基本模式。

喜欢:岛屿应该是圆形的,但在形状和尺度上变化(最小/最大宽度和高度)。

或:河流不应该是直线,它们应该有曲线和随机宽度。

甚至:生成某种森林,其中树木以一种用户仍然可以穿过森林的方式放置(我认为这是一个简单的森林,只是说树周围的一些块应该保持空白,如果代码试图放置最后一棵树周围的树木更多)

我可以用什么样的数学来做这些事情?

我会很高兴有一些教程或参考的链接。 我在网上搜索了几个小时,但我能找到的只是一些书籍,比如“游戏数学”或其他东西,但我的预算设定为零。

编辑:

首先,我很抱歉我的不好意思。

中学我想感谢你们所有人的答案。 这些都是很好的参考,我会花很多时间深入研究。

我强烈建议他查看Amit的游戏编程信息和其他博客文章。 他有一整套关于用河流,海岸线等创建逼真的地图的系列。

建设世界

虽然程序图生成可以应用于非网格世界,但它最常用于网格。 从单个时间点看,生成的游戏地图很少像手工制作的世界一样好。 然而,它们有三个优点:(1)如果有许多世界需要,每个世界的成本更低;(2)因为下一次穿越世界是不同的,所以更多的重播价值,以及(3)世界发展的潜力游戏进展。

  • 阿米特的世界地图生成器
  • 程序内容生成:生成地形,城市,建筑物
  • Unangband中的地下城生成
  • 生成具有锁定和键结构的游戏世界,以便某些房间需要来自其他房间的物体
  • 河流建设算法
  • 将河流添加到随机生成的地形
  • 用于生成地下城的原始Rogue算法
  • 11迷宫使用演示和代码生成算法
  • 使用噪音function生成洞穴,如Terraria和Minecraft中的洞穴
  • 房间形状不规则,算法简单
  • 可resize的室内空间区域
  • 用于在DungeonMaker中挖掘地下城的Tunneler算法
  • 随机地形生成技术指南
  • 程序内容生成的Wiki指南
  • 模拟大型虚拟世界

阿米特的多边形地图生成游戏 (列表中的第一项)是一篇非常令人印象深刻的文章,讲述了生成合理形状的海岸线,岛屿,河流,山脉等的逻辑。令人印象深刻的工作!

在随机生成的世界中“生长”河流的方法 [包括在上面的列表中]用于基于地图中的其他“瓦片”生成河流路径的相当简单的算法,例如它们的类型和高度。

当我做出胭脂时,我曾经为这个理论找到了一个很棒的网站。 看看 。

通常情况下,地图在逻辑上分为层数/叠加层,如“基础地形高度”,“水位”,“高地”,“树木”,“住房”等。

然后,对于每一层,运行不同类型的发电机。 通常使用分形,因为它们往往会产生有趣且难以预测的形状。 但是只使用了分形的一部分。 使用整个结构会立即暴露结构(在顶层分形上非常重复),观众会注意到它。 因此,生成的分形被扭曲/修改/过滤/切割,因此不会很明显。 例如,您可以使用一些简单的XY三角振荡器生成基本地形级别,然后将其与分形图像的一部分相加,限制为某些最小 – 最大值,并且您将获得具有明显丘陵和下降的不平坦地形..

对于所有其他图层,您通常无法“总结”,因为除了terrain之外的图层不是“高度”或“密度”,而是它们是0/1 – 将树放在这里或不放置树在这里? 但是,你再次执行它:你生成一些图像(可能再次分形),然后检查数字并设置一个阈值:当数字高于/低于X时,你放置/放置东西。 您可以另外过滤或分支它:例如,如果树会到达水下位置,在那里放置一条鱼或者根本不放置树。

我感到很累,你无法找到资源。 几年前谷歌搜索“地形生成算法”将返回许多命中!