GameSparks手动对接

时间:2018-05-11 16:07:45

标签: unity3d network-programming match gamesparks

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

所以根据他们的文档,我们首先要调用MatchMakingRequest

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的新挂起匹配。

例如,如果两个玩家正在尝试玩:

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

-Player 2现在调用FindPendingMatchesRequest,而不是找到ID为1或ID 2的匹配项,它会创建一个ID为3的新匹配。

每个寻找未决匹配的新玩家都会继续这样做,因此他们永远不会加入其他会话。

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

1 个答案:

答案 0 :(得分:1)

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

您可以在其中设置最小/最大播放器,阈值(最小,最大等待时间),自定义脚本等。在自定义脚本上,是您设置手动配对逻辑的地方。

发生在您这边的原因可能是由于您的比赛设置有问题,您可以在这里查看该教程:

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