Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Google Play Game Servicesについて

9,036 views

Published on

Published in: Technology, Business
  • Be the first to comment

Google Play Game Servicesについて

  1. 1. 石井 健三  Google  Play  Game  Services
  2. 2. Android、iOS、WEBで作られたゲームに、Google+のIDでログインさせることで以下の機能を追加し、サークル上の友人達とゲームの体験を共有出来る •  Achievements(実績)  •  Social  and  public  leaderboards(ランキング)  •  Cloud  saves(クラウド上へのデータの保存)  •  Real-­‐Eme  mulEplayer(リアルタイム対戦)  ←現在Androidのみサポート
  3. 3. Google  playのデベロッパーコンソール上でゲームの追加を行う。  実績やランキングの設定と、Android,iOS,Web用それぞれでGoogle+を  利用するためOauthキーの発行も行う 新しいデベロッパーコンソールで  ゲームの追加
  4. 4. Android Play  ServicesはFroyo(2.2)以上で利用が可能。拡張ライブラリを組み込むことで利用する  GameClientと呼ばれる大きなメインクラスがあり、  AcEvityから利用し、各種機能を呼び出し、Callbackを受け取る
  5. 5. //  Leaderboardへのデータの登録  mGamesClient.submitScore(LEADERBOARD_ID,  1337); //  Leaderboardの表示(AcEvityはライブラリに含まれている)  startAcEvityForResult(                      mGamesClient.getLeaderboardIntent(LEADERBOARD_ID),                                            REQUEST_LEADERBOARD);  AndroidでLeaderboard(ランキング)を扱う例
  6. 6. NaEveでの利用方法  NaEveAcEvityを拡張してJNIで呼び出す
  7. 7. iOS Google+用のSDKとPlay  Game  Services用のSDKを組み込めば簡単に利用出来る  (マルチプレイヤー以外)Androidと同程度のライブラリが用意されている  //  Leaderboardの表示(ViewControllerはライブラリに含まれている)    -­‐  (IBAcEon)showLeaderboard:  (UIBuon  *)sender  {        //  You  get  this  leaderboard  Id  from  the  Developer  Console      GPGLeaderboardController  *leadController  =  [[GPGLeaderboardController  alloc]  initWithLeaderboardId:@"abcde"];      leadController.leaderboardDelegate  =  self;      [self  presentModalViewController:leadController  animated:YES];  }
  8. 8. WEB お好きな言語、ライブラリでOauth認証し、RESTで各種APIを呼び出す  (マルチプレイヤー以外)全ての情報にアクセス出来るので、ランキング情報をWEBで  公開したりといった使い方も出来る  
  9. 9. サンプルプロジェクト Githubにいくつかのサンプルアプリが登録されています。  hps://github.com/playgameservices/android-­‐samples また、Google  I/O会場で行われたコードラボも公開されています。  こちらを上から順番にやっていくことで一通りの動作を試す事が出来ます。    hp://wolffexperiments.appspot.com/staEc/io2013/lesson0.html  
  10. 10. リアルタイム対戦(Android)
  11. 11. マルチプレイは  room  と呼ばれる概念の中で行われる。始め方は大きく3通りあり、  自分でroomを作成し、ランダムで人を招待する方法(quick  game)、  自分でroomを作成し、特定の人を選択して招待する方法(send  invitaEon)、  他人の作ったroomに参加する方法(show  invitaEons)がある。  
  12. 12. 友人を招待することでルームを作成する
  13. 13. //  get  the  invitee  list                  final  ArrayList<String>  invitees  =  data.getStringArrayListExtra(GamesClient.EXTRA_PLAYERS);    //  create  the  room                  Log.d(TAG,  "CreaEng  room...");                  RoomConfig.Builder  rtmConfigBuilder  =  RoomConfig.builder(this);                  rtmConfigBuilder.addPlayersToInvite(invitees);                  rtmConfigBuilder.setMessageReceivedListener(this);                  rtmConfigBuilder.setRoomStatusUpdateListener(this);                  if  (autoMatchCriteria  !=  null)  {                              rtmConfigBuilder.setAutoMatchCriteria(autoMatchCriteria);                  }                  switchToScreen(R.id.screen_wait);                  keepScreenOn();                  resetGameVars();                  getGamesClient().createRoom(rtmConfigBuilder.build());                  Log.d(TAG,  "Room  created,  waiEng  for  it  to  be  ready..."); ユーザ選択AcEvityの結果からRoomを作成する。  Roomを作成する際に、ユーザーの増減やメッセージの受信を行う  Listenerを設定する。
  14. 14. アプリがインストールされていない場合は  Google  Play  ストアへ    アプリがインストールされている場合は  アプリが立ち上がる 招待された側には通知が飛ぶ
  15. 15. Roomに参加する。  招待された側はIDが通知されているので、それを使ってRoomに加わる ユーザーの増減やメッセージ受信を行うListenerの設定は  自分でRoomを作成する時と同じ
  16. 16. Room内でのメッセージの受け渡しはユーザー同士のp2pで行われるが、  ファイアウォールなどで通信出来ない場合はGoogleのサーバーがリレーする Roomの作成が終わったら、マルチプレイを開始する。  多人数でゲームをするということは、メッセージのやりとりを行うということ。
  17. 17. メッセージの送信方法は2種類あり、ネットワークのTCPとUDPに似ている Reliableメッセージは1対1の送受信に使う。送信後にcallbackで送信結果を受け取る事が出来る  Unreliableメッセージは複数人に同時に送信する事が出来るが、送信結果を受け取る事が出来ない
  18. 18. メッセージの受信はRoom作成時に設定したcallbackで受け取る

×