问题标签 [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.
ios - 使用 GKGameSession 进行自动匹配
我想切换到 GKGameSession(而不是传统的 GameCenter),但我的应用程序做了很多自动匹配。我如何使用 Sessions 做到这一点?是否可以使用传统的 MatchMaker 视图控制器创建游戏,然后传递足够的信息让每个人都连接到会话?
例如,我可以只传递会话标识符或 URL 吗?
firebase - 如何随机匹配用户与 Firebase
我正在尝试创建一个用户使用 Firebase 随机匹配的游戏。
我匹配它们的想法是这样的:
- 用户 A 来了,读取游戏列表。如果没有任何游戏等待开始游戏。将自己设置为发起者,将对手设置为无效。
- 用户 B 来了,读取游戏列表。找到用户 A 的游戏(对手为空)并加入游戏(他成为对手)
- 如果用户 C 出现在用户 B 阅读游戏列表的那一刻和用户 B 将自己写为对手的那一刻之间会发生什么(对他来说,对手仍然是空的)。基本上是并发问题。
我已经阅读过有关交易的信息,但我不是 100% 确定它们在这种情况下会有所帮助(阅读没有对手的游戏,将对手写入其中一款游戏),因为我已经看到它们在增加价值而不是阅读/写入数据。
unity3d - 对接会在 Unity3d 开发 HUD 中未显示匹配项
我不确定为什么 HUD 中没有显示匹配项。如果两个客户端在同一台计算机上,则匹配显示,但如果它们位于不同的计算机上,则无论它们是否在同一网络上,都不会显示。我正在学习本教程: 多人配对。我与其他在不同线程上遇到相同问题的人进行了检查,但我无法找到任何解决方案。
我禁用了所有防火墙,但结果仍然相同,所以不可能。
如果这是一个常见错误,那么是否有真正有效的解决方案?
c# - Unity3d 服务和在线匹配的专用服务器。可能吗?
我正在为 PC 开发像 Disgaea 或 Fire Emblem 这样的战术 RPG,但它是在线/2 人 PvP,因此它需要专用服务器来避免作弊。
我打算做的步骤:
1) 玩家使用我的地图编辑器创建地图
2) 玩家将地图上传到 Unity 专用服务器。我觉得便宜又舒服。
3) 玩家的地图在 MATCHMAKING 列表中显示为任何人都可以加入并开始玩的房间。
我做了一些研究,发现 Unet 专用服务器不支持在线配对。或者是吗?我有点困惑。
我需要一些澄清:
A) 上述计划可行吗?
B) 我在商店中搜索了专用服务器上的匹配,最终找到了“主服务器套件”资产。这可以是解决方案吗?
C) Unity 开发人员(如果上述计划不可行)是否正在朝着这个方向努力,以某种方式为未来的版本工作?
D) 如果我租用 Unity 专用服务器服务带宽(我真的希望这种情况发生,因为回合制游戏非常便宜)我有哪些发布选项?我可以通过 STEAM 分发它吗?
peer2peer(两个玩家之一的服务器主机和客户端)是不行的!
networking - 游戏制作者工作室 2 对接会
我刚刚在 node.js 中为 web 平台构建了一个类似 MOBA 的游戏。现在我计划在 Game maker studio 2 中将其作为实际游戏重做,同时修复一些错误并添加一些新功能。不久前我遇到了一个问题,但是,我无法弄清楚匹配(游戏制作者是我的第一选择,但由于这个问题我切换到了网络)。我在 javascript 中将 matchmaker 构建为数组,但是,当有很多玩家试图寻找游戏时,我觉得这会出现问题。我在 Game maker 中还没有任何代码,因为如果它不相关,我可能会尝试切换到不同的游戏引擎。
对接会:
- 1) 就像 Smite 或 League of Legend,你可以接受或拒绝比赛
- 2) 一个游戏中的某个人不应该能够与另一个游戏交互。
我真的很感激任何帮助。我只需要帮助理解游戏制作者的逻辑,因为网络不同并且有房间系统。
非常感谢!
布兰登·莱西
algorithm - 数百万玩家玩家池中 5v5 的最佳匹配算法
假设我正在尝试为我的游戏创建某种匹配算法。该游戏类似于联赛或 DOTA,其中 5 名玩家对抗 5 名玩家。进一步假设玩家池是巨大的(数百万玩家同时搜索一个游戏),匹配器的工作是将尽可能多的玩家放入 5v5 游戏的许多实例中。在这一点上,我们完全不用担心 MMR、ELO 或任何玩家/队伍等级的影响。我们只想让玩家进入 5v5。
我目前的蛮力算法在缩放方面绝对是残酷的。它首先尝试在数百万玩家中找到 5 个玩家方的所有可能组合,然后,它尝试找到成对的方,如果玩家已经被使用,则从可能的方匹配中删除玩家:
所以,假设我有 10 个玩家,我想找到所有可能的 5v5,我首先将它们转换为位并进行位移以找到所有可能的组合。
等等...
然后在所有可能的参与方中,我使用 2 个 for 循环开始尝试查找参与方对:
等等...
该算法的运行时间为 O((nCr)^2)。因为它试图找到所有可能的派对组合,所以仅仅匹配 50 名玩家将需要 4.4891439e+12 次操作,这太疯狂了。
有什么更好的算法不会经过所有可能的参与方并蛮力解决这个问题?
facebook - Facebook Instant Gaming 配对功能因“玩家当前不符合匹配条件”而被屏蔽。
我已经设置了匹配代码,实际上它运行了 3 次,它搜索、等待,然后找到匹配项(我的另一个帐户也设置为搜索),没有任何问题。
然后突然之间,他们俩都停止了工作,唯一的消息是:The player is not currently eligible to match.
这是代码(非常通用):
tag
是match_bounty
有谁知道为什么这停止工作?
编辑:如果我使用相同的代码创建一个新帐户,它可以正常工作。
c# - Unity 2018.2 - UNet Matchmaking 仅适用于 LAN
我正在尝试根据 Brackeys 的教程来实现 UNET Matchmaking 系统。
我已经在我的 Unity 帐户中启用了多人游戏服务并启用了该服务。
当我尝试创建匹配并从局域网中的另一台 PC 中找到它时,它运行良好。
当我尝试创建匹配并从局域网外的另一台 PC 上找到它时,我在匹配列表中看不到匹配。
我已经搜索了文档和谷歌,但没有找到任何关于它的信息。
有人有线索吗?
顺便说一下,这是我的 JoinRoom 脚本。
回调函数返回成功,但房间列表返回为空。
redis - 基于 Elo 的多人配对
我正在尝试建立一个配对服务器。到目前为止,这是我的想法:允许用户通过 websockets 排队,获取玩家 ID、ip、elo 等。
放置在像redis这样的实时数据库中作为队列
扫描队列,试图为队列头的玩家找到最佳批次。
我的问题是,我觉得扫描很糟糕,特别是因为只有 1 个爬虫搜索潜在的数千名玩家。处理此问题的任何提示或资源?当我可以使用 gamelift 或 steamworks 之类的东西来为我托管时,我自己尝试构建它是不是一个糟糕的选择?谢谢!
networking - 第一次匹配失败后,Dota2如何知道匹配高优先级的玩家?
在 Dota2 中,有一条规则是,当十名玩家的第一场比赛失败时,您将匹配到优先级更高的比赛。我很好奇如何做到这一点?