Progression Snapshot インターフェース

Progression Snapshot インターフェースを使用して Epic アカウントをマージする

Progression Snapshot インターフェース

Progression Snapshot (進行状況スナップショット) インターフェースでは、Epic アカウントを結合する際のユーザー エクスペリエンスをサポートする目的で、プレイヤー固有のゲーム データを格納することができます。現在のところ、同一のユーザーが所有する 2 つの個別の Epic アカウントを単一の Epic アカウントに結合するという考え方はありません。ただし、こういったアカウントの結合機能は、今後、Epic アカウントのユーザーに提供される予定です。

進行状況スナップショット機能の対象となるのは、ユーザーが 2 つの個別の Epic アカウントを所有しており、両方のアカウントで同一ゲームをプレイしている場合です。このような場合に、ユーザーが自分の複数の Epic アカウントを単一のアカウントに結合することを選択すると、Epic オーバーレイで、両方のアカウントのゲームの進捗状況のスナップショットを表示できるようになります。この表示により、アカウントの結合処理の結果として、自分が保持したい方のゲームの進行状況を選択することができます。

アカウントの結合は、既存の Epic アカウントをすでに所有しているものの、Epic Games ストア以外で、問題なく使用できる新しい Epic 「プロキシ」アカウントをインゲームで作成したユーザーが対象となります。

インゲームで作成した Epic の「プロキシ」アカウントを既存の Epic アカウントに結合すると、ソーシャル グラフ、Ecom の利用資格、リンク済みアカウントなどのアカウント情報を統合きます。

Epic アカウントの結合の詳細と制限、およびユーザー エクスペリエンスについては、エンドユーザーにこの機能が提供されるまでに、新たにドキュメントを提供する予定です。現時点では、アカウントの結合の準備として、ゲームで事前に進行状況スナップショットのレコーディングを開始することができます。これは、アカウントの結合を行った結果、両方のアカウントでゲームの進行状況に矛盾が生じる可能性があるユーザーをサポートできるようにするためです。

進行状況スナップショットの使用方法

進行状況スナップショットは、デベロッパーには、ゲーム プレイ時に関連ゲームの進行状況データを Epic Online Services のバックエンドに記録する手段を提供します。この情報は、キー/値ペアの形式で、進行状況が交差する環境でアカウントを結合する必要がある可能性のあるユーザーには、背景情報を提供します。ユーザーは、両方のアカウントを使用してプレイしたゲームの進行状況を並べて比較し、どちらの進行状況を保持するかを選択することができます。

alt_text

エンドユーザー エクスペリエンスのモックアップ設計は変更になる場合があります。進行状況スナップショット データは、インゲームの Epic オーバーレイ エクスペリエンスで Epic アカウントの結合プロセスの一部として表示されます。

キー/値ペアはバックエンドにそのまま格納されるため、格納されたデータのローカライゼーションが必要な場合は、当該ゲームがローカライゼーションを担う必要があります。

キー/値ペアは、「CharacterLevel:10」などわかりやすいものを使用することをお勧めします。また、「Game Completion:72%」など、各種変数に基づいてトータルの進行状況値を算出することもできます。

選択されたアカウント ID

アカウント結合時の進行状況スナップショットとユーザーの選択は、アプリケーションスコープです。そのため、ユーザーは、新たに導入された 選択された Epic アカウント ID という概念を使用して、各ゲームのゲーム進行状況の選択を個別に行うことができます。選択された Epic アカウント ID は新しい Epic アカウント識別子で、ユーザーがそのアプリケーションで使用することを選択した Epic アカウント ID がログイン時に設定されます。これは常に Epic アカウント ID と同じ値に設定されます。または、ユーザーがアカウントの結合処理を行って、選択を行わなければならなかった場合は、アプリケーションがすべてのゲームスコープ データに使用する必要のある Epic アカウント ID に設定されます。

ユーザーのゲーム進行状況スナップショットを格納する

ローカル ユーザーの進行状況スナップショットは、1 ゲーム セッションに 1 回バックエンドに送信する必要があります。推奨されるタイミングは、ローカル ユーザーがログインして現在のゲーム状態が正常にロードされたときです。さらに、ゲームで大きな進捗があったとき (レベル アップ、対戦、ステージ クリアなど) は毎回送信することが推奨されます。

進行状況スナップショットを更新するたびに、これまで格納されていたスナップショットは完全に上書きされます。たとえば、前のスナップショットに 4 つのキー/値ペアが含まれており、新しいスナップショットに 3 つのキー/値ペアしか含まれていない場合、結果のスナップショットには、スナップショットが更新された 3 つのキー/値ペアが含まれます。

最初の進行状況スナップショットの作成、または既存のスナップショットの更新は、同一のアプリケーション コード フローで実行されます。まず、 EOS_ProgressionSnapshot_BeginSnapshot API を使用して、 EOS_ProgressionSnapshot_BeginSnapshotOptions 構造体にローカル ユーザーの EOS_ProductUserId を渡すことで、ローカルのスナップショット状態を初期化します。

次に、 EOS_ProgressionSnapshot_AddProgressionOptions API を使用して、 EOS_ProgressionSnapshot_AddProgressionOptions 構造体に SnapshotId とキー/値ペアを渡すことで、ゲームの状態を表すキー/値ペアをスナップショット データとして追加します。この API は、進行状況スナップショットに追加する必要のあるキー/値ペアごとに 1 回呼び出す必要があります。スナップショットに追加されるキー/値ペアの順序は、最終的に Epic オーバーレイでユーザーに表示される順序になります。最重要情報を最初に渡すことで、ユーザーが、知りたい進行状況をより迅速に特定できます。

完全なスナップショット データを設定した後、 EOS_ProgressionSnapshot_SubmitSnapshot API を使用して、 EOS_ProgressionSnapshot_SubmitSnapshotOptions 構造体に SnapshotId を渡すことで、収集したスナップショットをバックエンドにアップロードします。

最後に、 EOS_ProgressionSnapshot_EndSnapshot API を使用して、 EOS_ProgressionSnapshot_EndSnapshotOptions 構造体に SnapshotId を渡すことで、SDK によって割り当てられた内部メモリ リソースを解放します。

ユーザーのゲーム進行状況スナップショットを削除する

前に格納された進行状況スナップショットを新しい状態に更新する前に削除する必要はありません。ただし、統合テストなどの目的で進行状況スナップショットを削除する必要がある場合は、ゲーム クライアントでローカル ログイン ユーザーの進行状況スナップショットを削除することはできます。

なお、削除操作は、既存のスナップショットの更新と同様に永続的な処理であるため、元に戻すことはできません。

ローカル ログイン ユーザーの格納済みの進行状況スナップショットを削除するには、 EOS_ProgressionSnapshot_DeleteSnapshot API を使用して、 EOS_ProgressionSnapshot_DeleteSnapshotOptions 構造体に EOS_ProductUserId を渡します。

バックエンド データが正常に削除されると、アプリケーションから渡された CompletionDelegateEOS_EResult::EOS_Success の結果ステータスを返します。ユーザーの進行状況スナップショット データが存在しない場合は、 EOS_EResult::EOS_NotFound が返されます。