2

需要动态设置一些游戏规则,并在玩家连接之前通知可能的玩家(当 GC 搜索玩家/自动机时)这些规则。假设我想主持/开始游戏,我想设置一些投注单位的起始数量(10...1000)、难度级别(0...10)、评分系统(0..3)等。我想这就像一个表格,其中包含提供此信息的单元格,因此玩家可以决定他/她是否想加入并按照这些规则玩游戏。如何实施?
AFAIK GKMatch 在搜索玩家时仅使用最小和最大数量的玩家,仅此而已。我可以在邀请中提供此类信息,但我需要其他玩家自己寻找游戏,例如浏览现有游戏,包括规则。自游戏开始以来,我的游戏不允许加入玩家,但我需要以某种方式填补会话所需的玩家数量。就像我只想和一个玩家一起玩一样,我开始游戏时玩家数量=2(以及一些自定义规则),所以我需要 GC 来帮助我找到对面的玩家。在加入我之前,该玩家应该被告知我的规则。

4

1 回答 1

4

你有两种可能性:

使用 的这些属性GKMatchRequest

@property(nonatomic, assign) uint32_t playerAttributes

指定本地玩家想在游戏中扮演的角色的掩码。

如果此值为 0(默认值),则忽略此属性。如果该值不为零,则自动使用该值作为限制玩家可以在组中扮演的角色的掩码。与玩家属性自动匹配遵循两个规则:

只有当新玩家的掩码与已经在比赛中的任何玩家的掩码按位与等于 0x00000000 时,才能将新玩家添加到比赛中。玩家被添加到匹配中,直到匹配中所有玩家的掩码的按位或等于 0xFFFFFFFF。有关更多信息,请参阅游戏工具包编程指南。

@property(nonatomic, assign) NSUInteger playerGroup

标识允许加入比赛的玩家子集的数字。

如果您的游戏设置了 playerGroup 属性,则只有请求共享相同 playerGroup 值的玩家才会由 Game Center 自动处理。您可以为玩家组使用任何您想要的值。例如,您可以定义不同的 playerGroup 值来实现以下任何过滤器:

游戏可以根据技能水平限制玩家。提供多个游戏的游戏可以使用它将玩家过滤到他们想要玩的特定游戏中。具有多个胜利条件(例如,夺旗、生存)的游戏可以将玩家与对相同规则感兴趣的其他人匹配。通过应用内购买提供奖励内容的游戏可以匹配拥有相同内容的玩家。

这允许在搜索玩家之前进行一些游戏配置。

对于复杂的规则,您需要在找到比赛并连接球员后发送配置数据(请参阅 GKMatch API)。这里需要使用可靠传输模式。

你也可以结合这两个想法。

于 2012-11-27T17:28:44.243 回答