メインコンテンツまでスキップ

プレイヤー属性を公開レコードに保存する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

Cloud Save サービスを使用すると、プレイヤーのデータを公開して保存できます。公開保存とは、他のプレイヤーが特定のプレイヤーのデータを読み取れるようにすることを意味します。保存したデータは JSON 形式で、取得、変更、削除が可能です。

保存されるデータは通常、他のプレイヤーに公開表示しても問題のない機密性のないデータであり、データに関するプライバシールールはありません。例えば、以下のようなデータを保存します。

  • プレイヤーのステータス、プレイヤー情報、職業、役割、ティア、レベルなどのプレイヤープロフィールデータ
  • プレイヤーがカスタマイズした武器のロードアウトなど

このガイドでは、プレイヤーレコードを利用してプレイヤーデータを公開保存し、ゲームクライアント内で表示し、ゲームのユースケースに応じて変更する方法を学びます。

目標

このセクションの目標は以下のとおりです。

  • 公開プレイヤーレコードの概要を理解する
  • 公開プレイヤーレコードにプレイヤーデータを保存する方法を理解する
  • 公開プレイヤーレコードを表示する方法を理解する
  • 公開プレイヤーレコードを変更する方法を理解する
  • 公開プレイヤーレコードを削除する方法を理解する
  • AccelByte SDK を使用して公開プレイヤーレコードを活用する方法を学ぶ

前提条件

以下へのアクセスが必要です。

  • 管理ポータル
  • AGS Unreal、Unity、または Extend SDK(必要な権限を含む)
    • クライアント ID
    • クライアントシークレット
  • AGS Cloud Save API ドキュメント

公開プレイヤーレコードにユーザーデータを保存する

ユーザーデータの保存はゲームにとって重要です。これにより、プレイヤーは毎回最初からやり直す必要がなくなり、ゲーム体験がより楽しくなります。

ゲームのユースケースに基づいて選択できる、Cloud Save 公開プレイヤーレコードを保存する 2 つの方法があります。

  • ゲームクライアント経由で保存:保存されたデータは、ゲームクライアントまたはゲームサーバーの両方から変更できます。
  • ゲームサーバー経由で保存:ゲームサーバー経由で保存されたデータは、ゲームサーバーのみが変更できます。

上記の 2 つの方法の唯一の違いは、レコードに割り当てることができる書き込み権限です。レコードの書き込み権限の詳細については、このセクションを確認してください。

ゲームクライアント経由で公開プレイヤーレコードにユーザーデータを保存する

これは、プレイヤーの武器ロードアウトなどのプレイヤー情報などのデータを保存するのに適しています。

この例では、ゲームクライアント経由で playerInformation キー内にユーザーデータを保存する方法を示します。

注記

キーが既に存在する場合、新しいデータは既存のレコードに追加されます。

Unreal Engine
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "playerInformation";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("FirstName", "John");

ApiClient->CloudSave.SaveUserRecord(Key
, *RecordRequest
, true
, FVoidHandler::CreateLambda([]()
{
// Do something if SaveUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if SaveUserRecord has an error
}));

ゲームサーバー経由で公開プレイヤーレコードにユーザーデータを保存する

これは、特定のゲームロジックによって更新され、プレイヤーが手動でトリガーしないプレイヤーのランクやティアなどのデータを保存するのに適しています。

以下の例では、ゲームサーバー経由で playerTier キー内にユーザーデータを保存する方法を示します。

Unreal Engine
FServerApiClientPtr ApiServer = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = "playerTier";
FString UserId = "Player User Id";
ESetByMetadataRecord SetBy = ESetByMetadataRecord::SERVER;

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("Rank", "Legend");

ApiServer->ServerCloudSave.SaveUserRecord(Key
, UserId
, SetBy
, true
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if SaveUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if SaveUserRecord has an error
}));

公開プレイヤーレコードデータを表示する

保存したレコードは、ゲームのユースケースに応じて取得して表示できます。レコードの所有者に基づいて、プレイヤーレコードを表示する 2 つの一般的なアプローチがあります。

  • 自分の公開プレイヤーレコード。例:マイプレイヤー情報ページ
  • 他のユーザーの公開プレイヤーレコード。例:他のユーザーのプレイヤー情報ページ

自分の公開プレイヤーレコードを表示する

以下の例では、playerInfo キー内のユーザーデータを取得する方法を示します。

Unreal Engine
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "playerInfo";

ApiClient->CloudSave.GetUserRecord(Key
, THandler<FAccelByteModelsUserRecord>::CreateLambda([](FAccelByteModelsUserRecord Result)
{
// Do something if GetUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetUserRecord has an error
}));

