Unity3d 手工配对
我和我的团队正在Unity中构建一个游戏,并使用GameSparks在我们的游戏中实现联网。我们正在尝试实现手动配对,以便在配对时,GameSparks不会自动为我们匹配玩家。我们想自己控制它 所以根据他们的文件,首先我们得打电话请求配对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((
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设置有问题,您可以参考此处查看教程:
噢,哇,我完全忘了我发布了这个问题。结果我们解决了这个问题,就像我发布这篇文章的第二天一样,经过几周的失败尝试。我们最终做到了这一点,我们使用阈值来定制我们的配对需求。不管怎样,我都会把这个标记为正确答案,因为它是正确的。