現実通貨と仮想通貨を管理する
注釈:本資料はAI技術を用いて翻訳されています。
概要
この記事では、管理者ポータルを使用してストア取引で使用できる通貨を設定する方法について説明します。現実世界の通貨と仮想通貨の両方を設定して、プレイヤーがそれらの通貨で取引できるようにすることができます。作成した仮想通貨は、プレイヤーが獲得したり、プレイヤーに付与したりすることもできます。ストアやアイテムを作成する前に、少なくとも 1 つの通貨を設定する必要があります。
- パブリッシャーネームスペースで通貨を作成すると、すべてのネームスペースで使用できるようになります。
- 特定のゲームネームスペースで通貨を作成すると、その特定のネームスペースでのみ使用できます。
- 複数のネームスペースで同じコードとシンボルの通貨を作成した場合、それらは異なる通貨として扱われます。

この記事では、以下の方法について説明します。
- 現実通貨を管理する
- 仮想通貨を管理する
前提条件
- AccelByte Gaming Services (AGS) 管理者ポータルでパブリッシャーネームスペースとゲームネームスペースへのアクセス権があること。
管理者ポータルで現実通貨を管理する
現実通貨機能は、AGS Shared Cloud ではまだサポートされていません。
管理者ポータルで現実通貨を作成すると、その通貨がプレイヤーの取引で使用できるようになります。

-
管理者ポータルのサイドバーで、Commerce > Wallets > Currencies に移動します。
-
Currencies ページで、Add をクリックして新しい通貨を追加します。
-
Add Currency フォームが開きます。必須フィールドに入力します。
- 現実通貨は、価格で使用する際に小数点以下 2 桁になります。
- Currency Type を選択し、Real を選択して現実通貨を作成します。
- Currency Code フィールドに通貨の一意の識別コードを入力します。現実通貨の場合は、米ドルの USD など、ISO_4217 標準に従ってください。
- Currency Symbol フィールドに通貨に関連付けられたシンボル(「$」など)を入力します。キーボードにないシンボルを入力するには、そのシンボルの Unicode を入力します。

-
完了したら、Add をクリックします。新しい通貨がリストに追加されます。
管理者ポータルで仮想通貨を管理する
管理者ポータルで仮想通貨を作成すると、その通貨がプレイヤーの取引で使用できるようになります。
-
管理者ポータルのサイドバーで、Commerce > Wallets > Currencies に移動します。
-
Currencies ページで、Add をクリックして新しい通貨を追加します。Add Currency フォームが表示されます。
-
フォームに必要な情報を入力します。
- Currency Type を選択し、Virtual を選択して仮想通貨を作成します。
- 仮想通貨の場合は、独自の通貨コードを作成できます。
- Currency Symbol フィールドに通貨に関連付けられたシンボル(「$」など)を入力します。キーボードにないシンボルを使用するには、そのシンボルの Unicode を使用します。仮想通貨の場合は、最大 8 文字まで任意の文字の組み合わせを入力できます。
-
Add をクリックします。新しい通貨がリストに追加されます。
SDK を使用してサポートされている通貨を取得する
Unity および Unreal Engine 用のクライアント SDK、または Extend SDK を使用して、ゲームクライアントが管理者ポータルで設定した通貨に関する情報を取得できるようにすることもできます。
- Unreal Engine
- Unity
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
FAccelByteModelsCurrencyList currencyListResult;
bool bGetCurrencyListDone = false;
FString Namespace = TEXT("sample-namespace");
TArray<FAccelByteModelsCurrencyList> GetCurrencyListAllTypeResult;
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient(TEXT("your-key"));
ApiClient->Currency.GetCurrencyList(Namespace,
THandler<TArray<FAccelByteModelsCurrencyList>>::CreateLambda([=]
(const TArray<FAccelByteModelsCurrencyList>& Result)
{
// GetCurrencyList が成功した場合の処理
UE_LOG(LogTemp, Error, TEXT(" Success"));
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// QueryUserAchievements が失敗した場合の処理
UE_LOG(LogTemp, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
});
var currencies = AccelByteSDK.GetClientRegistry().GetApi().GetCurrencies();
Result<CurrencyList[]> currencyListResult = null;
// CurrencyType を確認
currencies.GetCurrencyList(result =>
{
if (result.IsError)
{
// QueryUserAchievements が失敗した場合の処理
Debug.Log($"Error GetCurrencyList, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// GetCurrencyList が成功した場合の処理
currencyListResult = result;
});
var response = sdk.Platform.Currency.PublicListCurrenciesOp
.Execute(sdk.Namespace);
if (response != null)
{
// 成功した場合の処理
}
currencyService := &platform.CurrencyService{
Client: factory.NewPlatformClient(&repository.ConfigRepositoryImpl{}),
TokenRepository: &repository.TokenRepositoryImpl{},
}
namespace := "mygame"
input := ¤cy.PublicListCurrenciesParams{
Namespace: namespace,
}
result, err := currencyService.PublicListCurrenciesShort(input)
Currency currencyWrapper = new Currency(sdk);
List<CurrencyInfo> response;
try {
response = currencyWrapper.publicListCurrencies(PublicListCurrencies.builder()
.namespace("<namespace>")
.build());
} catch (Exception e) {
// 失敗した場合の処理
return;
}
if (response == null) {
// サーバーからの null レスポンス
} else {
// 成功した場合の処理
}
import accelbyte_py_sdk.api.platform as platform_service
result, error = platform_service.public_list_currencies(
namespace=namespace, # オプション、指定しない場合はグローバルインスタンスから値を取得
sdk=sdk, # オプション、指定しない場合はグローバルインスタンスを取得
)
if error:
exit(error)