使随机产生的点公平吗?


22

如果所有玩家均在距相邻玩家相同距离的随机位置生成,则玩家数量将与其生成位置不公平的可能性成正比。与处于地图边缘的玩家相比,玩家越靠近地图中心生成,他们遇到其他玩家的可能性就越大,他们生存的可能性就越小。假设所有玩家都在同一时间产生。

有没有一种方法可以塑造生成点或更改地图,以便:

  1. 所有玩家都有数量有限的相邻敌人。
  2. 所有玩家都有相等的机会遇到相邻的敌人。
  3. 地图大小不必与玩家人数成正比。
  4. 这些限制不适用于任意不可逾越的空间。

答案不一定是完美的,而显然比替代方法要好。开箱即用的思维表示欢迎。


10
产生一个圆圈?
Zibelas

1
@Zibelas传统方法,但是违反了要求3,并且在很多玩家的参与下,这创建了巨大的地图和空荡荡的内部空间。
不适合的代码

4
这取决于您的游戏类型。(2D / 3D,重生/最后站着的人等)在这种情况下,完美的重生只有在球形世界中才有可能(更多的玩家,更近的重生但您可以保证它们的距离相同)。在边界固定的2D世界中,由于没有放置它们的位置,因此边界玩家总是较少。如果是3D游戏,则可以有多个图层。
Zibelas

1
我想知道您正在制作哪种游戏会有所帮助。听起来像是一场战争游戏,但具体细节是什么?是射手吗?您是从所有武器入手,还是必须探索并找到东西?胜利的条件是什么?一场比赛预计持续多长时间?
RothX

3
没有完整的答案,但我认为每个人都在尝试“公平和均衡的生成”,这不是很有趣。看一下出色的PUBG(和其他Battle Royale)的生成:玩家几乎可以在任何想要的地方“生成”(好,跳和着陆...)-如果您想要冲突和戏剧性,可以选择大多数玩家着陆/生成的地方。高风险有高奖励,但前提是玩家愿意。您可以在树林中的某个地方着陆,您有时间做准备-低风险,低报酬,但有些玩家可能更喜欢(例如,像我这样的人)。它不是随机的,由玩家选择。
Jan'splite'K.

Answers:


27

让玩家自己选择开始位置。

在游戏开始时,在地图中心生成所有玩家,但不伤害其他玩家。然后,他们将不得不蜂拥而至,并获得彼此交战的手段(建立基地,拿起武器,收集资源等)。

尽早找到一个好的开始位置需要一点运气或地图知识(取决于您使用的是程序地图还是手工地图)。但是何时何地定居主要是一项战略决策。尽早部署会给您时间上的优势,但是却使您处于危险的境地。精心挑选基地会使您在比赛初期落后,但在比赛中期和后期可能是决定性的优势。


3
@Shashimee实际上,我相信我在Anno 1602中首先见过这种方法。我还相信,某些早期的C&C游戏将其作为可选的多人游戏选项(但是我不确定我是否记得正确)。
菲利普

3
@Philipp MULE,年龄在15岁左右,将成为64岁的准将,让您也可以选择自己的职位:)
Zibelas

然后,您会遇到一个问题,在该问题中您会一直跟踪到生成点。当然,这可能是理想的游戏机制,但也可能非常令人沮丧,而不是您决定在游戏中想要的东西。一个好主意是让角色生成不可见且无玩家冲突,并在开始游戏之前找到其基础。
Dent7777 '17

这就是Warcraft 3上自定义游戏模式的“吸血鬼”和“树标签”系列所使用的方法。这是最好的方法,因为所有玩家都已结盟(至少在最初是这样),而对立团队后来又被释放了。
Kroltan '17年

这也具有减少不公平感的优点。如果您随机产卵并迅速死亡或遭受惩罚,那将是不公平的,即使是相当公平的。如果您选择在何处产卵,则死刑或惩罚似乎不太公平和惩罚,因为选择产卵点本身就是一项技能,而且您会有所提高。就是说,如果真的很难选择生成点,那也会感到不公平,因为高技能的玩家会做得更好。
阿努比亚人Noob

9

