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

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

Last updated on February 4, 2026

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

概要

Cloud Save サービスを使用すると、プレイヤーのデータを非公開で保存できます。非公開保存とは、プレイヤーが他のプレイヤーの特定のデータを読み取ることができないことを意味します。

保存されるデータは通常、他のプレイヤーに関連しない情報、または機密情報である可能性があり、JSON 形式で保存されます。例えば、以下のようなデータを保存します。

  • キーバインディング、グラフィック品質、オーディオ設定などのプレイヤーの個人設定
  • RPG ゲームのキャラクターの最後の位置など、特定のユースケースのためのプレイヤー固有の情報

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

目標

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

前提条件

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

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

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

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

Cloud Save 非公開プレイヤーレコードを保存する 2 つの方法があります。

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

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

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

これは、他のプレイヤーに関連しないプレイヤーデータを保存するのに適しており、レコードの所有者がデータを変更できます。例えば、プレイヤーのグラフィック品質設定、キーバインディングなどを保存します。

この例では、ゲームクライアント経由で graphicQuality キー内にユーザーデータを保存する方法を示します。キーが既に存在する場合、新しいレコードは既存のレコードに追加されることに注意してください。


FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "graphicQuality";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
// 0 Low Quality, 1 Medium Quality, 2 High Quality
RecordRequest->SetNumberField(FString("textures"), 2);
RecordRequest->SetNumberField(FString("shadow"), 1);
RecordRequest->SetNumberField(FString("lighting"), 0);
RecordRequest->SetNumberField(FString("post-processing"), 2);

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

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

これは、他のプレイヤーに関連しないプレイヤーデータを保存するのに適しており、データはレコードの所有者が編集できません。例えば、プレイヤーがゲームを終了する前のキャラクターの最後の位置を保存し、プレイヤーがゲームを起動したときに最後の位置を読み込むようにします。

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


FServerApiClientPtr ApiServer = AccelByteOnlineSubsystemPtr->GetServerApiClient();

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

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("LastLocation", "x:120,y:200");

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

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

保存された非公開プレイヤーレコードは、レコードの所有者のみが取得できます。データを取得した後、ゲームのユースケースをサポートするために、好きなことができます。例えば、グラフィック品質設定をインポートしたり、キーバインディング設定をインポートしたりできます。


FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "graphicQuality";

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
}));

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

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

  1. ゲームクライアント経由で変更
  2. ゲームサーバー経由で変更

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

これは、プレイヤーが自分のプレイヤーレコードを変更できるようにしたい場合に適しています。例:ユーザーがグラフィック設定を更新する

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

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

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

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


FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "graphicQuality";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
// 0 Low Quality, 1 Medium Quality, 2 High Quality
RecordRequest->SetNumberField(FString("textures"), 2);
RecordRequest->SetNumberField(FString("shadow"), 2);
RecordRequest->SetNumberField(FString("lighting"), 2);
RecordRequest->SetNumberField(FString("post-processing"), 2);

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

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

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


FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "graphicQuality";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("blur", "2");

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

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

ゲームサーバーは、非公開プレイヤーレコードデータを変更するための最も多くの権限を持っています。レコードの書き込み権限の詳細については、このセクションを確認してください。これは、ゲームサーバーのみがプレイヤーレコードを変更できるようにしたい場合に適しています。例えば、ゲームサーバーがキャラクターの最後の位置を保存します。

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


FServerApiClientPtr ApiServer = AccelByteOnlineSubsystemPtr->GetServerApiClient();

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

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField("LastLocation", "x:2330,y:8710");

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

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

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

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

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


FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "graphicQuality";

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
}));

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

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


FServerApiClientPtr ApiServer = AccelByteOnlineSubsystemPtr->GetServerApiClient();

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

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