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

Ace*_*Ace 22 c# algorithm xna procedural-generation terrain

任何人都可以告诉我一种方法来生成像我的世界中的岛屿结构或山丘结构?

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

喜欢:岛屿应该是圆形的,但形状和规模各不相同(最小/最大宽度和高度).

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

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

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

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

编辑:

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

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

Ray*_*yes 33

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

建设世界

虽然程序图生成可以应用于非网格世界,但它最常用于网格.从单一时间点看,生成的游戏地图很少像手工制作的世界一样好.然而,他们有三个优点:(1)如果有要进行很多的世界占世界更低的成本,(2)更重玩的价值,因为通过世界下一次不同的是,和(3)世界潜力不断变化的,而游戏进展.

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

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

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