了解要求

  1. 所有玩家都有数量有限的相邻敌人。

首先,我们谈论的是玩家的生成点,而不是玩家在游戏中给定点的当前位置。只是解决这个问题。

在讨论图形时,相邻项定义明确。我们可以想到一个表示地图可导航性的地图-从现在开始在“图形”上。

如果节点可以最多有一个生成点,那么说它们“相邻”是有意义的。注意:我将不会限制节点最多只有一个生成点,这在以后会变得很明显。

要建立图表,我们将需要考虑诸如墙壁,桥梁,梯子,远距传送点之类的东西,或者,如果可能有玩家可以飞行,甚至要考虑飞行空间。每个节点代表一个遍历的位置。每个连接代表一个可能的运动。

注意:知道节点的大小和形状,并与实际相邻的节点一起工作。不要将节点视为重点。不要认为连接具有长度。另外,使用凸节点。

该图可能已经预编译(该图由设计人员创建);否则,如果随机生成地图,则可以即时创建。

  1. 所有玩家都有相等的机会遇到相邻的敌人。

我会假设敌人是其他玩家。再次说明,只是将其清除。

假设每个玩家随机走动,则从到生成点的距离的(高斯)函数将给出在给定点找到玩家的可能性-在平坦的空间上没有障碍物-从现在开始,功能”。

由于我们正在处理图形,因此将在图形上注释值。

  1. 地图大小不必与玩家人数成正比。

如果我们限制每个节点只有一个生成点,那么要添加更多播放器,我们将需要较小的节点。如果我们在知道要拥有多少个玩家之前就决定了图表,则可能必须细分特定游戏的节点。

  1. 这些限制不适用于任意不可逾越的空间。

我无意增加障碍来解决问题。矛盾的是,我需要绕过障碍。如果不存在,则实现会更简单。


我们正在尝试放置N个生成点,以使在所有这些生成点遇到另一个玩家的机会相等。

我们可以用几率之差与几率均值之和来衡量误差。我们正在尝试将其最小化(实际上,我们希望使其为0)。

为此,我们需要知道在图的每个节点上遇到玩家的机会。

要计算该机会,请从零开始。由于在没有玩家的情况下在任何给定节点上找到玩家的机会为零。然后,对于每个生成点,遍历该图,将带注释的值添加到当前生成点的函数值。

注意1:添加或移动衍生点会影响所有地图遇到玩家的机会。

注2:跟踪每个生成点对机会的影响程度,将使事情变得容易。

注意3:由于节点具有大小,因此误差接近零的可能性取决于节点的大小。通过使用值的范围(最小机会和最大机会,取决于节点内生成点的特定位置),可以更加精确。

将生成点随机放置,然后开始移动它们,以使误差变小(考虑可能的移动,如果导致误差减小,则保持该误差,否则将其还原)。并继续这样做,直到我们无法进一步改善为止(太多的迭代没有改善,或者错误为零)。

注意4:移动衍生点时,可以利用碰到玩家的机会(不包括将要移动的衍生点)随机选择一个新的生成点位置,以使该位置有可能会遇到玩家离平均的可能性更大。我提醒您,移动生成点会影响平均值。

预期的行为是,距离太近的生成点会移动,而距离太远的生成点会靠近。直到它们达到平衡。

如果在任何给定的迭代中,您在一个节点上都有多个生成点(这不太可能,因为它们倾向于分开,但是如果您有足够大的节点,则有可能),请拆分该节点并继续求解。节点的任何划分均有效。


上述解决方案将接近误差=零,但不能保证达到零。您可以运行它直到达到局部最小值...从理论上讲,您可以将节点除以使其完全为零...但是,这相当于调整生成点坐标!

尝试模拟退火以在节点内移动生成点。虽然,老实说,打扰如此详细的级别可能不值得。


我想说明的是,没有障碍的平面地图的结果将不会是均匀分布的点。相反,如果地图具有边缘(即,如果它不环绕),则将有更多的生成点更靠近边缘,这是因为可以从更多方向到达中心的点,从而增加了碰到的机会那里的其他玩家。因此,靠近中心的点要进行补偿。


6

