石井 健三	
  
Google	
  Play	
  Game	
  Services
Android、iOS、WEBで作られたゲームに、Google+のIDでログインさせることで以下の機
能を追加し、サークル上の友人達とゲームの体験を共有出来る	
•  Achievements(実績)	
  
•  Social	
  and	
  public	
  leaderboards(ランキング)	
  
•  Cloud	
  saves(クラウド上へのデータの保存)	
  
•  Real-­‐Eme	
  mulEplayer(リアルタイム対戦)	
  ←現在Androidのみサポート
Google	
  playのデベロッパーコンソール上でゲームの追加を行う。	
  
実績やランキングの設定と、Android,iOS,Web用それぞれでGoogle+を	
  
利用するためOauthキーの発行も行う	
新しいデベロッパーコンソールで	
  
ゲームの追加
Android	
Play	
  ServicesはFroyo(2.2)以上で利用が可能。拡張ライブラリを組み込むことで利用する	
  
GameClientと呼ばれる大きなメインクラスがあり、	
  
AcEvityから利用し、各種機能を呼び出し、Callbackを受け取る
//	
  Leaderboardへのデータの登録	
  
mGamesClient.submitScore(LEADERBOARD_ID,	
  1337);	
//	
  Leaderboardの表示(AcEvityはライブラリに含まれている)	
  
startAcEvityForResult(	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  mGamesClient.getLeaderboardIntent(LEADERBOARD_ID),	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  REQUEST_LEADERBOARD);	
  
AndroidでLeaderboard(ランキング)を扱う例
NaEveでの利用方法	
  
NaEveAcEvityを拡張してJNIで呼び出す
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];	
  
}
WEB	
お好きな言語、ライブラリでOauth認証し、RESTで各種APIを呼び出す	
  
(マルチプレイヤー以外)全ての情報にアクセス出来るので、ランキング情報をWEBで	
  
公開したりといった使い方も出来る	
  
サンプルプロジェクト	
Githubにいくつかのサンプルアプリが登録されています。	
  
hps://github.com/playgameservices/android-­‐samples	
また、Google	
  I/O会場で行われたコードラボも公開されています。	
  
こちらを上から順番にやっていくことで一通りの動作を試す事が出来ます。	
  
	
  
hp://wolffexperiments.appspot.com/staEc/io2013/lesson0.html	
  
リアルタイム対戦(Android)
マルチプレイは	
  room	
  と呼ばれる概念の中で行われる。始め方は大きく3通りあり、	
  
自分でroomを作成し、ランダムで人を招待する方法(quick	
  game)、	
  
自分でroomを作成し、特定の人を選択して招待する方法(send	
  invitaEon)、	
  
他人の作ったroomに参加する方法(show	
  invitaEons)がある。	
  
友人を招待することでルームを作成する
//	
  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を設定する。
アプリがインストールされていない場合は	
  
Google	
  Play	
  ストアへ	
  
	
  
アプリがインストールされている場合は	
  
アプリが立ち上がる	
招待された側には通知が飛ぶ
Roomに参加する。	
  
招待された側はIDが通知されているので、それを使ってRoomに加わる	
ユーザーの増減やメッセージ受信を行うListenerの設定は	
  
自分でRoomを作成する時と同じ
Room内でのメッセージの受け渡しはユーザー同士のp2pで行われるが、	
  
ファイアウォールなどで通信出来ない場合はGoogleのサーバーがリレーする	
Roomの作成が終わったら、マルチプレイを開始する。	
  
多人数でゲームをするということは、メッセージのやりとりを行うということ。
メッセージの送信方法は2種類あり、ネットワークのTCPとUDPに似ている	
Reliableメッセージは1対1の送受信に使う。送信後にcallbackで送信結果を受け取る事が出来る	
  
Unreliableメッセージは複数人に同時に送信する事が出来るが、送信結果を受け取る事が出来ない
メッセージの受信はRoom作成時に設定したcallbackで受け取る

More Related Content

PDF
Google Play Game Serviceで遊んでみた
PDF
冬だからAndroid再入門
PDF
enchant.js meetup Tokyo vol.2 Tutorial
PDF
-入門- enchant.js でゲームを作ろう
PDF
俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない
PPTX
New android location ap is
PPT
Dive Into Google Glass
PDF
Google I/O 2013 報告会 Android Studio と Gradle
Google Play Game Serviceで遊んでみた
冬だからAndroid再入門
enchant.js meetup Tokyo vol.2 Tutorial
-入門- enchant.js でゲームを作ろう
俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない
New android location ap is
Dive Into Google Glass
Google I/O 2013 報告会 Android Studio と Gradle

Viewers also liked (10)

PPTX
Whats new in_play
PDF
DM33 Warszawa
PDF
I pad ebook_final
DOC
131759025 modul-bm-1-bhg-b
PDF
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
PDF
Android lint-srp-practice
PDF
What is tested by pre-launch (security) reports?
PDF
全てSになる -RxJavaとLWSを持ち込む楽しさ-
PDF
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
PDF
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Whats new in_play
DM33 Warszawa
I pad ebook_final
131759025 modul-bm-1-bhg-b
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
Android lint-srp-practice
What is tested by pre-launch (security) reports?
全てSになる -RxJavaとLWSを持ち込む楽しさ-
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Ad

Similar to Google Play Game Servicesについて (6)

PDF
Gunmaweb#15 High score combination
ODP
ぼくはきみの盾-Redmine編
PDF
0621 ndk game
PDF
[GCC18] 世界中のプレイヤーを3つの「S」で支える Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
PDF
ソーシャルゲーム開発パッケージ化とネイティブアプリの取り組みと開発ノウハウ
PPT
Gamecenter概説
Gunmaweb#15 High score combination
ぼくはきみの盾-Redmine編
0621 ndk game
[GCC18] 世界中のプレイヤーを3つの「S」で支える Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
ソーシャルゲーム開発パッケージ化とネイティブアプリの取り組みと開発ノウハウ
Gamecenter概説
Ad

Google Play Game Servicesについて