Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Play Game Services multiplayer with Activity switching

In my Android game I have a turn-based multiplayer. Users wait for opponents in the lobby and whenever exactly 3 are matched, they go to a new game room together, which is another Activity than the lobby.

The docs suggest to let the Activities extend BaseGameActivity. But as I switch the Activity while players are already connected, don'I need to place the connectivity parts in a Service which my Activity then binds to?

Has anyone tried already with Game Services? How to begin if I can't use BaseGameActivity?

like image 474
caw Avatar asked May 24 '13 00:05

caw


People also ask

Is Google Play Games shutting down?

Google has announced on a new support page that Play Games Services has begun ramping down its multiplayer APIs, with a final shutdown set for March 31st. Starting today, developers will be unable to add Play Games Services' real-time and turn-based multiplayer to their new apps.

How do you play multiplayer on Google Play Games?

To enable multiplayer support: Open the Games with Game Services page from the Google Play Developer Console, and select your game. Open the Linked apps page for your game, then switch the multiplayer setting to ON.

How do you stop Google Play Games pop up?

Near the top left, touch the Play Games icon Google Play Games. Touch Settings. Change your notification settings. Note: To turn off all Play Games notifications, you can uncheck the boxes next to all notification options.

How do I hide games on Google Play?

On an Android phone or tablet On your device, open the Settings app. Play Games. Under 'Profile and privacy', choose who can view your activity: Everyone on Google Play Games.


3 Answers

I am in the process of developing a multiplayer game using these new Google Play Game Services. It includes achievements and leaderboards, along with multiplayer.

From the button click sample project, I found that they (Google) used fragments extensively, and stayed within the bounds of a single activity. In my custom game, I jump between activities without a problem.

You'll need to keep a few portions of Google Play Game Services objects around, but a service might be overkill, unless your game requires long-running non-UI code to be executed. From what I've experienced, if you switch between activities, you'll want to keep the id of the Room(s) and participant id(s) that are currently involved in the game.

Since the "connectivity parts" are stateless, just reconnect as needed. You can even pass the room/participant id(s) in to each activity via the Intent bundle (or use the singleton pattern approach). This way, you'll save on battery life, performance, etc.

like image 31
MiStr Avatar answered Oct 21 '22 13:10

MiStr


So, one of the reasons we wrote all the Google Play game services samples as single-Activity games is because switching between Activities require you to disconnect from the GamesClient and connect a new one from the new Activity.

So using Fragments is probably the easiest way to go about this. It's also pretty clean and allows you to make a tablet layout by combining them if you want to.

In particular, if you are setting up a multiplayer game, disconnecting will disconnect you from the room, so you can't switch to a different Activity after starting the handshake :-)

like image 121
Bruno Oliveira Avatar answered Oct 21 '22 13:10

Bruno Oliveira


The documentation explains how to use the Game Services without the BaseGameActivity whenever is needed.

For example, during signin:

https://developers.google.com/games/services/training/signin

Clicking the Sign in button should initiate the sign in flow. If you are using the BaseGameActivity base class provided in the samples, simply call the beginUserInitiatedSignIn() method. Otherwise, you must manually call the connect() method of your GamesClient object.

For your specific question, I don't think it is an issue, all the control is inside Google Play, you just need to get the GamesClient and as far as I understood, the connection made on one activity will be there if you access it from another activity (but I didn't test the multiplayer yet).

like image 28
thiagolr Avatar answered Oct 21 '22 13:10

thiagolr