このページでは、Play ゲームサービスのログインを既存の ID ソリューションまたはクラウド保存ソリューションと統合する方法について説明します。ここで紹介する推奨事項は必須ではありませんが、PC 版 Google Play Games のクラウド保存要件を遵守するのに役立ちます。連続性要件と想定される動作のページに基づいて、実装がこれらの要件を遵守していることをご確認ください。
プレーヤーの状態の復元
ゲームのバックエンドでは、ゲーム アカウントはなんらかの識別子によって表されることが多く、この識別子に基づいてゲーム内でのユーザーの進行状況を取得、更新できます。これを略してアカウント ID と呼びます。プレーヤーが Play ゲームサービスにログインしたら、その認証を使用して新しい識別子である Play ゲームサービス プレーヤー ID を取得できます。この ID を使用してクラウド保存要件を強化します。
プレーヤーが Play ゲームサービスにログインしたら、引き続き以下の手順を実施します。
- クライアントから OAuth コードを取得してサーバーに送信します。
- 認証トークンを交換し、Play ゲームサーバーから確認済みの Play ゲームサービス ID を取得します。これにより、ID が信頼され、不正侵入されたデバイスを使用して他のプレーヤーになりすますことを防止できます。
- デバイスの状況やリンクされている識別子に基づいてゲーム アカウントの解決を試みます。
主に次の 2 つの新しいシナリオをゲームに導入する必要があります。
- Play ゲームサービス ID をバックエンドに保存し、以下のように、なんらかの方法で既存のアカウント ID に割り当てます。
- 新規プレーヤーの場合は、進行状況をどこかの時点で Play ゲームサービスに自動的にリンクする必要があります(ゲームの開始時、チュートリアルの後、一定数のレベルに達した後など)。
- 既存のプレーヤーの場合は、プレーヤーがゲームを Play ゲームサービス V2 が統合されたバージョンに更新した後、現在の進行状況を Play ゲームサービスに自動的にリンクする必要があります。
- Play ゲームサービス ID は 1 つ以上のアカウントとリンクできます。Play ゲームサービス ID とこれらのアカウントとのリンクの解除は可能ですが、少なくとも 1 つの有効なアカウントにリンクしておく必要があります。
- ゲームの進行状況は、Play ゲームサービスのプレーヤー ID に基づいて、ログアウトしたデバイスまたは新しいデバイスで自動的に復元されます。
下記の例に示すように、Play ゲームサービス ID を保存して既存のアカウントに割り当てる方法には柔軟性があります。注意すべき主な要件は、Play ゲームサービス ID とゲームの進行状況とのリンクを作成するために、プレーヤーが手動でログインしたり別の ID システムとのリンクを作成したりする必要がないようにすることと、プレーヤーの進行状況をサーフェス間でシームレスに復元することです。
ソリューションを設計する際は、既存のシステムと、それにさまざまな ID プロバイダがどのように組み込まれているかを確認します。アカウントごとに 1 つの識別子を使用するシステムもあれば、アカウントごとに複数の識別子を使用するシステムもあります。
各アカウント ID を関連付けることができる識別子が 1 つのみの場合は、Play ゲームサービスを関連付けるためのサポートを追加する必要があります。以下のソリューションで、その方法について説明します。
ソリューションの例
ソリューションの例には、バインディング ソリューションと再現ソリューションがあります。
バインディングとは、Play ゲームサービス ID とアカウントの状態を永久的または半永久的にリンクするプロセスです。バインディングの場合、プレーヤーがゲーム内で別のアカウントでログアウト、ログインしても、Play ゲームサービスを介して復元されるベースとなるアカウントはプレーヤーが操作しなければ変更されません。ここでは、アカウントのバインディングで説明します。
再現の場合、ゲーム デベロッパーは、プレーヤーの Play ゲームサービス ID と最後に確認されたアカウントとのルーズなマッピングを保存し、プレーヤーが別のデバイスで Play ゲームサービスにログインした場合に復元します。プレーヤーが同じ Play ゲームサービス ID で別のゲーム アカウントにログインするたびに、このバインディングは変更されます。下記のフローチャートの例で、最新のアカウントの再現について詳しく説明します。
ユーザーフローのその他の例は、下記の各ソリューションに付属しています。
アカウントのバインディング
ゲームで複数のアカウントを使用するプレーヤーがあまりいない場合や、ゲーマーがゲーム内で 1 つのアカウントのみを使用するようにしたい場合は、ゲームのソリューションとしてバインディングを使用することをおすすめします。この例では、Play ゲームサービスでログインしたときに確認された最初のアカウント(ゲスト アカウントまたは別の ID プラットフォームにバインドされたアカウント)を Play ゲームサービスのプレーヤー ID にバインドしています。このバインド以後、そのバインドされたアカウントは新しいデバイスで自動的に復元されます。強いバインドを行っているため、プレーヤーは Play ゲームサービス プロフィールを切り替えてゲーム内のアカウントを変更することもできます。このシナリオでは、プレーヤーに確認を求めるメッセージを表示できます。
競合するアカウントがある場合は、アカウントの選択をプレーヤーに求めることをおすすめします。このような競合があるケースはゲームに複数のアカウントを持つプレーヤーにのみ発生します。そのため、これらのプレーヤーは競合を認識しており、特定のアカウントを使ってプレイすることを望んでいる可能性があります。
アカウントが解決したら、ログイン ID が変更されない限り、プレーヤーの選択をゲームで記憶する必要があります。Play ゲームサービス プロフィールが変更された場合、またはプレーヤーがゲーム内で別の ID にログインした場合は、アカウントを変更したいという強い意志がプレーヤーにあるため、上の手順を繰り返す必要があります。
バインドの解除
プレーヤーのバインディングをプレーヤー自身で完全に管理できるようにする場合は、Play ゲームサービスのプレーヤー ID とゲーム アカウントとのバインドを解除する機能をプレーヤーに提供します。複数のアカウントを使用するプレーヤーが、メイン アカウント以外のアカウントに Play ゲームサービスのプレーヤー ID を誤ってバインドした場合、この機能が重要になる可能性があります。
アカウントのバインディングに関するその他の例
このメインの例は、特定の Play ゲームサービスのプレーヤー ID(1)が、確認された最初のゲーム内アカウント(A)にバインドされ、そのプレーヤーが別のアカウントでプレイするために進行中のゲームからログアウトしてもバインドし直されない、ということを示しています。
プレーヤーがアカウントをバインドし直せるようにすることもできますが、必須ではありません。
デバイスでのアカウントの切り替え
ここでは、プレーヤーが Play ゲームサービス アカウントを手動で切り替えたため、ゲーム内アカウントを別のアカウントに変更したいというプレーヤーの強い意志がゲームに伝わります。この変更への対応はプレーヤーが希望していることであるため、その意思を汲み取ることはプレーヤー エクスペリエンスの向上につながります。
別の識別子を持つ既存のバインド済みアカウント
この例は、Play ゲームサービス以外の識別子にバインドされているアカウントでも、Play ゲームサービスにバインドしてから新しいデバイスで復元する必要があることを示しています。複数のアカウントを持つ既存のゲーム プレーヤーのほとんどはこのカテゴリに分類されます。
最新のアカウントの再現
ソリューションを検討する場合に、よく出てくるのがマルチ アカウントのエクスペリエンスです。ゲームでパワーユーザーに複数のアカウントの作成を奨励している場合(たとえば、ガチャゲームや、独自のアドベンチャー ゲームの選択など)、Play ゲームサービスのプレーヤー ID と単一のアカウントをバインドする方法では、デバイス間を移動する際に最適なプレーヤー エクスペリエンスを提供できない可能性があります。
再現のソリューションでは、Play ゲームサービスのプレーヤー ID とゲーム内アカウントとのルーズなマッピングを保存するため、プレーヤーには、デバイスを切り替えたときやログアウトしたときに保存された最後のアカウントのみが表示されます。
この例では、ゲーム用に 3 つのアカウントを所有しているプレーヤーが、新しいデバイスに移動しています。
プレーヤーに復元を求めるメッセージを表示する場合は、プレーヤーが新しいアカウントを作成するかどうかを選択できるよう「キャンセル」ボタンや「新規作成」ボタンも用意できます。
簡潔にするため、最後に確認されたアカウントを再現するだけでも構いません。複数のアカウントを切り替えるユースケースではさらに難しくなる可能性がありますが、それでも連続性要件は満たしています。
再現のその他の例
次のセクションでは、再現を使用したその他の例について説明します。
Android 以外のスマートフォン
ここでは、すでに存在する(サードパーティのアカウントにリンクされている)アカウント、または Play ゲームサービス以外でログインしている別のデバイスで作成されたアカウントの両方の再現方法について説明します。
よくあるフローとして、Android 以外のスマートフォンから PC 版 Google Play Games に移行する場合があります。
Android 以外のスマートフォンに Play Games サービスはインストールされていないため、再現は行えません。プレーヤーは PC 版 Google Play Games 内から手動で認証情報を入力する必要があります。
1 つのアカウントに対する複数の Play ゲームサービス プロフィール
特定のアカウントを以前「再現」したことのあるアクティブな Play ゲームサービス プロフィールが複数存在する場合があります。この場合は、主に 2 つのソリューションがあり、どちらも同じように使用できます。
このまま保存する 「このまま保存する」モデルでは、特定のアカウントに対するポインタの重複は無視されます。
オーバーライドする 「オーバーライドする」モデルでは、デベロッパーは Play Games サービスとアカウントのマッピングを記憶し、「オーバーライドする」モデルのテーブルにある古いマッピングを消去する必要があります。これにより、再現されたアカウントと Play ゲームサービスのアカウントの 1 対 1 の完全なマッピングを保つことができます。
同一デバイスの再現 複数のアカウント プレーヤーは、再現の実装を使用して、ゲーム アカウントをすばやく切り替えることができます。