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

この記事では、AGS Admin Portal または AGS CLI で次の操作を行う方法について説明します。
- 現実通貨の管理
- 仮想通貨の管理
Prerequisites
- AccelByte Gaming Services (AGS) Admin Portal のパブリッシャーネームスペースおよびゲームネームスペースへのアクセス権限。
- AGS CLI の手順を実行するには、AGS CLI をインストールし、これらの機能にアクセスできるアカウントでサインインしておく必要があります。詳細は Install and sign in を参照してください。例では Bash シェルを使用しています。
現実通貨を管理する
現実通貨機能は、AGS Public Cloud ではまだサポートされていません。
現実通貨を作成すると、その通貨をプレイヤーが取引に利用できるようになります。
- Admin Portal
- AGS CLI

-
Admin Portal のサイドバーで、Online > Wallets & Payments > Wallets > Currencies に移動します。
-
Currencies ページで、Add をクリックして新しい通貨を追加します。
-
Add Currency フォームが開きます。必須項目を入力します。
- 現実通貨は、価格に使用される際に小数点以下2桁で表示されます。
- Currency Type を選択し、現実通貨を作成するには Real を選択します。
- Currency Code フィールドに通貨を一意に識別するコードを入力します。現実通貨の場合は、米ドルの USD のように ISO_4217 標準に従ってください。
- Currency Symbol フィールドに通貨に関連付けられたシンボル(例: "$")を入力します。キーボードにないシンボルを入力するには、そのシンボルの Unicode を入力してください。
-
入力が完了したら、Add をクリックします。新しい通貨がリストに追加されます。
通貨を作成します。<YourNamespace> をパブリッシャーまたはゲームのネームスペースに、<CurrencyCode> を通貨コードに、<CurrencySymbol> を通貨シンボルに置き換えてください。
ags platform currencies create --namespace <YourNamespace> \
--json '{"currencyType": "REAL", "currencyCode": "<CurrencyCode>", "currencySymbol": "<CurrencySymbol>", "decimals": 2}'
currencyCode: Currency Code です。米ドルのUSDのように ISO 4217 標準に従ってください。currencySymbol: Currency Symbol です(例:$)。decimals: 現実通貨の場合は2です。Admin Portal ではこの値が自動的に設定されます。
コマンドは新しい通貨を出力します。
仮想通貨を管理する
仮想通貨を作成すると、その通貨をプレイヤーが取引に利用できるようになります。
- Admin Portal
- AGS CLI
-
Admin Portal のサイドバーで、Online > Wallets & Payments > Wallets > Currencies に移動します。
-
Currencies ページで、Add をクリックして新しい通貨を追加します。Add Currency フォームが表示されます。
-
フォームに必要な情報を入力します。
- Currency Type を選択し、仮想通貨を作成するには Virtual を選択します。
- 仮想通貨の場合、独自の通貨コードを作成できます。
- Currency Symbol フィールドに通貨に関連付けられたシンボル(例: "$")を入力します。キーボードにないシンボルを使用するには、そのシンボルの Unicode を使用してください。仮想通貨の場合、最大 8 文字までの任意の文字の組み合わせを入力できます。
-
Add をクリックします。新しい通貨がリストに追加されます。
通貨を作成します。<YourNamespace> をパブリッシャーまたはゲームのネームスペースに、<CurrencyCode> を通貨コードに、<CurrencySymbol> を通貨シンボルに置き換えてください。
ags platform currencies create --namespace <YourNamespace> \
--json '{"currencyType": "VIRTUAL", "currencyCode": "<CurrencyCode>", "currencySymbol": "<CurrencySymbol>", "decimals": 0}'
currencyCode: Currency Code です。英大文字、数字、アンダースコア (_)、ハイフン (-) を使用して最大 20 文字で指定します。先頭は英字、末尾は英字または数字である必要があります。currencySymbol: Currency Symbol です。最大 8 文字まで指定できます。decimals: 仮想通貨の場合は0にする必要があります。Admin Portal ではこの値が自動的に設定されます。省略すると AGS はデフォルトで2を使用しますが、これは仮想通貨では無効な値のため、リクエストは失敗します。
コマンドは新しい通貨を出力します。
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)
{
// 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)