地牢生成方法

时间:2014-09-18 16:58:09

标签: java algorithm random generator

我一直在研究一个好的地下城算法,但我遇到了几个问题。我正在尝试在疯狂之神的领域和地下城爬虫之间进行混合。我的设计布局是走廊,彼此分开,房间里装满了怪物。到目前为止,我已经根据这个算法建立了一个地牢生成器:http://www.roguebasin.com/index.php?title=Dungeon-Building_Algorithm。我的第一个问题是,由于我的走廊不是1个宽度,所以它们看起来经常彼此隔离,这不是预期的效果。

You can see what I'm talking about here

我一直在考虑改变这一代,以便将它存储在一个数组列表中,以便它可以用它来查找每个段落应该如何连接,我也想过尝试不同的算法,但是我犹豫不决,因为不先尝试解决这个问题会感到浪费。任何建议都有帮助,因为我对此比较陌生!

注意:玩家必须有一个特殊的房间和一个Boss房间。就此而言,我不确定如何始终确保将这些房间连接在一起,也许是其他一切完成后的最后一代?

2 个答案:

答案 0 :(得分:0)

也许更简单(但不完整)的解决方案是存储每个"房间/特征"的一些元数据。你已经建成了。如果您选择走廊尽头的墙,因为某些新功能的展示位置不包括" corridor"作为一个有效的功能。

它不会解决每个地图的不完整性,如果你有两种不同类型的走廊(更广泛和更窄的走廊),你将永远不会看到一个更广泛或更窄的走廊,但它是一个简单的修复和相当快速的修复。

当然有更好的解决方案,但我需要有关算法的更多细节。对于我在链接中看到的内容,您发送的内容是选择墙砖作为展示位置并在其后面加上一个功能。也许在决定放置时你不需要只看墙砖随机选择,而是围绕它的整个连续墙:

  1. 选择随机要素(通过示例构建走廊)
  2. 在某处选择随机墙砖
  3. 从每个功能中,您都会知道它的开口有多大。
  4. 比较是否有足够的墙砖向下(或右侧)整齐地放置其开口,如果没有,请选择原始选举的墙上/右侧,然后重试。您可以点击无法执行此操作的方案,您可以从第1点开始,然后重试。
  5. 这只是我的头脑,当然还有其他解决方案。但它可能足以让你开始。

答案 1 :(得分:0)

我想过使用伪随机数生成器,例如mersenne twister,来搜索随机方向,然后从中心点创建房间。如果没有碰撞,您可以在那里创建一个房间,然后随机选择另一个方向。当你建立在你的中心点上时,结果不会是直接连接。

相关问题