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

ゲーム内設定をゲームレコードに保存する

Last updated on July 15, 2026

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

概要

Cloud Save サービスを使用すると、ゲームのユースケースに応じて、ゲームデータを JSON 形式で保存できます。保存したゲームレコードはタイトル全体で共有され、すべてのプレイヤーが取得でき、場合によっては編集も可能です。例えば、以下のようなデータを保存できます:

  • ゲームのシーズン UI テーマ設定
  • ゲームイベントやニュース情報
  • クラン、エリア、マップなど、プレイヤー間で共有されるゲームデータ

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

目標

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

前提条件

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

  • Admin Portal
  • AccelByte Unreal または Unity SDK(以下の認証情報を含む):
    • Client ID
    • Client Secret
  • AccelByte Cloud Save API ドキュメント

新しいゲームレコードにデータを保存する

Admin Portal 経由で新しいゲームレコードにデータを保存する

Admin Portal 経由でゲームレコードを作成する方法は、ゲームクライアント側で変更する必要がなく、取得するだけのデータを保存する場合に適しています。例えば、シーズンの UI テーマ設定やイベント/ニュース情報などです。

ゲームレコードを作成するには、以下の手順に従ってください:

  1. Admin Portal のサイドバーで、Progression & Inventory > Cloud Save メニューに移動し、Game Records を選択します。

  2. Cloud Save ページで、Game Records タブを開き、Create Game Record ボタンをクリックします。Add Record フォームが表示されます。

  3. 必要な情報を入力します:

    The Add Record form

    • 適切な形式で Game Record Key を入力します。このキーはレコードのタイトルとして使用でき、後で SDK からレコードを取得する際の識別子にもなります。
    • Write Permission セクションを設定すると、ゲームサーバーまたはゲームクライアントのみがレコードを更新できるように、追加の検証を加えることもできます。利用可能なオプションの一覧については、Write Permission を参照してください。
    • JSON 形式で保存したいデータを追加します。
  4. Add をクリックします。新しいレコードがレコードリストに追加されます。

    The Add Record button

SDK を使用して新しいゲームレコードにデータを保存する

この方法は、ゲームクライアントで何らかのアクションが実行された後に動的に作成するゲームレコードが必要な場合に適しています。例えば、カスタマイズ可能な公開マップデータを保存する場合などです。以下の関数を使用して新しいゲームレコードを作成し、データを保存します。

クライアント経由でゲームレコードを作成する

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = FString("map-data");

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField(FString("npc1"), FString("X=125;Y=256;Z=125"));
RecordRequest->SetStringField(FString("npc2"), FString("X=115,Y=225,Z=120"));

ApiClient->CloudSave.SaveGameRecord(Key
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if SaveGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SaveGameRecord fails
}));

サーバー経由でゲームレコードを作成する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = FString("map-data");

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField(FString("npc1"), FString("X=125;Y=256;Z=125"));
RecordRequest->SetStringField(FString("npc2"), FString("X=115,Y=225,Z=120"));

ServerApiClient->ServerCloudSave.SaveGameRecord(Key
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if SaveGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SaveGameRecord fails
}));

サーバー経由で一時的なゲームレコードを作成する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = FString("map-data");

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField(FString("npc1"), FString("X=125;Y=256;Z=125"));
RecordRequest->SetStringField(FString("npc2"), FString("X=115,Y=225,Z=120"));

FTTLConfig TTLConfig{};
TTLConfig.Action = EAccelByteTTLConfigAction::DELETE_RECORD;
TTLConfig.Expires_At = FDateTime::UtcNow() + FTimespan(0, 0, 5); // Will delete this record in the next five seconds

ServerApiClient->ServerCloudSave.SaveGameRecord(Key
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if SaveGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SaveGameRecord fails
})
, TTLConfig);

サーバー経由でゲームレコードの有効期限設定を削除する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = FString("map-data");

ServerApiClient->ServerCloudSave.DeleteGameRecordTTLConfig(Key, FVoidHandler::CreateLambda([]()
{
// Do something if DeleteGameRecordTTLConfig was successful
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if DeleteGameRecordTTLConfig fails
}));

ゲームレコードデータを表示する

Admin Portal またはゲームクライアントから保存・作成されたゲームレコードは、すべてのプレイヤーが取得できます。取得したデータは、ゲームのさまざまなユースケースに活用できます。例えば、シーズンテーマの UI を切り替えたり、更新されたニュースやイベントを表示したりできます。

以下の関数を使用してゲームレコードを取得できます:

クライアント経由でゲームレコードを取得する

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = FString("inGameNews");

ApiClient->CloudSave.GetGameRecord(Key
, THandler<FAccelByteModelsGameRecord>::CreateLambda([](const FAccelByteModelsGameRecord& Result)
{
// Do something if GetGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if GetGameRecord fails
}));

サーバー経由でゲームレコードを取得する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = FString("inGameNews");

ServerApiClient->ServerCloudSave.GetGameRecord(Key
, THandler<FAccelByteModelsGameRecord>::CreateLambda([](const FAccelByteModelsGameRecord& Result)
{
// Do something if GetGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if GetGameRecord fails
}));

ゲームレコードデータを変更する

Admin Portal 経由でゲームレコードを変更する

Admin Portal からゲームレコードを変更する方法は、データを調整するために手動で操作したい場合に適しています。例えば、データの修正や監査などです。ゲームレコードを更新するには、以下の手順に従ってください:

  1. Admin Portal のサイドバーで、Progression & Inventory > Cloud Save > Game Records に移動します。

  2. Game Records ページで、レコードタイプに応じて、JSON または Binary タブを開きます。リストから、更新したいレコードを見つけて表示します。

    The records list

  3. レコードの詳細ページで、フィールドまたはセクションの鉛筆または編集アイコンをクリックして、コンテンツを更新します。

    The edit icon

  4. 変更を保存します。

    The save icon

SDK を使用してゲームレコードを変更する

この方法は、ゲームがゲームクライアントからゲームレコードデータを更新する必要がある場合に適しています。保存済みのデータは、以下の関数を使用して新しいデータに置き換えられます:

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

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "map-data";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField(FString("npc1"), FString("X=100;Y=256;Z=125"));
RecordRequest->SetStringField(FString("npc2"), FString("X=100,Y=225,Z=120"));

ApiClient->CloudSave.ReplaceGameRecord(Key
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if ReplaceGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if ReplaceGameRecord fails
}));

サーバー経由でゲームレコードを変更する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = "map-data";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField(FString("npc1"), FString("X=100;Y=256;Z=125"));
RecordRequest->SetStringField(FString("npc2"), FString("X=100,Y=225,Z=120"));

ServerApiClient->ServerCloudSave.ReplaceGameRecord(Key
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if ReplaceGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if ReplaceGameRecord fails
}));

サーバー経由でゲームレコードを一時的なものに変更する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = "map-data";

TSharedPtr<FJsonObject> RecordRequest = MakeShareable(new FJsonObject);
RecordRequest->SetStringField(FString("npc1"), FString("X=100;Y=256;Z=125"));
RecordRequest->SetStringField(FString("npc2"), FString("X=100,Y=225,Z=120"));

FTTLConfig TTLConfig{};
TTLConfig.Action = EAccelByteTTLConfigAction::DELETE_RECORD;
TTLConfig.Expires_At = FDateTime::UtcNow() + FTimespan(0, 0, 5); // Will delete this record in the next five seconds

ServerApiClient->ServerCloudSave.ReplaceGameRecord(Key
, *RecordRequest
, FVoidHandler::CreateLambda([]()
{
// Do something if ReplaceGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if ReplaceGameRecord fails
})
, TTLConfig);

ゲームレコードデータを削除する

Admin Portal 経由でゲームレコードを削除する

ゲームレコードを削除するには、以下の手順に従ってください:

  1. Admin Portal のサイドバーで、Progression & Inventory > Cloud Save > Game Records に移動します。

  2. Game Records ページで、レコードタイプに応じて、JSON または Binary タブを開きます。リストから、削除したいレコードを見つけて、Action メニューの下にある Delete ボタンをクリックします。

    The delete button

  3. 確認メッセージで Delete をクリックします。

    The delete confirmation message

SDK 経由でゲームレコードを削除する

ゲームが SDK 側からゲームレコードを削除する必要がある場合は、以下の関数を使用して削除できます。

クライアント経由でゲームレコードを削除する

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = FString("map-data");

ApiClient->CloudSave.DeleteGameRecord(Key
, FVoidHandler::CreateLambda([]()
{
// Do something if DeleteGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if DeleteGameRecord fails
}));

サーバー経由でゲームレコードを削除する

FServerApiClientPtr ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();

FString Key = FString("map-data");

ServerApiClient->ServerCloudSave.DeleteGameRecord(Key
, FVoidHandler::CreateLambda([]()
{
// Do something if DeleteGameRecord succeeds
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if DeleteGameRecord fails
}));