这取决于您要创建什么样的游戏,以及它的节奏如何。在像世界这样的球体上(例如行星An灭),可以实现完美的均匀间隔分布。但这在您的游戏中是一个公平的选择吗?即使所有人的产卵距离相等,某些产卵区仍具有更好的优势。

  • 范围更近/武器更好/资源更多
  • 更好的封面/更多隐藏/概述
  • 玩家的“流动”,有些地方比其他地方更具吸引力(想想一张完整的森林地图,其中一所房子只有一所房子,无论那所房子在哪里,人们都有机会检查一下)

您的地图是固定地图还是过程生成地图?曾经尝试在2人地图上与8人一起玩《帝国时代》吗?如果不调整地图大小,就不可能无限扩大玩家人数。即使是不公平的开始位置也可以在游戏中带来很多活力(请参阅Worms系列)。只要您与另一个玩家的联盟持续了一次,或者您在第一轮之后没有幸存的蠕虫,就没有人抱怨您是否在一个大型集群中产生。

(如果我对您的游戏类型了解更多,我会再添加一些示例)


5

进行到目前为止未建议的操作:使其没有地图的中心。我的意思是,地图边缘连接到相对的两侧。这将需要大量编程工作,但实际上,如果您朝一个方向行走,它可能会使关卡无限地重复自身。这意味着没有中心,并且随机生成位置不会有任何优点或缺点。

为此,可以制作一个正方形的平面图,然后将每个边连接到对边的副本上。当玩家离开侧面时,他们会在玩家不知情的情况下被传送到另一边。当然,从理论上讲,您将无法在边界的另一侧看到玩家。要解决此问题,请创建该玩家的副本,这些副本似乎在边界的另一侧走来走去,以便您可以看到它们,当您向它们奔跑时,您可以穿越移动,而实际的玩家则位于假人所在的位置。

或者,整个地图可能存在于球体的外部,但是这会使坐标难以生成。


2
或制作一张地图,在中心位置,您可以轻松地进行狩猎或狩猎,也可以更轻松地找到战利品,但同样,在这样的情况下,您更有可能在非中心区域被狩猎这样一来,玩家就不太可能找到其他用户和战利品,因此,如果他们想要更多的战利品,他们将不得不走到中心,如果他们想生存更长的时间,就必须留在原地。因此基本上使随机生成的弊端成为优势。
大街

4

以下是一些可能的解决方案:

  • 随机产生在圆的圆周上
  • 随机产生半径(不产生以关闭中心)
  • 添加随机的生成时间组件

生成机制图


第二张图片是一个不错的选择。它解决了第一个选项的问题,即玩家确切知道所有其他玩家的位置。
Zanon

@Zanon拥有第一个图像播放器,但可以(而且很可能会)在有人到达之前离开。第二种会引起不公平的产卵,有些会接近其他产卵。也许像这样的地方有两个圆圈,较小的圆圈和较大的圆圈之间的区别在于它们的生成位置,所以就像第二个图像一样,但是到中心的位置更少。
大街

1

从根本上来说,我认为这是一个图形分布问题。假设存在死亡竞赛的情况(每个其他玩家都是敌人),则需要将地图建模为互连的图,并跟踪每个玩家最接近图上的哪个节点。并非每个节点都需要一个生成点,但是您需要使用复杂的图形来建模生成点之间的距离。在生成时,您要对图形进行迭代,并根据附近的节点是否有玩家对每个可生成节点进行评分。

然后,理想节点具有:

  • 目前没有任何玩家
  • 附近节点中的玩家人数超过零(距离链接数量很少)

想象一下,您的图形已被正则化,并且您正在每个节点周围绘制同心区域。如果内部区域中已经有玩家,则对节点进行惩罚,并奖励距离正确的玩家。您想鼓励在其他玩家附近产生更多的东西,以使他们能够迅速找到兴趣,但又不要太近,以免他们在有机会获得成功之前就跳入水中。

随着玩家人数的增加,您需要增加地图的大小,但是k不必为1或更大。最糟糕的情况仍然是,图上的每个节点都至少有一个玩家-在这种情况下,没有好的节点可供使用,而您将不得不承受这种情况,并产生一个玩家知道他们会降落在另一个之上。计分算法仍应对节点加权,以便您在其他玩家最少的节点上产卵。

