基于玩家排名/技能的 Google Play 服务中的玩家匹配

Posted

技术标签:

【中文标题】基于玩家排名/技能的 Google Play 服务中的玩家匹配【英文标题】:Player matching in Google Play Services based on player ranking/skill 【发布时间】:2016-09-04 02:43:48 【问题描述】:

有没有一种方法可以根据个人玩家在游戏中的技能水平使用 Google Play 游戏服务匹配玩家? 我已经在本地存储了每个玩家的玩家等级,并希望将一个玩家与他/她最接近的排名玩家匹配。

例如:排名第 10 的玩家(初学者)应与排名最接近的可用玩家(例如 5 到 15)配对,而不是与专家级别 100 的玩家配对,这样我们才能进行平衡的比赛。

【问题讨论】:

您好,您的具体问题是什么?您拥有创建排名匹配所需的所有数据。只需使用排行榜或玩家列表中存储的级别。如果您需要进一步的帮助,请提供更多详细信息。 【参考方案1】:

可以设置两个变量来影响匹配:

首先,您可以使用RoomConfig.Builder.setVariant() 设置游戏变体。此方法采用指示匹配类型的非负值。指定的变体需要与其他参与者完全匹配才能进行自动匹配。我想您可以严格控制匹配并将变体用作玩家的级别。这样一来,玩家就只能匹配到同级别的玩家了。另一种方法是将级别分组在一个范围内,例如级别 1-5 可以互相玩,同样分组 6-8,等等。

第二个变量是exclusiveBitMask。这是在调用RoomConfig.CreateAutoMatchCritera() 时传入的。此方法采用要匹配的最小和最大玩家数,以及 ExclusiveBitMask。当与其他玩家进行逻辑与运算时,此掩码将等于 0。这用于基于角色的游戏(需要 1 次进攻和 1 次防守)。一种可能的用途是屏蔽高级与低级功能,因此不会出现严重的不匹配。

【讨论】:

【参考方案2】:

我认为 Clayton Wilkinson 的回答完全正确,我投了赞成票。

但是,我想 OP 希望通过某种方式进行基于技能的匹配,而不会将玩家群分成多个部分。

可悲的是,答案是否定的,你不能。选择是使用其他一些匹配系统或拆分您的玩家群。如果您选择拆分玩家群,那么您需要大量并发用户以避免让您的玩家等待很长时间。

在最近的一个游戏中,我们推出了基于 Raknet 的自己的匹配服务,因为我们想要更细致入微的匹配。不过这很麻烦,否则 GPGS 非常棒,因此在您考虑放弃 GPGS 之前,基于技能的匹配必须是一个非常高的优先级。

【讨论】:

感谢您的反馈 - 我将传递此输入以进行潜在的功能增强。

以上是关于基于玩家排名/技能的 Google Play 服务中的玩家匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Play 游戏服务的排行榜中获得排名?

google play 游戏是不是支持排名匹配和排行榜?

登录 Google Play 游戏服务后获取玩家 ID

Google Play 游戏:向其他玩家发送消息

Google Play 服务 - Unity - 只能在 iOS 上邀请“最近的玩家”

Google Play 游戏服务退出回调