我如何采用在2D空间中运行良好的算法并将其适应3D环境?

问题描述 投票:0回答:1

我喜欢technique Spelunky用于在游戏中生成关卡,我想将其适应3D空间,以便我可以用它来帮助我在3D空间中设计一些东西。我只是不确定如何解决这种问题。我觉得无法针对这种特定方法进行直接翻译,但我仍然希望拥有类似的感觉,并具有相同的曲折路径。

algorithm graph-algorithm
1个回答
0
投票

这是一个有趣的问题,因为当您开始将算法移入更高维度时会遇到一些挑战。

问题1:主要路径占用很少的容量

让我们从简单的数学观察开始。级别生成算法通过计算从世界的顶部到底部的随机路径来工作。在每一步中,该路径都可以向左,向右或向下移动,但绝不能退回到它的起点。假设这三个选项的可能性相同,则在特定级别上的第一步有2/3机会保持在同一级别,而每个后续步骤最多有1/2机会保持在同一级别。 (这是50%,忽略墙壁)。这意味着每个级别的预期图块数量最多为

1×(1/3)+(2/3)×(1 + 2)(因为有1/3的机会立即下移,否则(2/3)的机会获得一个房间,再加上房间数您从随机过程中得到,该过程在每一步中以50%的概率停止运行]

= 2.5

这很重要,因为这意味着如果您的世界是一个n×n的网格,那么您期望世界上每个级别只有约2.5个“已使用”的像元,而总共约2.5n个“已使用”的像元路径。假设世界为n×n,则意味着a>

2.5n / n 2

= 2.5 / n

世界细胞的分数将在主要路径上,因此n必须很小,以使不在主要路径上的世界分数不会太大。您链接的视频选择的n = 4,这意味着2.5 / 4 = 62.5%的世界将出现在主路径上。这是“我想取得进步”和“我想要我的附带任务”之间的良好融合。并且请记住,此数字是路径单元与辅助任务单元的数量的overestimate

现在,让我们在三个维度上进行此操作。与之前相同,我们从顶部的“切片”开始,然后在每一步随机向前,向后,向左,向右或向下移动。这使我们最多有4/5的机会保持在我们的水平上,然后从这一点开始,最多有3/4的机会保持在水平上。 (再次,这是一个高估。)再次进行数学运算会得出

1×1/5 +(4/5)×(1 + 4)

= 1/5 +(4/5)×5

= 4.2

因此,如果我们高估了,则平均每级将有4.2个单元位于主路径中,平均总路径长度为4.2n。在n×n×n的世界中,这意味着“路径上”站点到“路径外”站点的比例为

4.2n / n 3

= 4.2 / n 2

这意味着您的世界需要很小,以使主要路径不占整个空间的小部分。例如,选择n = 3意味着您将离开主要路径的世界不到50%,并且可以进行探索。选择n = 4可使您离开主要路径的世界的75%,并且给n = 5可使您超出主要路径的世界的80%。

所有这些都是说,马上就需要减小世界的大小,以使基于主路径的算法不会使世界大为空白。这不一定是一件坏事,但要牢记。

问题2:模板空间增加

您遇到的下一个问题是为房间配置建立“模板”库。如果您在2D空间中,则每个单元都有四个可能的入口和出口,并且这四个入口的任何子集(可能,除了一个根本没有入口的单元之外)都可能需要模板。那给你

2 4

-1 = 15

可能使用的进/出模板,这只是为了涵盖所有可能的选项。

在三个维度上,每个单元都有六个可能的入口和出口,所以有

2 6

-1 = 63

可能要考虑的进/出组合,因此您需要很多模板来解决这个问题。您可以通过利用旋转对称性来减少这种情况,但这是要记住的重要一点。

问题3:被卡住

您链接的视频提到2D生成算法的优点是,>

它创建了有趣且引人入胜的关卡,玩家无法轻易陷入其中。

在2D空间中,除少数例外,大多数单元将与主路径相邻。在3D空间中,除少数例外,大多数单元将与主路径相邻。此外,在2D空间中,如果迷路了,找回原路并不难-只能走很多路,而且可以一次看到整个世界。在3D中,迷失容易得多,这是因为与2D空间相比,您可以采取一些使您远离主要道路的步骤,并且如果迷路了,还应考虑更多回溯方法。 (此外,您可能无法一次在3D空间中看到整个世界。)

您可能不通过将要参观的地方填满整个3D空间来解决此问题。取而代之的是,只允许在距离主要路径一到两步的位置填充有趣的辅助任务,因为这样一来,玩家就不会在杂草中迷路。

总结

这三点表明,对于这种在3D中工作的方法,您可能需要执行以下操作。

    将世界保持在小于您自己认为的程度的大小,因为通行路径与通行路径的单元之比会变大。
  1. 或者,仅考虑填充主路径附近的单元,而使其他单元无法访问,以便玩家可以快速回溯到之前的位置。
  2. 准备创建大量模板,或者弄清楚如何使用旋转方式使模板适用于更多地方。
  3. 祝你好运!
© www.soinside.com 2019 - 2024. All rights reserved.