这个问题并不特定于某种语言,而是与在1v1匹配游戏中使用的算法逻辑有关。
这是一个两部分的问题。
如果我有一个匹配游戏,你打开手机应用程序,选择“玩”,它会为你找到对手,那么最好的方法是什么?
假设在我的玩家数据库中,我有一个名为“配对”的密钥,其BOOL值为YES/NO。
当有人打开应用程序,点击“玩”,我需要将他们匹配,所以我将这个BOOL翻转为YES,然后我们寻找另一个具有YES值的人,并进行确认,然后他们就可以开始玩了?
如果第一个用户在等待匹配时关闭应用程序因为他们感到无聊并离开,服务器值将保持为“Yes”,因为我无法将其切换为NO,因为应用程序已关闭。所以这样行不通。
因此,我有一个名为“配对”的密钥,其int值为0 = no,除了0之外的任何值都是yes,所以每秒钟我从客户端向服务器增加1次这个值。在任何给定时间,如果此值在10秒左右(服务器端)未更改,则认为用户关闭了应用程序并离开,因此我们将该值翻转为“0”。
现在我们有了正确的配对模式检测(问题1:这是检测正确配对模式的最佳方法吗?一个动态变量)
但是,如果我在服务器上有10,000个处于配对模式的玩家,最好的匹配方式是什么?如果五个玩家(玩家A、B、C、D和E)都被分配给同一个玩家(玩家F),那该怎么办?当然,我只需要使用一些简单的rand()绑定算法,但似乎有人可能会一直陷入平局并不断被抛来抛去,可能需要20秒才能确认两个玩家准备对战了。最优算法将有效地将所有人配对,您有什么想法?我有一种排队的感觉,按等待时间的顺序排序。(这是问题2)。
这是一个两部分的问题。
如果我有一个匹配游戏,你打开手机应用程序,选择“玩”,它会为你找到对手,那么最好的方法是什么?
假设在我的玩家数据库中,我有一个名为“配对”的密钥,其BOOL值为YES/NO。
当有人打开应用程序,点击“玩”,我需要将他们匹配,所以我将这个BOOL翻转为YES,然后我们寻找另一个具有YES值的人,并进行确认,然后他们就可以开始玩了?
如果第一个用户在等待匹配时关闭应用程序因为他们感到无聊并离开,服务器值将保持为“Yes”,因为我无法将其切换为NO,因为应用程序已关闭。所以这样行不通。
因此,我有一个名为“配对”的密钥,其int值为0 = no,除了0之外的任何值都是yes,所以每秒钟我从客户端向服务器增加1次这个值。在任何给定时间,如果此值在10秒左右(服务器端)未更改,则认为用户关闭了应用程序并离开,因此我们将该值翻转为“0”。
现在我们有了正确的配对模式检测(问题1:这是检测正确配对模式的最佳方法吗?一个动态变量)
但是,如果我在服务器上有10,000个处于配对模式的玩家,最好的匹配方式是什么?如果五个玩家(玩家A、B、C、D和E)都被分配给同一个玩家(玩家F),那该怎么办?当然,我只需要使用一些简单的rand()绑定算法,但似乎有人可能会一直陷入平局并不断被抛来抛去,可能需要20秒才能确认两个玩家准备对战了。最优算法将有效地将所有人配对,您有什么想法?我有一种排队的感觉,按等待时间的顺序排序。(这是问题2)。
Ping
:D - undefined