问题标签 [matchmaking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
190 浏览

ios - 使用 GKGameSession 进行自动匹配

我想切换到 GKGameSession(而不是传统的 GameCenter),但我的应用程序做了很多自动匹配。我如何使用 Sessions 做到这一点?是否可以使用传统的 MatchMaker 视图控制器创建游戏,然后传递足够的信息让每个人都连接到会话?

例如,我可以只传递会话标识符或 URL 吗?

0 投票
1 回答
1830 浏览

firebase - 如何随机匹配用户与 Firebase

我正在尝试创建一个用户使用 Firebase 随机匹配的游戏。

我匹配它们的想法是这样的:

  1. 用户 A 来了,读取游戏列表。如果没有任何游戏等待开始游戏。将自己设置为发起者,将对手设置为无效。
  2. 用户 B 来了,读取游戏列表。找到用户 A 的游戏(对手为空)并加入游戏(他成为对手)
  3. 如果用户 C 出现在用户 B 阅读游戏列表的那一刻和用户 B 将自己写为对手的那一刻之间会发生什么(对他来说,对手仍然是空的)。基本上是并发问题。

我已经阅读过有关交易的信息,但我不是 100% 确定它们在这种情况下会有所帮助(阅读没有对手的游戏,将对手写入其中一款游戏),因为我已经看到它们在增加价值而不是阅读/写入数据。

0 投票
1 回答
301 浏览

unity3d - 对接会在 Unity3d 开发 HUD 中未显示匹配项

我不确定为什么 HUD 中没有显示匹配项。如果两个客户端在同一台计算机上,则匹配显示,但如果它们位于不同的计算机上,则无论它们是否在同一网络上,都不会显示。我正在学习本教程: 多人配对。我与其他在不同线程上遇到相同问题的人进行了检查,但我无法找到任何解决方案。

我禁用了所有防火墙,但结果仍然相同,所以不可能。

如果这是一个常见错误,那么是否有真正有效的解决方案?

0 投票
0 回答
798 浏览

c# - Unity3d 服务和在线匹配的专用服务器。可能吗?

我正在为 PC 开发像 Disgaea 或 Fire Emblem 这样的战术 RPG,但它是在线/2 人 PvP,因此它需要专用服务器来避免作弊。

我打算做的步骤:

1) 玩家使用我的地图编辑器创建地图

2) 玩家将地图上传到 Unity 专用服务器。我觉得便宜又舒服。

3) 玩家的地图在 MATCHMAKING 列表中显示为任何人都可以加入并开始玩的房间。

我做了一些研究,发现 Unet 专用服务器不支持在线配对。或者是吗?我有点困惑。

我需要一些澄清:

A) 上述计划可行吗?

B) 我在商店中搜索了专用服务器上的匹配,最终找到了“主服务器套件”资产。这可以是解决方案吗?

C) Unity 开发人员(如果上述计划不可行)是否正在朝着这个方向努力,以某种方式为未来的版本工作?

D) 如果我租用 Unity 专用服务器服务带宽(我真的希望这种情况发生,因为回合制游戏非常便宜)我有哪些发布选项?我可以通过 STEAM 分发它吗?

peer2peer(两个玩家之一的服务器主机和客户端)是不行的!

0 投票
1 回答
294 浏览

networking - 游戏制作者工作室 2 对接会

我刚刚在 node.js 中为 web 平台构建了一个类似 MOBA 的游戏。现在我计划在 Game maker studio 2 中将其作为实际游戏重做,同时修复一些错误并添加一些新功能。不久前我遇到了一个问题,但是,我无法弄清楚匹配(游戏制作者是我的第一选择,但由于这个问题我切换到了网络)。我在 javascript 中将 matchmaker 构建为数组,但是,当有很多玩家试图寻找游戏时,我觉得这会出现问题。我在 Game maker 中还没有任何代码,因为如果它不相关,我可能会尝试切换到不同的游戏引擎。
对接会:

    1) 就像 Smite 或 League of Legend,你可以接受或拒绝比赛
    2) 一个游戏中的某个人不应该能够与另一个游戏交互。

