複数のデバイスでプレイし、同じデバイスにゲームを複数回インストールする。そのため、ゲームは常に最後の進行状況から開始する必要があります。これを実現するには、ゲームにクラウド保存ソリューションを実装する必要があります。
ゲームでは、2 つのパートからなるクラウド保存ソリューションを実装する必要があります。
クラウド セーブ
プレーヤーのゲームの状態をクラウドに保存します。ゲームの開始時に取得します。Play ゲームサービス 保存済みゲームは、このためのサービスを提供していますが、任意のクラウド保存ソリューションを使用することもできます。
複数のゲーム状態の競合解決
ユーザーが複数のアカウントを持っている場合や、デバイスとクラウドの保存済みゲームデータが競合している場合は、競合解決ポリシーが必要です。通常、ユーザーがこれらの競合を解決する方法を決定します。競合解決ポリシーでは、次の主なシナリオに対処する必要があります。
- ユーザーあたりの複数アカウント: 1 人のユーザーが異なるアカウントを使用してアプリを操作するインスタンスを処理します。
- 状態の競合: ローカルのゲームの状態とクラウドに保存されたゲームの状態との間に生じた不一致を解決します。
保存済みゲーム
保存済みゲームサービスを使用すると、プレーヤーのゲームの進行状況を Google のサーバーに簡単に保存できます。ゲームは保存されたゲームデータを取得して、リピーターがどのデバイスからでも前回のセーブポイントでゲームを続行できるようにします。
このサービスは、プレーヤーとデベロッパーの両方に次のようなメリットをもたらします。
- 複数のデバイス間でゲームデータを同期します。たとえば、Android スマートフォンでゲームを開始し、進行状況を失うことなくタブレットでシームレスにプレイを続けることができます。
- データの永続性を確保する。デバイスを紛失、破損した、または新しいモデルに移行した場合でも、プレーヤーはゲームを再開できます。
保存済みゲームをプラットフォームに実装する方法については、クライアントの実装をご覧ください。
保存済みゲームの基本
保存済みゲームは 2 つのパートで構成されます。
- 非構造化バイナリ blob - このデータは、任意のものを表すことができ、ゲームはこれを解析して書き込みを行います。
- 構造化メタデータ - Google Play Games サービスでデフォルトの保存済みゲームリスト ユーザー インターフェース(UI)に視覚的にゲームを表示し、有用な情報(最終更新日のタイムスタンプなど)を Google Play Games アプリに表示させるバイナリデータに関連付けられている追加のプロパティ。
ゲームは、ユーザー割り当てに応じて、1 人のプレーヤーに対して任意の数の保存済みゲームを書き込むことができるため、プレーヤーのセーブファイルを 1 つに制限する必要はありません。
カバー画像
保存済みゲームサービスは、永続性に加えて視覚的なユーザー エクスペリエンスを実現します。代表的な画像を対応するセーブファイルに関連付けることを強くおすすめします。ゲームで Play Games SDK に用意されたデフォルトの保存済みゲームリスト ユーザー インターフェース(UI)を使用している場合、UI にはこれらのカバー画像が表示されます。カバー画像は Google Play Games アプリにも表示される場合があります。
説明
特定の保存済みゲームのコンテンツについてテキストによる簡単な説明を入力できます。この説明はプレーヤーに直接表示されます。保存されたゲームが表す状態を要約したものにします。例: 「暗闇の森でゴブリンと対戦中」。
割り当て
クラウドに保存されている保存済みゲームデータについては、デベロッパーは課金されません。代わりに、このデータはプレーヤーの Google ドライブの割り当てにカウントされます。デベロッパーに配慮していただく必要はありません。ゲーム デベロッパーの皆さんに留意していただく必要がある割り当ては、Google Drive API の割り当てのみです。
読み取り / 書き込みの分離
保存済みゲームはすべて、プレーヤーの Google ドライブ アプリケーション データフォルダに保存されます。このフォルダはゲームでのみ読み書きが可能であり、他のデベロッパーのゲームでは表示、変更できないため、データの破損に対する保護を強化できます。また、保存済みゲームは、プレーヤーによる直接の改ざんから保護されており、プレーヤーは個別の保存済みゲームを変更することはできません。
オフライン サポート
プレーヤーのデバイスがオフラインの場合でも、保存済みゲームに対する読み書きは可能ですが、ネットワーク接続が確立されるまで Google Play Games サービスと同期できません。再接続されると、Google Play Games サービスは、Google のサーバーに保存されているゲームデータを非同期で更新します。
紛争解決
保存済みゲームサービスを使用している場合は、データを保存しようとするとゲームが競合する可能性があります。このような競合は、ユーザーが異なるデバイスやパソコンで複数のアプリケーション インスタンスを実行している場合に発生する可能性があります。アプリは、最適なユーザー エクスペリエンスを提供する方法で、これらの競合を解決できる必要があります。
通常、データの競合は、データの読み込みまたは保存中に、アプリのインスタンスが保存済みゲームサービスにアクセスできない場合に発生します。一般に、データの競合を回避する最善の方法は、アプリケーションの開始時または再開時にサービスから常に最新のデータを読み込み、合理的な頻度でサービスにデータを保存することです。ただし、データの競合を回避することが常に可能であるとは限りません。アプリケーションは、ユーザーのデータが保持され、優れたエクスペリエンスが得られるように、競合に対処する必要があります。
制限
Google Play Games サービスは、バイナリデータのサイズ上限を適用し、それぞれ 3 MB と 800 KB の画像サイズをカバーしています。
保存済みゲームのメタデータ
保存済みゲームの構造化メタデータには、次のプロパティが含まれます。
プロパティ | 説明 |
---|---|
ID | この保存済みゲームに対して Google Play Games サービスによって生成された一意の文字列。この ID を使用して、ゲーム クライアントで保存済みゲームを参照します。 |
名前 | デベロッパーが指定した保存済みゲームの略称。「スロット 1 を保存」や「PlayerName_Save1」など。これはプレーヤーには表示されません。 |
説明 | デベロッパーが指定した保存済みゲームの説明。 |
最終更新 | 保存済みゲームが最後に更新された時点に対して Google Play Games サービスによって生成されたタイムスタンプ(ミリ秒単位)。 |
プレイ時間 | 保存済みゲームに表示する、デベロッパーが指定した時間(ミリ秒)。この値は、プレーヤーが対応する保存済みゲームをプレイした時間を表す必要があります。 たとえば、プレイ時間の値が 3,600,000 の場合は、Google Play Games サービスでは「1 時間」と表示されます。 |
カバー画像 | これは、カバー画像に関する情報を含む、デベロッパー指定の省略可能なプロパティです。 |
クライアントの実装
プラットフォームの保存済みゲームを実装する方法については、以下のリソースをご覧ください。