他のユーザーの公開プレイヤーレコードを表示する

公開ユーザーレコードは、他のユーザーが取得できます。以下の例では、playerInfo キー内の他のユーザーのプレイヤーレコードデータを取得する方法を示します。

Unreal Engine
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "playerInfo";
FString UserId = "Player User Id";

ApiClient->CloudSave.GetPublicUserRecord(Key
, UserId
, THandler<FAccelByteModelsUserRecord>::CreateLambda([](FAccelByteModelsUserRecord Result)
{
// Do something if GetPublicUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetPublicUserRecord has an error
}));

公開プレイヤーレコードデータを変更する

プレイヤーレコードデータは、ゲームのユースケースに基づいて変更できます。ユースケースに基づいて選択できる、Cloud Save 公開プレイヤーレコードを変更する 2 つの方法があります。

  1. ゲームクライアント経由で変更。これは、プレイヤーが自分のプレイヤーレコードを変更できるようにしたい場合に適しています。例:ユーザーがプレイヤー情報を更新する
  2. ゲームサーバー経由で変更。これは、ゲームサーバーのみがプレイヤーレコードを変更できるようにしたい場合に適しています。例:ゲームサーバーがプレイヤーに新しいランクまたはティアを割り当てる

ゲームクライアント経由で公開プレイヤーレコードを変更する

公開プレイヤーレコードを変更するために使用できる 2 つの方法があります。

  1. 置換:データ全体を新しいコンテンツに置き換えたい場合に適しています。レコードが存在しない場合は、新しいデータに基づいて作成され、レコードが既に存在する場合は、すべてを置き換えます。
  2. 追加:プレイヤーレコードに新しいキーと値のみを追加したい場合に適しています。このプロセスは、置換と比較して軽量です。

ユーザーの公開プレイヤーレコードを置換する

以下の例では、playerInfo キー内のユーザーデータを置換する方法を示します。

Unreal Engine
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "playerInfo";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("FirstName", "Doe");

ApiClient->CloudSave.ReplaceUserRecord(Key
, true
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if ReplaceUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if ReplaceUserRecord has an error
}));

ユーザーの公開プレイヤーレコードに追加する

以下の例では、playerInfo キー内のユーザーデータに追加する方法を示します。

Unreal Engine
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "playerInfo";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("LastName", "Doe");

ApiClient->CloudSave.SaveUserRecord(Key
, *RecordRequest
, true
, FVoidHandler::CreateLambda([]()
{
// Do something if SaveUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if SaveUserRecord has an error
}));

ゲームサーバー経由で公開プレイヤーレコードを変更する

ゲームサーバーは、公開プレイヤーレコードデータを変更するための最も多くの権限を持っています。レコードの書き込み権限の詳細については、このセクションを確認してください。

以下の例では、ゲームサーバー経由で playerTier キー内のプレイヤーレコードデータを変更する方法を示します。

Unreal Engine
FServerApiClientPtr ApiServer = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = "playerTier";
FString UserId = "Player User Id";
ESetByMetadataRecord SetBy = ESetByMetadataRecord::SERVER;

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("Rank", "Diamond");

ApiServer->ServerCloudSave.ReplaceUserRecord(Key
, SetBy
, true
, UserId
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if ReplaceUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if ReplaceUserRecord has an error
}));

特定のユーザーの公開プレイヤーレコードを削除する

公開プレイヤーレコードデータを削除することもできます。プレイヤーレコードデータの削除は、ゲームクライアントまたはゲームサーバーから実行できます。

ゲームクライアント経由でユーザーの公開プレイヤーレコードを削除する

以下の例では、ゲームクライアント経由で playerInfo キーを持つユーザーレコードデータを削除する方法を示します。

Unreal Engine
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "playerInfo";

ApiClient->CloudSave.DeleteUserRecord(Key
, FVoidHandler::CreateLambda([]()
{
// Do something if DeleteUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if DeleteUserRecord has an error
}));

ゲームサーバー経由でユーザーの公開プレイヤーレコードを削除する

以下の例では、ゲームサーバー経由で playerTier キーを持つユーザーレコードデータを削除する方法を示します。

Unreal Engine
FServerApiClientPtr ApiServer = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = "playerTier";
FString UserId = "Player User Id";

ApiServer->ServerCloudSave.DeleteUserRecord(Key
, UserId
, true
, FVoidHandler::CreateLambda([]()
{
// Do something if DeleteUserRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if DeleteUserRecord has an error
}));