【问题标题】:Auto-pick turn based match behaving strangely自动选择回合制比赛表现异常
【发布时间】:2017-02-23 15:00:02
【问题描述】:

我已经实现了带有回合制多人游戏的安卓测验应用程序。奇怪的行为是当玩家 1 创建一个自动选择比赛并开始比赛时,这个游戏永远不会发送给其他玩家,即玩家 2,因为我只有 2 台设备进行测试。现在我可以看到游戏正在等待玩家 2 永远无法到达的对手。现在我从 player2 发送了一个自动选择比赛,这个比赛通过替换 player1 发送的比赛被发送给 player1,轮到我在 player1 上,他可以正常玩。如何解决这个问题?

@Override
public void onActivityResult(int request, int response, Intent data) {
    super.onActivityResult(request, response, data);
    dismissSpinner();
   if (request == RC_LOOK_AT_MATCHES) {
        // Returning from the 'Select Match' dialog
        if (response != Activity.RESULT_OK) {
            // user canceled
            return;
        }
        TurnBasedMatch match = data
                .getParcelableExtra(Multiplayer.EXTRA_TURN_BASED_MATCH);

        if (match != null) {
            //update match here
            updateMatch(match); //Pls ignore this nothing happen here, still under development
        } else {
           // Toast.makeText(getApplicationContext(), "finish", Toast.LENGTH_LONG).show();
        }
    } else if (request == RC_SELECT_PLAYERS) {
        // Returned from 'Select players to Invite' dialog
        if (response != Activity.RESULT_OK) {
            // user canceled
        }
        else{
            startNewMatchWithIntent(data);
        }

    }
}

private void startNewMatchWithIntent(Intent intent)
{
    //    Log.d("activityResult", "ResultOK");
    // get the invitee list
    final ArrayList<String> invitees = intent
            .getStringArrayListExtra(Games.EXTRA_PLAYER_IDS);
    // get automatch criteria
    Bundle autoMatchCriteria = null;

    int minAutoMatchPlayers = intent.getIntExtra(
            Multiplayer.EXTRA_MIN_AUTOMATCH_PLAYERS, 0);
    int maxAutoMatchPlayers = intent.getIntExtra(
            Multiplayer.EXTRA_MAX_AUTOMATCH_PLAYERS, 0);


    if (minAutoMatchPlayers > 0) {
        autoMatchCriteria = RoomConfig.createAutoMatchCriteria(
                minAutoMatchPlayers, maxAutoMatchPlayers, 0);
    } else {
        autoMatchCriteria = null;
    }


    TurnBasedMatchConfig tbmc = TurnBasedMatchConfig.builder()
            .addInvitedPlayers(invitees)
            .setAutoMatchCriteria(autoMatchCriteria).build();

    // Start the match
    Games.TurnBasedMultiplayer.createMatch(mGoogleApiClient, tbmc).setResultCallback(
            new ResultCallback<TurnBasedMultiplayer.InitiateMatchResult>() {

                @Override
                public void onResult(@NonNull TurnBasedMultiplayer.InitiateMatchResult result) {
                    dismissSpinner();
                    processResult(result);
                    Log.d(TAG, "create match :" + String.valueOf(result.getMatch().getDescriptionParticipant()));
                }
            });
    showSpinner();
}

【问题讨论】:

标签: android-studio google-play-games multiplayer


【解决方案1】:

如果您还没有这样做,您可能需要先访问Adding Turn-based Multiplayer Support to Your Android Game,其中建议您也查看turn-based multiplayer game concepts

如上所述,在开始编写回合制多人游戏之前:

一旦玩家登录并连接GoogleApiClient,您的游戏就可以开始使用回合制多人 API。

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2013-06-19
    相关资源
    最近更新 更多