【问题标题】:How to manage multiple 'minigames' inside one application/game using Google Play Services?如何使用 Google Play 服务在一个应用程序/游戏中管理多个“迷你游戏”?
【发布时间】:2016-01-07 15:00:50
【问题描述】:

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

该应用程序链接到一个游戏服务,然后该服务会为我提供一个存在于我的清单文件中的 APP_ID,如下所示:

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

我可以创建多个游戏服务并将它们全部链接到我的应用程序似乎是有道理的。但是,我将如何处理应用程序中的多个 APP_ID?当我使用 GoogleApiClient 时,它只是利用清单中的 APP_ID,我无法指定特定的 APP_ID 游戏服务来启动并提供与 Google Play 游戏和 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();

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

【问题讨论】:

    标签: android google-play-services google-play-games


    【解决方案1】:

    我现在发现你可以指定一个 variant 值,它是一个从 1 到 1023 的 int。在建造房间时,你可以将此变量设置为适当的 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 是一个 int,它是在用户选择他们想玩的游戏时从之前的 Activity 设置的,然后通过 Intent 传递。我决定将 1 用于第一种游戏类型,将 2 用于第二种游戏类型等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2016-06-24
      • 2014-09-17
      • 2014-09-17
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多