在程序上生成地下城的大多数尝试我偶然发现了空间区域,这些区域将成为房间并将它们连接起来,这些区域将是走廊和走廊,但是如果您拥有各种尺寸的可能房间的集合,并希望生成一个地牢,那么使用这些特定的房间,没有这些走廊和连接?为了回答这个问题,我发现了this particular video on the topic of generating levels in Path of Exile(约5:20 - ~7:20关于我所指的地下城部分),这些问题留下了关于如何在技术上实现所述算法的问题。
总的来说,我理解这个想法,但我正在努力弄清楚如何将其转化为代码(最有效),因此这里有几个问题:
1x1
个房间组成,并在图表中任意合并节点以形成有效维度的房间(有效=有一个可以在以后插入的预定义房间)。或者更好的方法是使用二维数组和特定尺寸的试验室,然后用它来构建图形?请注意,该集合超出了关卡中的切片数量,并且不旨在预先定义关卡中的房间数量。切片的数量应该是任意的,房间随机放入切片中。
步骤1。将一个开始和结束房间任意放入关卡中(可能是给定的最小距离,以防止退化布局):
第2步。将整个关卡切割成任意数量的区域,这些区域与系列中预定义房间的大小完全相同:
第3步。为每个房间分配一个随机加权/距离,在此示例中用颜色表示:
第4步。找到从开始到结束获取非线性路径的最短路径:
第5步。您的基本布局只有一条成功路径,您可以在其中放置必须与相应门连接的相应尺寸的随机房间:
第6步。最后,添加一些分支室: