【发布时间】:2014-12-15 18:49:37
【问题描述】:
这个问题实际上并不是特定于语言的,它更多的是关于算法背后的逻辑,该算法将用于在 1v1 配对游戏中配对玩家。
这是一个两部分的问题。
如果我有一款配对 1v1 类型的游戏,你打开手机应用程序,选择“玩”,它会为你找到对手,最好的方法是什么?
假设在我的玩家数据库中,我有一个名为“配对”的键,其 BOOL 值为 YES/NO。
有人打开应用,点击播放,所以我需要配对它们,所以我将这个 BOOL 翻转为 YES,然后我们寻找具有 YES 值的其他人并进行确认,然后他们玩?
如果第一个用户因为无聊而离开而在等待付款时关闭应用程序会发生什么情况,服务器值将保持为“是”,因为我无法将其切换为“否”,因为应用程序已关闭。所以这行不通。
因此,我有一个带有 int 值和 0 = no 的键“配对”,除 0 以外的任何值都是 yes,所以我每秒从客户端到服务器将这个值增加 1。在任何给定时间,如果这个值在 10 秒左右(服务器端)后没有改变,我假设用户关闭了应用程序并离开了,所以我们将值翻转为“0”。
好的,现在我们有了正确的配对模式检测(问题 1:这是检测正确配对模式的最佳方法吗?一个动态变量)
但是,既然我的服务器上有 10,000 名玩家都处于配对模式,那么进行匹配的最佳方式是什么?如果我最终有 5 个玩家(玩家 A、B、C、D 和 E)都与同一个玩家(玩家 F)配对怎么办,当然我只是使用一些简单的 rand() 打破平局算法,但似乎有人可以最终总是打成平手并不断被折腾,可能需要 20 秒才能确认两个玩家将相互战斗。最佳算法将有效地配对每个人,有什么想法吗?我有一种感觉,这将涉及某种队列,按照您等待配对的时间顺序排列。 (这是第 2 题)
【问题讨论】:
标签: algorithm sorting mobile server multiplayer