Google 玩具有不同角色的实时多人游戏

Google Play Game with real time multiplayer having different roles

我正在 objective-c 中创建游戏应用程序,它使用 Google Play Game services 实现 realtime Multiplayer 功能。在应用程序中,用户必须在开始游戏之前下注一些硬币,我们希望连接的用户必须下注相同数量的硬币。 我遵循 https://developers.google.com/games/services/ios/realtimeMultiplayer 上的文档。该应用程序在搜索实时玩家时工作正常,而无需像拥有不同硬币的玩家那样扮演每个玩家的特定角色。

- (void)createQuickStartRoom {
    GPGMultiplayerConfig *config = [[GPGMultiplayerConfig alloc] init];
    // Could also include variants or exclusive bitmasks here
    config.minAutoMatchingPlayers = totalPlayers - 1;
    config.maxAutoMatchingPlayers = totalPlayers - 1;

    // Show waiting room UI
    [[GPGLauncherController sharedInstance] presentRealTimeWaitingRoomWithConfig:config];
}

但我想搜索具有相同角色的玩家,就像每个玩家在我的应用程序中花费相同数量的硬币一样。

static uint64_t const ROLE_COIN_10 = 0x1; // 001 in binary
static uint64_t const ROLE_COIN_20 = 0x2; // 010 in binary
static uint64_t const ROLE_COIN_50 = 0x4; // 100 in binary

- (void)createQuickStartRoomWithRole:(uint64_t)role  {
    GPGMultiplayerConfig *config = [[GPGMultiplayerConfig alloc] init];

    // auto-match with two random auto-match opponents of different roles
    config.minAutoMatchingPlayers = 2;
    config.maxAutoMatchingPlayers = 2;
    config.exclusiveBitMask = role;

    // create room, etc.
    // …
}

但是找不到具有相同角色的所需玩家。它还提供了具有不同作用的RealTime Player。 请让我知道如何实现此功能。 谢谢。

您想使用 variant 字段来匹配请求相同(非零)值的玩家。在您的示例中,将变体设置为硬币数量。独占位掩码用于匹配不同的类型。例如,如果您需要 "offense" 和 "defense" 进行匹配。