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

ゲームクライアントからバイナリレコードにプレイヤーデータを保存する

Last updated on February 4, 2026

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

概要

AccelByte Gaming Services (AGS) のCloud Saveサービスを使用すると、プレイヤーデータをバイナリ形式で保存できます。保存されたデータは特定のプレイヤーに紐付けられます。画像やオーディオファイルは、プレイヤーバイナリレコードに通常保存されるデータの一般的な例です。

このガイドでは、バイナリレコードを使用してプレイヤーデータを保存、取得、およびゲームのユースケースに応じて変更する方法を学びます。

前提条件

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

ゲームクライアントからバイナリレコードにプレイヤーデータを保存する

プレイヤーデータをバイナリレコードに保存するには、次の順序で以下の手順に従います。

  1. プレイヤーバイナリレコードを作成する
  2. バイナリファイルをアップロードする
  3. 変更をコミットする

プレイヤーバイナリレコードを作成する

このプロセスでは、後でバイナリファイルをアップロードするために使用される生成済みの事前署名URLを取得します。作成したいレコードに追加の読み取り検証を設定することもできます。

  • レコード所有者のみがデータにアクセスできるようにする
  • すべてのプレイヤーがレコードデータにアクセスできるようにする

追加の読み取り検証の詳細については、Cloud Saveの概要を参照してください。

リクエストを作成するには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";
FString FileType = "bin"; // Valid file types are JPEG, JPG, PNG, BMP, GIF, MP3, WebP, and BIN
bool bIsPublic = true; // Set to true if you want the binary to be public

ApiClient->BinaryCloudSave.SaveUserBinaryRecord(Key
, FileType
, bIsPublic
, FVoidHandler::CreateLambda([]()
{
// What to do if SaveUserBinaryRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if SaveUserBinaryRecord fails
}));

プレイヤーバイナリレコードファイルをアップロードする

ユーザーバイナリレコードを作成した後、データをアップロードできます。必要なパラメータは、プレイヤーバイナリレコードを作成するセクションのコールバックから提供されます。次の関数を使用してデータをアップロードできます。

byte[] yourUserDataToUpload; // Your user binary data
string url; // Retrieved via callback on successful SaveUserBinaryRecord (Value.BinaryInfo.Url)

AccelByteNetUtilities.UploadBinaryTo(binaryInfo.Url, yourUserDataToUpload, result =>
{
if (result.IsError)
{
// Your logic to handle errors in UploadBinaryTo
// ...
Debug.Log(result.Error.Message);

return;
}

// Your logic to run after UploadBinaryTo is successful
});

変更をコミットする

バイナリファイルがアップロードされたら、変更をコミットして新しいファイルの場所が更新されるようにします。次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";
FString ContentType = "presignUrlContentType";
FString FileLocation = "presignUrlFileLocation";

ApiClient->BinaryCloudSave.UpdateUserBinaryRecordFile(Key
, ContentType
, FileLocation
, THandler<FAccelByteModelsUserBinaryRecord>::CreateLambda([](FAccelByteModelsUserBinaryRecord Result)
{
// What to do if UpdateUserBinaryRecordFile is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if UpdateUserBinaryRecordFile fails
}));

ゲームクライアントからプレイヤーバイナリレコードデータを取得する

レコード所有者に基づいて、2 種類のプレイヤーレコードを取得できます。

  • 自分のプレイヤーバイナリレコード
  • 他のユーザーの公開バイナリレコード

プレイヤーのバイナリレコードデータを取得する

単一取得

次の関数を使用して、キーでプレイヤー自身の特定のバイナリレコードデータを取得します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";

ApiClient->BinaryCloudSave.GetCurrentUserBinaryRecord(Key
, THandler<FAccelByteModelsUserBinaryRecord>::CreateLambda([](FAccelByteModelsUserBinaryRecord Result)
{
// What to do if GetCurrentUserBinaryRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if GetCurrentUserBinaryRecord fails
}));

一括取得

次の関数を使用して、プレイヤーが所有するバイナリレコードのリストを取得します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

TArray<FString> Keys = {"userInformation1", "userInformation2"};

ApiClient->BinaryCloudSave.BulkGetCurrentUserBinaryRecords(Keys
, THandler<FAccelByteModelsListUserBinaryRecords>::CreateLambda([](FAccelByteModelsListUserBinaryRecords Result)
{
// What to do if BulkGetCurrentUserBinaryRecords is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if BulkGetCurrentUserBinaryRecords fails
}));

他のユーザーの公開バイナリレコードデータを取得する

単一取得

次の関数を使用して、キーで特定のプレイヤーの公開バイナリレコードデータを取得します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";
FString UserId = "OtherPlayerUserId";