请记住,您必须在了解地图,其路线,任何阻塞点以及节点点之间的有效距离(而不是实际距离)的基础上仔细构建地图。如图所示,使用诸如测量时间之类的方法在节点之间而不是距离上移动,以解决更困难的地形。另外,您还需要考虑开放性与掩盖性;两个节点可能在物理上相距很远,但是由于它们非常开放,因此在每个节点上生成一个播放器可能意味着它们同样脆弱,就像您将它们紧挨着生成一样。

细化:

  • 如果有玩家最近在该节点中产卵,则添加一个临时惩罚来得分,以阻止形成扼杀点(无尽的玩家从同一方向来并被捡起)
  • 在一定范围内添加随机性(例如,选择最佳的3个节点,然后以相等的概率在它们之间随机选择)以获得更多的变化。
  • 当尚未产生任何人时,在地图中心(或最有趣的点)上添加初始权重,以便即使在每个节点的得分都为零(因为没有其他玩家在场)的情况下,也可以在已知位置产生。

0

其他一些人已经讨论了您的要求的局限性(在某些时候需要缩放地图以防止过度拥挤等),并最终逃避了可能没有“完美”放置算法的事实。当可能没有“完美”的算法时,我总是期待启发式算法。您有几个直接或间接彼此冲突的条件,以及非常复杂的搜索空间。寻找最佳解决方案可能并不可行或不切实际,但是只要稍加调整,统计方法就可以在大多数情况下很好地执行。

解决您的第三个和第四个条件: “地图不必扩展。”

我会在开始时确保您有过多的节点(即:像用于路径查找的导航网格一样密集)。这使得计算与其他玩家的距离变得更加昂贵(不是直接相邻的节点),但这并不是每个回合都会发生一次以上的过程(我认为)。这样做的好处是,您可以将预滚动的导航库用于大多数操作。此外,这将以公平的方式尊重在障碍物周围的遍历,而欧氏距离可能不会(在迷宫中的玩家比在空旷的地方放置得更近)

计算所需的生成特征的启发式:

随机放置所有播放器之后,根据您的标准(与其他播放器的距离,到生成的距离等)计算周围节点的性能。可以调整值的权重,并将其权重调整为非线性以精确调整性能您想要在经过消毒的理想情况下(无障碍的扁平矩形网格),并且当重新添加世界时,性能应该相似。从那里可以确定要搜索的节点数,移动起点的阈值是多少,以及在完成衍生并开始游戏之前要执行的迭代次数。


0

如果运动场是一个拓扑圆环(即,一个矩形,其中“越界”意味着进入另一侧),那么这可能是一个很好的答案:玩家j在处生成x = (pjW/N) mod W, y = (qjH/N) mod HW,H矩形的尺寸N是玩家人数,以及p,q是要确定的整数;它们是不同的(可能)是相对质数的,并且相距不远sqrt(N)。生成点形成一个倾斜的“墙纸”图案。

假设玩家仅在游戏开始时产生。如果它们稍后产生,我想您可能希望将它们放置在距其他玩家当前位置尽可能远的位置-其他玩家定义的Voronoi图的顶点。


0

怎么样:

每个玩家都被一个无产卵的盒子包围(或圆圈)。

如图所示,有一个特定大小的方块会在每个玩家周围产生并跟随该玩家周围-在该方块内没有其他玩家可以产生。

这些方块只会影响生成,而不会影响游戏中的其他任何移动。

这适用于仅初始生成或连续生成。

(点表示玩家,绿色表示新玩家可能的生成区域)

地图大小不必与玩家人数成正比

要解决此问题,您可以执行以下两项操作之一:(或同时执行两项操作)

  • 根据玩家人数减少非生成框的大小。
  • 每个方块中最多允许X个敌方玩家生成。
    • 这个数字可以随您的增加而增加(从0开始)。
    • 变体1:有一个较小的无产卵箱和一个较大的有限产卵箱。
    • 变式2:根据新生成的物体与该玩家的接近程度(如果在盒子内),权重概率-可能难以有效实施。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.