objective-c - 游戏中心特定配对

标签 objective-c game-center multiplayer

我正在通过 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/

相关文章:

ios - 应用程序在 iPad 的 iOS 5 中崩溃,但在 iOS 6 和 iOS 7 中运行良好

ios - 如何触发【GKLocalPlayerListener播放器: didRequestMatchWithPlayers:]

iphone - 游戏中心排行榜(沙盒)显示错误的分数

objective-c - NSString 时间格式转换为 int64_t

java - Java 的 NIO2 API 是否可以替代用 NIO 编写单线程多路复用服务器?

iphone - 在iphone中全局定义sqlite3数据库

objective-c - UIBezierPath containsPoint : don't work correctly?(更新: touch location in superview how to handle?)

objective-c - 从子 UIView 影响 UIViewController

android - 如何开始在 Android 上开发社交多人游戏

networking - 如何在多人游戏中同步物理?