ApiClient->BinaryCloudSave.GetPublicUserBinaryRecord(Key
, UserId
, THandler<FAccelByteModelsUserBinaryRecord>::CreateLambda([](FAccelByteModelsUserBinaryRecord Result)
{
// What to do if GetPublicUserBinaryRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if GetPublicUserBinaryRecord fails
}));

一括取得

次の関数を使用して、他のプレイヤーが所有する公開バイナリレコードのリストを取得します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

TArray<FString> Keys = {"userInformation1", "userInformation2"};
FString UserId = "OtherPlayerUserId";

ApiClient->BinaryCloudSave.BulkGetPublicUserBinaryRecords(Keys
, UserId
, THandler<FAccelByteModelsListUserBinaryRecords>::CreateLambda([](FAccelByteModelsListUserBinaryRecords Result)
{
// What to do if BulkGetPublicUserBinaryRecords is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if BulkGetPublicUserBinaryRecords fails
}));

ゲームクライアントからプレイヤーバイナリレコードを変更する

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

  • ゲームクライアント経由で変更する。プレイヤーが自分のプレイヤーバイナリレコードデータを変更できるようにする場合は、この方法を使用します。
  • ゲームサーバー経由で変更する。ゲームサーバーのみがプレイヤーバイナリレコードデータを変更できるようにする場合は、この方法を使用します。

追加の書き込み検証の詳細については、Cloud Saveの概要を参照してください。

また、プレイヤーが更新したい情報を決定できるようにすることもできます。レコードメタデータまたはバイナリファイルです。

プレイヤーバイナリレコードメタデータを変更する

次の関数を使用して、レコードメタデータのみを変更します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";
FString FileType = "bin"; // Valid file types are JPEG, JPG, PNG, BMP, GIF, MP3, WebP, and BIN
bool bIsPublic = true; // Set to true if you want the binary to be public

ApiClient->BinaryCloudSave.SaveUserBinaryRecord(Key
, FileType
, bIsPublic
, FVoidHandler::CreateLambda([]()
{
// What to do if SaveUserBinaryRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if SaveUserBinaryRecord fails
}));

新しいプレイヤーバイナリレコードファイルをアップロードする

ゲームクライアントからプレイヤーバイナリレコードに新しいプレイヤーバイナリファイルをアップロードするには、次の順序で以下の手順に従います。

事前署名URLをリクエストする

ゲームクライアントで更新されたバイナリファイルをアップロードするには、事前署名URLが必要です。事前署名URLをリクエストするには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";
FString FileType = "bin"; // Valid file types are JPEG, JPG, PNG, BMP, GIF, MP3, WebP, and BIN

ApiClient->BinaryCloudSave.RequestUserBinaryRecordPresignedUrl(Key
, FileType
, THandler<FAccelByteModelsBinaryInfo>::CreateLambda([](FAccelByteModelsBinaryInfo Result)
{
// What to do if RequestUserBinaryRecordPresignedUrl is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if RequestUserBinaryRecordPresignedUrl fails
}));

バイナリファイルをアップロードする

事前署名URLをリクエストするセクションから必要なパラメータを取得したら、希望するバイナリデータまたはファイルをアップロードします。次の関数を使用します。

byte[] yourUserDataToUpload; // Your user binary data
string url; // Retrieved via callback on successful RequestUserBinaryRecordPresignedUrl (Value.Url)

AccelByteNetUtilities.UploadBinaryTo(binaryInfo.Url, yourUserDataToUpload, result =>
{
if (result.IsError)
{
// Your logic to handle errors in UploadBinaryTo
//...
Debug.Log(result.Error.Message);

return;
}

// Your logic to run after UploadBinaryTo is successful
});

変更をコミットする

バイナリファイルがアップロードされたら、変更をコミットして新しいファイルの場所が更新されるようにします。次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";

// The following are taken from RequestUserBinaryRecordPresignedUrl's resulting FAccelByteModelsBinaryInfo
FString ContentType = RequestPresignedUrlResult.Content_Type;
FString FileLocation = RequestPresignedUrlResult.File_Location;

ApiClient->BinaryCloudSave.UpdateUserBinaryRecordFile(Key
, ContentType
, FileLocation
, THandler<FAccelByteModelsUserBinaryRecord>::CreateLambda([](FAccelByteModelsUserBinaryRecord Result)
{
// What to do if UpdateUserBinaryRecordFile is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if UpdateUserBinaryRecordFile fails
}));

ゲームクライアントからプレイヤーバイナリレコードを削除する

プレイヤーが自分のプレイヤーバイナリレコードのみを削除できるようにすることができます。プレイヤーバイナリレコードを削除するには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString Key = "userInformation";

ApiClient->BinaryCloudSave.DeleteUserBinaryRecord(Key
, FVoidHandler::CreateLambda([]()
{
// What to do if DeleteUserBinaryRecord is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// What to do if DeleteUserBinaryRecord fails
}));