代码之家  ›  专栏  ›  技术社区  ›  Serafina Brocious

最佳多人迷宫生成算法

  •  5
  • Serafina Brocious  · 技术社区  · 17 年前

    我正在研究一个简单的多人游戏,其中2-4个玩家被放置在迷宫中的不同入口点,需要达到一个目标点。一般来说,生成一个迷宫是很容易的,但在这种情况下,游戏的目标是在其他人之前达到目标,我不希望生成算法能让一个玩家比其他玩家更受欢迎。

    所以我在寻找一个迷宫生成算法,每个玩家从起点到目标的最佳路径不超过平均路径的10%。这样的话,球员们或多或少地处于一个平等的战场上。有人能想出这样的算法吗?

    (我有一个想法,但考虑得不好,似乎远远不够理想——我会把它作为答案发布。)

    5 回复  |  直到 17 年前
        1
  •  7
  •   Nick Johnson    17 年前

    FreeSpace的另一个解决方案是生成一个随机迷宫,然后为每个单元格分配一个值,该值表示到达迷宫末端的移动次数(如果决定从“结束”开始,则可以同时执行这两项操作)。然后选择一个距离(可能是在该距离处有n个点的最高距离?)把玩家放在有这个值的正方形上。

        2
  •  1
  •   Vinko Vrsalovic    17 年前

    先选择球员和球门的位置和等长的路径,然后按照规定的路径建立一个迷宫怎么样?如果路径不相交,我想这应该很容易实现。

        3
  •  1
  •   freespace    17 年前

    我将通过设置目标和每个玩家的入口点来实现这一点,然后为每个玩家生成与目标长度相同的路径。然后我开始沿着这些路径添加假分支,小心避免链接到其他玩家的路径,或者让分支连接回路径。所以基本上每个分支都是死胡同。

    这样,就可以保证路径的长度相似。但是,它不允许玩家相互交流。但是,您可以通过在分支之间创建链接,使任意路径上的分支入口点与目标的距离相似,从而将其放入。在这家分店,你可以分出更多的死胡同,以获得乐趣和利润。

        4
  •  0
  •   Serafina Brocious    17 年前

    我能想到的最简单的解决方法是随机生成一个像正常一样的迷宫,然后随机选择目标点和玩家起点。完成后,计算从每个起点到目标的最短路径。找到平均值并开始“平滑”(移除/移动障碍——不知道这将如何工作)显著高于它的路径,直到所有路径都在适当的边界内。此外,可能会采取明显低于平均水平的措施,并插入额外的屏障。

        5
  •  0
  •   EvilTeach    17 年前

    在中间的某个地方选择你的出口点

    从那里开始n条路径,每个循环向每个路径添加1条, 直到他们达到你想要的长度。

    有你的n个起点,它们都是相同的长度。

    添加额外的分支,直到迷宫满为止。

    推荐文章