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

この記事では、次の内容について説明します。
- 現実通貨の管理
- 仮想通貨の管理
Prerequisites
- AccelByte Gaming Services (AGS) Admin Portal のパブリッシャーネームスペースおよびゲームネームスペースへのアクセス権限。
Admin Portal で現実通貨を管理する
現実通貨機能は、AGS Public Cloud ではまだサポートされていません。
Admin Portal で現実通貨を作成すると、その通貨をプレイヤーが取引に利用できるようになります。

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

-
入力が完了したら、Add をクリックします。新しい通貨がリストに追加されます。
Admin Portal で仮想通貨を管理する
Admin Portal で仮想通貨を作成すると、その通貨をプレイヤーが取引に利用できるようになります。
-
Admin Portal のサイドバーで、Online > Wallets & Payment > Wallets > Currencies に移動します。
-
Currencies ページで、Add をクリックして新しい通貨を追加します。Add Currency フォームが表示されます。
-
フォームに必要な情報を入力します。
- Currency Type を選択し、仮想通貨を作成するには Virtual を選択します。
- 仮想通貨の場合、独自の通貨コードを作成できます。
- Currency Symbol フィールドに通貨に関連付けられたシンボル(例: "$")を入力します。キーボードにないシンボルを使用するには、そのシンボルの Unicode を使用してください。仮想通貨の場合、最大8文字までの任意の文字の組み合わせを入力できます。
-
Add をクリックします。新しい通貨がリストに追加されます。
SDK を使用してサポートされている通貨を取得する
Unity や Unreal Engine 用のクライアント SDK、または Extend SDK を使用して、ゲームクライアントが Admin Portal で設定した通貨に関する情報を取得できるようにすることもできます。
- 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)
{
// Do something if GetCurrencyList succeeds
UE_LOG(LogTemp, Error, TEXT(" Success"));
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if QueryUserAchievements fails
UE_LOG(LogTemp, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
});
var currencies = AccelByteSDK.GetClientRegistry().GetApi().GetCurrencies();
Result<CurrencyList[]> currencyListResult = null;
// Check for CurrencyType
currencies.GetCurrencyList(result =>
{
if (result.IsError)
{
// Do something if QueryUserAchievements fails
Debug.Log($"Error GetCurrencyList, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if GetCurrencyList succeeds
currencyListResult = result;
});
var response = sdk.Platform.Currency.PublicListCurrenciesOp
.Execute(sdk.Namespace);
if (response != null)
{
//do something if success
}
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) {
// Do something when failed
return;
}
if (response == null) {
// Null response from server
} else {
// Do something when successful
}
import accelbyte_py_sdk.api.platform as platform_service
result, error = platform_service.public_list_currencies(
namespace=namespace, # optional, gets the value from the global instance if unspecified
sdk=sdk, # optional, gets the global instance if unspecified
)
if error:
exit(error)