Unity3d 手工配对

Unity3d 手工配对,unity3d,network-programming,match,gamesparks,Unity3d,Network Programming,Match,Gamesparks,我和我的团队正在Unity中构建一个游戏,并使用GameSparks在我们的游戏中实现联网。我们正在尝试实现手动配对,以便在配对时,GameSparks不会自动为我们匹配玩家。我们想自己控制它 所以根据他们的文件,首先我们得打电话请求配对 new GameSparks.Api.Requests.MatchmakingRequest() .SetMatchShortCode("match_name") .SetSkill(0) // .Send((

我和我的团队正在Unity中构建一个游戏,并使用GameSparks在我们的游戏中实现联网。我们正在尝试实现手动配对,以便在配对时,GameSparks不会自动为我们匹配玩家。我们想自己控制它

所以根据他们的文件,首先我们得打电话请求配对

new GameSparks.Api.Requests.MatchmakingRequest()
        .SetMatchShortCode("match_name")
        .SetSkill(0) // 
        .Send((response) => {
            if (response.HasErrors)
            { // check for errors
                    Debug.LogError("GSM| MatchMaking Error \n" + response.Errors.JSON);
            }
            else
            {
                    Debug.Log("MatchMakingRequest response: " + response.JSONString);
            }
        });
这将创建具有匹配ID的匹配(例如,新创建的匹配的匹配ID为1)。在我们需要调用FindPendingMatchesRequest之后

new GameSparks.Api.Requests.FindPendingMatchesRequest()
      .SetMatchShortCode("MP_match")
      .Send((response) =>
    {
        if (response.HasErrors)
        {
                Debug.Log("Matchmaking error: " + response.Errors.JSON);
        }
        else
        {
                Debug.Log(response.JSONString);
        }
    });
根据他们的文档,这样做是为了找到一个挂起的匹配,在本例中,它将是ID为1创建的匹配。但是,它会创建一个ID为2的新挂起匹配

例如,如果两个玩家试图玩:

-玩家1自动调用MatchMakingRequest并创建ID为1的匹配。但他也调用FindPendingMatchesRequest,创建一个ID为2的新匹配

-玩家2现在调用FindPendingMatchesRequest,而不是查找ID为1或ID为2的匹配项,而是创建ID为3的新匹配项

这将继续发生在每一个寻找待定比赛的新玩家身上,因此他们永远不会加入彼此的训练


所以我的问题是,如何让FindPendingMatches请求实际查找一个挂起的匹配,而不是创建一个全新的匹配?

我认为您几乎没有弄错什么。首先,自定义配对逻辑发生在服务器端,您可以在GameSpark->Configurator->Multiplayer->Matches上对其进行配置

在那里,您可以设置最小/最大播放器、阈值(最小、最大等待时间)、自定义脚本等。自定义脚本上是设置手动匹配逻辑的位置

发生在您这边的原因可能是因为您的matches设置有问题,您可以参考此处查看教程:


噢,哇,我完全忘了我发布了这个问题。结果我们解决了这个问题,就像我发布这篇文章的第二天一样,经过几周的失败尝试。我们最终做到了这一点,我们使用阈值来定制我们的配对需求。不管怎样,我都会把这个标记为正确答案,因为它是正确的。