我正在通过 Game Center 开发一款多人游戏。
所以我有不同群体(某种氏族)的玩家。所有比赛只需要 2 名球员。如何只为不同组的玩家进行匹配?
例如:
部落 1 + 部落 2 = true;
部落 5 + 部落 5 = false;
部落 5 + 部落 6 = true;
我知道有一个 playerGroup
属性,但它执行完全相反的操作:(
最佳答案
匹配请求的 playerAttributes
属性应该能够执行您想要的操作。它是一个 32 位掩码,当设置为非零值时,玩家只有在将掩码(或运算)完成为 0xFFFFFFFF 时才会自动匹配到游戏。请参阅an example在这里。
但是,问题是你表明你的部落比玩家多得多。如果您有 6 个并将它们定义为:
#define CLAN1 0xFF00000F
#define CLAN2 0xFF0000F0
#define CLAN3 0xFF000F00
#define CLAN4 0xFF00F000
#define CLAN5 0xFF0F0000
#define CLAN6 0xFFF00000
那么仅两个玩家的 OR 组合将永远不会完全达到 0xFFFFFFFF。不过,我认为您可以通过反转掩码并使用 0 而不是 1 来定义您想要的角色来实现您想要的目的。
#define CLAN1 0xFFFFFFF0
#define CLAN2 0xFFFFFF0F
#define CLAN3 0xFFFFF0FF
#define CLAN4 0xFFFF0FFF
#define CLAN5 0xFFF0FFFF
#define CLAN6 0xFF0FFFFF
任意两个来自不同氏族的或一起作为 0xFFFFFFFF。因此,如果游戏中心愿意(这始终是一个不确定的命题),来自不同部落的任何两个玩家都应该匹配;但是,来自同一氏族的两名玩家不应该这样做。
注意:我可能在这里陈述了显而易见的事实,但请注意,如果您以二进制而不是十六进制定义它们,则最多可以有 32 个不同的部落,因此每个部落使用一位。为了便于阅读,我在这里只使用了十六进制数字。
关于objective-c - 游戏中心特定配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202657/