如何使用 Google Play 服务管理一个 application/game 中的多个 'minigames'?

How to manage multiple 'minigames' inside one application/game using Google Play Services?

我开发了一个同时也是游戏的应用程序,因此我决定使用在线多人游戏并在 Google Play 游戏服务中注册它。在开发第一个迷你游戏后,一切都按预期进行,我没有遇到任何问题。在开发第二个小游戏时,我突然想知道如何才能让我的用户独特地在特定的小游戏上玩多人游戏?

该应用程序被 link 连接到游戏服务,然后它为我提供了 APP_ID 存在于我的清单文件中,如下所示:

<meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />

我可以创建多个游戏服务并将它们全部 link 到我的应用程序,这似乎是有道理的。但是,我将如何处理应用程序中的多个 APP_ID?当我使用 GoogleApiClient 时,它只是利用清单中的 APP_ID,我无法指定特定的 APP_ID 游戏服务来启动并提供与 Google Play Games 和Google+:

mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES)
            .build();

是否有在一个应用程序中处理多个游戏的最佳实践?

我现在发现您可以指定一个 variant 值,它是一个 int 从 1 到 1023 的值。建造房间时,您可以将此变体设置为适当的int 反映不同的游戏类型:

RoomConfig.Builder selectPlayersRoomConfigBuilder = makeBasicRoomConfigBuilder();
selectPlayersRoomConfigBuilder.addPlayersToInvite(invitees);
// specifies a specific game variant
selectPlayersRoomConfigBuilder.setVariant(gameType);
if (autoMatchCriteria != null) {
    selectPlayersRoomConfigBuilder.setAutoMatchCriteria(autoMatchCriteria);
}

// prevent screen from sleeping during handshake
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Games.RealTimeMultiplayer.create(mGoogleApiClient, selectPlayersRoomConfigBuilder.build());

在我的游戏示例中,gameType 是一个整数,当用户选择他们想玩的游戏时,从之前的 Activity 设置,然后通过 Intent.我决定对第一种游戏类型使用 1,对第二种游戏类型使用 2,依此类推。