如何为多人游戏随机创建一个公平的迷宫?

时间:2018-09-10 15:40:49

标签: algorithm graph language-agnostic maze

[最后更新了我的问题] 我正在创建一个发生在迷宫中的2D多人RTS游戏。我使用Growing Tree algorithm来随机生成迷宫。我认为只要每个团队解决迷宫的最短路径等于另一个团队,迷宫对于每个团队都是 fair 。我通过在游戏中制定一条规则来确保这一点,该规则规定每个团队的起点是另一个团队的终点,反之亦然,因此,最短的路径对于两个团队来说总是相等的。但实际上,我注意到了其他地方。

当我尝试使用此solution(特别是@ tobias-k答案)将最终的完美迷宫制作成不完美的迷宫时,这个问题突然出现。

  

如果您已经有一个迷宫,其中一个迷宫以单一路径形式进入目标,请使用以下变体:

     
      
  • 从起点到目标都进行广度优先搜索,并为迷宫中的每个单元格记录该单元格离开的步数   从头到尾。

  •   
  • 通过将所有靠近起点的像元和所有靠近目标的像元划分为迷宫   进入目标集。

  •   
  • 移除两个区域之间的墙,以添加一条从起点到目标的附加路径。

  •   
     

生成的路径可能具有(甚至可能是)一部分   常见,但是从开始到目标,它们应该是唯一的无循环路径。   这是第一种情况的说明:

     

根据每个单元格距离分离迷宫的结果   从起点或终点   3

但是,当我使用BFS计算从起点到终点的所有距离时,并且在移除墙以创建不完美的迷宫之前,我大多会得到以下信息:

uneven closest cell for each team

在此图片中,有336个单元格靠近红队起始点,而只有105个单元距蓝队起始点。 即使在这两个部分之间移开一堵墙(或不止一堵墙)也无济于事。

我的游戏是要收集随机散布在整个迷宫中的宝藏,并在另一支队伍离开迷宫之前走出去,这种迷宫是完全不公平的,因为它使一个团队有更大的机会更快地在迷宫中找到更多宝藏与其他团队相比。

所以我的建议是:

  1. 上述提到的树迷宫生成器生长结果是否意味着迷宫游戏对多人游戏不公平(为简单起见,假设游戏发生在两个玩家之间)
  2. 我是否需要将迷宫生成器更改为可以产生均匀纹理的对象,例如Wilson或Aldous-Broder算法? (基于Astrolog引入的算法)
  3. @btilly建议使用对称迷宫解决对称迷宫的问题,但是现在我要问哪一个可以保证创建公平的随机迷宫:对称方法(like the one proposed in this article或一样的制服(例如Wilson's algorithm)?

1 个答案:

答案 0 :(得分:4)

一种解决方案是构建旋转对称的迷宫。从两端开始,一起成长,同时又成长。然后,当您填满东西时,将墙壁打开到一个位置的长度与另一个位置的长度相近的位置。

现在您将拥有一个迷宫,两个团队的路线长度相同,机会也非常公平。