我真的很感激任何帮助。我只需要帮助理解游戏制作者的逻辑,因为网络不同并且有房间系统。

非常感谢!
布兰登·莱西

0 投票
1 回答
1015 浏览

algorithm - 数百万玩家玩家池中 5v5 的最佳匹配算法

假设我正在尝试为我的游戏创建某种匹配算法。该游戏类似于联赛或 DOTA,其中 5 名玩家对抗 5 名玩家。进一步假设玩家池是巨大的(数百万玩家同时搜索一个游戏),匹配器的工作是将尽可能多的玩家放入 5v5 游戏的许多实例中。在这一点上,我们完全不用担心 MMR、ELO 或任何玩家/队伍等级的影响。我们只想让玩家进入 5v5。

我目前的蛮力算法在缩放方面绝对是残酷的。它首先尝试在数百万玩家中找到 5 个玩家方的所有可能组合,然后,它尝试找到成对的方,如果玩家已经被使用,则从可能的方匹配中删除玩家:

所以,假设我有 10 个玩家,我想找到所有可能的 5v5,我首先将它们转换为位并进行位移以找到所有可能的组合。

等等...

然后在所有可能的参与方中,我使用 2 个 for 循环开始尝试查找参与方对:

等等...

该算法的运行时间为 O((nCr)^2)。因为它试图找到所有可能的派对组合,所以仅仅匹配 50 名玩家将需要 4.4891439e+12 次操作,这太疯狂了。

有什么更好的算法不会经过所有可能的参与方并蛮力解决这个问题?

0 投票
1 回答
308 浏览

facebook - Facebook Instant Gaming 配对功能因“玩家当前不符合匹配条件”而被屏蔽。

我已经设置了匹配代码,实际上它运行了 3 次,它搜索、等待,然后找到匹配项(我的另一个帐户也设置为搜索),没有任何问题。

然后突然之间,他们俩都停止了工作,唯一的消息是:The player is not currently eligible to match.

这是代码(非常通用):

tagmatch_bounty

有谁知道为什么这停止工作?

编辑:如果我使用相同的代码创建一个新帐户,它可以正常工作。

0 投票
2 回答
988 浏览

c# - Unity 2018.2 - UNet Matchmaking 仅适用于 LAN

我正在尝试根据 Brackeys 的教程来实现 UNET Matchmaking 系统。

我已经在我的 Unity 帐户中启用了多人游戏服务并启用了该服务。

当我尝试创建匹配并从局域网中的另一台 PC 中找到它时,它运行良好。

当我尝试创建匹配并从局域网外的另一台 PC 上找到它时,我在匹配列表中看不到匹配。

我已经搜索了文档和谷歌,但没有找到任何关于它的信息。

有人有线索吗?

顺便说一下,这是我的 JoinRoom 脚本。

回调函数返回成功,但房间列表返回为空。

0 投票
0 回答
212 浏览

redis - 基于 Elo 的多人配对

我正在尝试建立一个配对服务器。到目前为止,这是我的想法:允许用户通过 websockets 排队,获取玩家 ID、ip、elo 等。

放置在像redis这样的实时数据库中作为队列

扫描队列,试图为队列头的玩家找到最佳批次。

我的问题是,我觉得扫描很糟糕,特别是因为只有 1 个爬虫搜索潜在的数千名玩家。处理此问题的任何提示或资源?当我可以使用 gamelift 或 steamworks 之类的东西来为我托管时,我自己尝试构建它是不是一个糟糕的选择?谢谢!

0 投票
1 回答
51 浏览

networking - 第一次匹配失败后,Dota2如何知道匹配高优先级的玩家?

在 Dota2 中,有一条规则是,当十名玩家的第一场比赛失败时,您将匹配到优先级更高的比赛。我很好奇如何做到这一点?