UnityでGoogle Play Gamesが利用できるプラグイン Google Play Games plugin for Unity を使ってみたので、忘備録もかねて。
この記事では、"Invitation"、"Create or Join a Room" と "Real-Time Multiplayer" まわりについて書きます。
導入などの準備はすっ飛ばしますのでその辺は Unity Google Play Services まとめ - tetu式 や play games plugin for Unityを使ってみよう(Android版) - テラシュールブログ などの記事を参考にするといいと思います。
なお、この記事を書いている時点でバージョンは0.9.12です。
この記事は未完です。少しずつ書いていきます。
Invitation(招待)
文字通りほかのユーザーをゲームに招待する機能です。招待を承諾するとそのままマルチプレイヤーへ遷移するような設計になっています。
ユーザーを招待する
Create with invitation screen より
const int MinOpponents = 1, MaxOpponents = 3;
const int GameVariant = 0;
PlayGamesPlatform.Instance.RealTime.CreateWithInvitationScreen(MinOpponents, MaxOpponents, GameVariant, listener);
- MinOpponents : 最小の相手プレイヤーの人数
- MaxOpponents : 最大の相手プレイヤーの人数
- GameVariant : 招待したいゲームモードのタイプ、これはゲーム側で自由に設定
- listener : RealTimeMultiplayerListenerインターフェイスを実装したクラス、実装については後ほど
招待を受ける
inbox(招待の履歴のようなもの?)から受ける
ゲームをプレイしていないとき招待を受けると、通知領域に通知&inboxに保存されます。
PlayGamesPlatform.Instance.RealTime.AcceptFromInbox(listener);
- listener : RealTimeMultiplayerListenerインターフェイスを実装したクラス、実装については後ほど
ゲーム中に受ける
招待を受けるために、招待が来た場合のコールバックメソッドを登録しておきましょう。
以下のコードを PlayGamesPlatform.Activate();
の前に記述します。
var config = new PlayGamesClientConfiguration.Builder()
.WithInvitationDelegate(OnReceivedInvitation) //招待を受けるとOnReceivedInvitationが呼ばれる
.Build();
PlayGamesPlatform.InitializeInstance(config);
OnReceivedInvitation
の構文は void OnReceivedInvitation(Invitation invitation, bool shouldAutoAccept)
です。
OnReceivedInvitation
に渡される Invitation
クラスには Variant
プロパティがあり、ここに GameVariant
の値が格納されています。
招待を拒否する
PlayGamesPlatform.Instance.RealTime.DeclineInvitation(invitationId);
- invitationId : 招待を受けた時に渡されたInvitationクラスのInvitationIdプロパティを渡す
ランダムマッチ
- また今度更新します。