三角剖分自动生成dungeon算法

看到别人的算法实现感觉比较不错, 这里讲一下. 原作者的思路:https://www.reddit.com/r/gamedev/comments/1dlwc4/procedural_dungeon_generation_algorithm_explained/

具体步骤是:

1. 首先在一定范围内随机生成一定数目的矩形, 例如150个矩形(位置可以是某种分布)

2. 每一个矩形随机设置宽和高(也可以有某种分布. 这里最好是不是太正方形, 但也不要过于狭长. 可以是某种分布)

3.上一步产生的矩形会有很多重叠.接下来就是将这些矩形彼此距离拉开让他们不重叠, 但是排列紧凑

4. 判断这些矩形中那些是房间. 最简单的方法是矩形面积大于一定范围就认为是房间.

5. 将房间之间彼此连接. 这里使用Delaunay三角剖分方法, 以房间中心点位置为三角形顶点.这样所有房间会彼此连接, 并且不会有交叉线

6. 每个房间彼此连接会导致地图太乱了, 也没必要. 接下来是去除某些连接, 但同时还要保证房间直接是可达的.这里采用最小生成树方法, 去除多余的连接

7. 最小生成树很好, 但是又过于简单了, 会有点无聊, 因为他没有循环. 所以接下来就是适当加一些连接,.这些连接可以从Delaunay剖分中添加. 这样最终就会房间之间有"适当"的边连接

8. "连接"最终会转化成房间之间的"走廊". 有很多方法, 原文作者的做法是, 将每条连接变成一系列直线(是一系列, 所以可能形成L形状等).任何和这些直线相交的矩形都认为是走廊

9 . 最后通过设置图片等形成最终dungeon, 如下图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值