代码之家  ›  专栏  ›  技术社区  ›  fourthking

GameSparks手动配对

  •  0
  • fourthking  · 技术社区  · 6 年前

    所以根据他们的文件,首先我们必须要求一个配对请求

    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请求实际查找挂起的匹配,而不是创建一个全新的匹配?

    1 回复  |  直到 6 年前
        1
  •  1
  •   fourthking    6 年前

    我想你几乎没有做错什么。首先,自定义配对逻辑发生在服务器端,您可以在GameSpark上配置它->配置器->多人游戏->匹配项。

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

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

    https://docs.gamesparks.com/tutorials/multiplayer/matching-players.html#customizing-matching