Android : How to properly cancel a realtime multiplayer match?

on Tuesday, July 8, 2014


How to properly cancel a realtime multiplayer match if the user cancels the match during the waiting room phase? At this time, there isn't a "room id" to call the leave API.


First a quick game is created:



Bundle am = RoomConfig.createAutoMatchCriteria(1, 1, 0);
RoomConfig.Builder roomConfigBuilder = configRoom();
roomConfigBuilder.setAutoMatchCriteria(am);
RoomConfig roomConfig = roomConfigBuilder.build();
Games.RealTimeMultiplayer.create(getApiClient(), roomConfig);


Then onRoomCreated is triggered and a waiting room is showed:



Intent i = Games.RealTimeMultiplayer.getWaitingRoomIntent(getApiClient(), room, Integer.MAX_VALUE);
startActivityForResult(i, RC_WAITING_ROOM);


After that the user presses back, canceling the match. Then onActivityResult is triggered with RC_WAITING_ROOM and responseCode == Activity.RESULT_CANCELED.


The problem is that the match is still there, waiting for another player. If someone also starts a quick game 10 minutes later, the game will start!


How do I clean it after the user cancels?


0 comments:

Post a Comment