エンタイトルメント失効のカスタマイズを始める
注釈:本資料はAI技術を用いて翻訳されています。
Overview
AccelByte Gaming Services (AGS) では、プレイヤーのアセットの失効処理を行うカスタムロジックを実装できます。
この記事では、Extend Override アプリテンプレートを例として使用し、プレイヤーのアセットの失効処理を行うためのカスタムロジックを設定する手順を説明します。
Prerequisites
- C#
- Go
- Java
- Python
-
次のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14 以降:
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30 以降/Docker Engine v23.0 以降)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS に Docker Desktop をインストールする手順は、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. .NET 8 SDK
-
Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0を実行します。 -
Windows または macOS の場合:
Windows または macOS に .NET をインストールする手順は、Microsoft のドキュメントを参照してください。
dotnet --version
8.0.119
e. Postman
- Postman から入手できるバイナリを使用します。
- extend-helper-cli から入手できるバイナリを使用します。
g. TCP フォワーディング機能を備えたローカルトンネルサービス(以下など):
-
無料プランには登録が必要です。クイックスタートについては ngrok のドキュメント を参照してください。
-
登録不要で無料で試すことができます。クイックスタートについては pinggy のドキュメント を参照してください。
-
-
次のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14 以降:
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30 以降/Docker Engine v23.0 以降)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS に Docker Desktop をインストールする手順は、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Go v1.24
- Go のインストールガイド に従ってください。
go version
go version go1.24.0 ...e. Postman
- Postman から入手できるバイナリを使用します。
- extend-helper-cli から入手できるバイナリを使用します。
g. TCP フォワーディング機能を備えたローカルトンネルサービス(以下など):
-
無料プランには登録が必要です。クイックスタートについては ngrok のドキュメント を参照してください。
-
登録不要で無料で試すことができます。クイックスタートについては pinggy のドキュメント を参照してください。
-
-
次のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14 以降:
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30 以降/Docker Engine v23.0 以降)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS に Docker Desktop をインストールする手順は、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. JDK 17
-
Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install openjdk-17-jdkを実行します。 -
Windows または macOS の場合:
Microsoft Build for OpenJDK のインストール について Microsoft のドキュメントを参照してください。
java --version
openjdk 17.0.10 2024-01-16
...
e. Postman
- Postman から入手できるバイナリを使用します。
- extend-helper-cli から入手できるバイナリを使用します。
g. TCP フォワーディング機能を備えたローカルトンネルサービス(以下など):
-
無料プランには登録が必要です。クイックスタートについては ngrok のドキュメント を参照してください。
-
登録不要で無料で試すことができます。クイックスタートについては pinggy のドキュメント を参照してください。
-
-
次のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14 以降:
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30 以降/Docker Engine v23.0 以降)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS に Docker Desktop をインストールする手順は、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Python 3.10
-
Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install python3 python3-venvを実行します。 -
Windows または macOS の場合:
こちら から入手できるインストーラーを使用します。
python3 --version
Python 3.10.12
e. Postman
- Postman から入手できるバイナリを使用します。
- extend-helper-cli から入手できるバイナリを使用します。
g. TCP フォワーディング機能を備えたローカルトンネルサービス(以下など):
-
無料プランには登録が必要です。クイックスタートについては ngrok のドキュメント を参照してください。
-
登録不要で無料で試すことができます。クイックスタートについては pinggy のドキュメント を参照してください。
-
- AGS Admin Portal 環境へのアクセス。
- ベース URL:
<your environment's domain URL>- AGS Public Cloud カスタマーの例:
https://spaceshooter.prod.gamingservices.accelbyte.io - AGS Private Cloud カスタマーの例:
https://dev.customer.accelbyte.io
- AGS Public Cloud カスタマーの例:
- まだ持っていない場合は、ゲームネームスペースを作成 してください。ネームスペース ID を控えておきます。
confidentialクライアントタイプで OAuth クライアントを作成 します。Client IDとClient Secretを保管してください。
- ベース URL:
Clone the app template
- C#
- Go
- Java
- Python
git clone https://github.com/AccelByte/revocation-grpc-plugin-server-csharp.git
git clone https://github.com/AccelByte/revocation-grpc-plugin-server-go.git
git clone https://github.com/AccelByte/revocation-grpc-plugin-server-java.git
git clone https://github.com/AccelByte/revocation-grpc-plugin-server-python.git
Set up, run, and test an Extend app
このセクションでは、Extend アプリのセットアップ、ビルド、実行、そしてテストの方法を説明します。
Set up the Extend app
このアプリを実行できるようにするには、次のセットアップ手順に従います。
-
.env.templateファイルの内容をコピーして、docker compose 用の.envファイルを作成します。注記ホスト OS の環境変数は、
.envファイルの変数よりも優先されます。.envファイル内の変数が正しく反映されないように見える場合は、同じ名前のホスト OS 環境変数が存在していないか確認してください。詳細については、docker compose の環境変数優先順位に関する Docker のドキュメント を参照してください。 -
以下のように
.envファイルに必要な環境変数を入力します。AB_BASE_URL=https://test.accelbyte.io # Base URL of AGS environment
AB_CLIENT_ID='xxxxxxxxxx' # Client ID from the Prerequisites section
AB_CLIENT_SECRET='xxxxxxxxxx' # Client Secret from the Prerequisites section
AB_NAMESPACE='xxxxxxxxxx' # Namespace ID from the Prerequisites section
PLUGIN_GRPC_SERVER_AUTH_ENABLED=true # Enable or disable access token validation注記このアプリでは、
PLUGIN_GRPC_SERVER_AUTH_ENABLEDはデフォルトでtrueです。falseに設定すると、AccelByte Gaming ServicesのアクセストークンなしでgRPC serverを呼び出すことができます。このオプションは開発目的でのみ提供されています。本番環境ではgRPC serverのアクセストークン検証を有効にすることを推奨します。
Build the Extend app
このアプリをビルドするには、次のコマンドを実行します。
make build
Run the Extend app
このアプリをコンテナ内で(ビルドして)実行するには、次のコマンドを実行します。
docker compose up --build
Test the Extend app
Extend アプリは、ローカル開発環境 または AGS でテストできます。
Test in a local development environment
テストを行う前に、PLUGIN_GRPC_SERVER_AUTH_ENABLED が false に設定されていることを確認してください。設定されていない場合、gRPC リクエストは gRPC server によって拒否されます。
このアプリのカスタム関数は、Postman を使用してローカルでテストできます。Postman を使用して Extend アプリをテストするには、次の手順に従います。
-
次のコマンドを使用してこのアプリを実行します。
docker compose up --build -
Postman で新しい gRPC リクエストを作成し、サーバー URL として
localhost:6565を入力します。詳細については、gRPC のサポートに関する Postman のガイド を参照してください。 -
続けて
Revocation/Revokeメソッドを選択し、次のサンプルメッセージで呼び出します。{
"revokeEntryType": "CURRENCY",
"namespace": "test",
"userId": "4423f033c38a40b9afdc8844e13647b7",
"quantity": 1,
"currency": {
"namespace": "test",
"currencyCode": "VCA",
"balanceOrigin": "SYSTEM"
}
}成功すると、次のようなレスポンスが返されます。
{
"status": "SUCCESS",
"customRevocation": [
{
"key": "namespace",
"value": "test"
},
{
"key": "userId",
"value": "4423f033c38a40b9afdc8844e13647b7"
},
{
"key": "quantity",
"value": "1"
},
{
"key": "currencyNamespace",
"value": "test"
},
{
"key": "currencyCode",
"value": "VCA"
},
{
"key": "balanceOrigin",
"value": "SYSTEM"
}
]
}
Test with AGS
AGS を使ってローカルで実行しているアプリをテストするには、gRPC server がインターネットに接続されている必要があります。パブリック IP を必要とせずにこれを行うには、ローカルトンネルサービスを使用します。
-
次のコマンドを使用してこのアプリを実行します。
docker compose up --build -
ローカル開発環境の
gRPC serverの TCP ポート 6565 をインターネットに公開します。最も簡単な方法は、ローカルトンネルサービスプロバイダーを使用することです。-
ngrok にサインインし、ngrok ダッシュボードから
authtokenを取得してローカル環境に設定します。 そして、gRPC serverを公開するには次のコマンドを使用します。ngrok tcp 6565 -
または、pinggy を使用し、
sshコマンドラインのみでシンプルなトンネルを設定することもできます。 その場合、gRPC serverを公開するには次のコマンドを使用します。ssh -p 443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -R0:127.0.0.1:6565 tcp@a.pinggy.io
トンネルのフォワーディング URL(例:
http://0.tcp.ap.ngrok.io:xxxxxやtcp://xxxxx-xxx-xxx-xxx-xxx.a.free.pinggy.link:xxxxx)を控えておいてください。備考gRPC server ポート(TCP)をインターネットに公開するために、他のローカルトンネルサービスや別の方法を使用することもできます。
-
-
Admin Portal で、設定対象の正しい ネームスペース に移動し、以下を行います。
- サイドバーメニューで Online > Store & Catalog > Customization > Revocation に移動します。
- まだ何も追加していない場合は Add Configuration をクリックします。
- Locally hosted (for testing purpose) オプションを選択します。前の手順のローカルトンネルフォワーディング URL を入力し、Create をクリックします。
-
次の権限を含む
confidentialクライアントタイプで OAuth クライアントを作成 します。- AGS Private Cloud カスタマーの場合:
ADMIN:NAMESPACE:{namespace}:PLUGIN:REVOCATION [UPDATE,DELETE]ADMIN:NAMESPACE:{namespace}:USER:*:WALLET [READ,UPDATE]ADMIN:NAMESPACE:{namespace}:USER:*:REVOCATION [UPDATE]ADMIN:NAMESPACE:{namespace}:USER:*:ORDER [CREATE]ADMIN:NAMESPACE:{namespace}:STORE [CREATE,READ,UPDATE,DELETE]ADMIN:NAMESPACE:{namespace}:CATEGORY [CREATE]ADMIN:NAMESPACE:{namespace}:CURRENCY [CREATE,READ,DELETE]ADMIN:NAMESPACE:{namespace}:ITEM [CREATE,READ,DELETE]ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:* [CREATE,DELETE]NAMESPACE:{namespace}:WALLET [READ]
- AGS Public Cloud カスタマーの場合:
- Platform Store -> Service Plugin Config (Read, Update, Delete)
- Platform Store -> Wallet (Read, Update)
- Platform Store -> Revocation (Update, Delete)
- Platform Store -> Order (Create)
- Platform Store -> Store (Create, Read, Update, Delete)
- Platform Store -> Category (Create)
- Platform Store -> Currency (Create, Read, Delete)
- Platform Store -> Item (Read, Create, Delete)
- IAM -> User (Create, Delete)
importantClient IDとClient Secretのコピーを保管してください。- この手順で作成した OAuth クライアントは、Prerequisites セクションで説明したものとは異なります。次の手順で使用する Postman コレクションが、
gRPC Serverの URL 登録やテストユーザーの作成・削除を行うために必要となります。
- AGS Private Cloud カスタマーの場合:
-
Postman コレクション(
demo/revocation-demo.postman_collection.json)の概要にある手順に従い、前の手順で取得したClient IDとClient Secretを使用して環境を設定します。Extend アプリのフローが実行されている際、このアプリのコンソールログに注意してください。コレクション内のすべてのリクエストを実行すると、gRPC Serverのメソッドのうち少なくとも 1 つが呼び出されるはずです。
Deploy in AGS
AGS で Extend アプリをデプロイするには、Admin Portal で次の手順を行います。
- Create the Extend app
- Upload the Extend app
- Configure the Extend app
- Deploy the Extend app
- Set AGS to use the Extend app
Create the Extend app
- AGS Admin Portal で、Extend Override アプリを作成したいネームスペースに移動します。
- サイドバーメニューの ADD-ONS で、Extend > Override に移動します。
- Overridable Features ページで + Create New ボタンをクリックします。
- Create App フォームで、Extend アプリの名前と説明(任意)を入力します。
- Create をクリックします。新しい Extend アプリが Overridable Features アプリリストに追加されます。
Upload the Extend app
-
extend-helper-cli 用の IAM クライアントを設定します。クライアントタイプ
confidentialで IAM クライアントを作成 し、以下に示す必要な権限を割り当てます。Client IDとClient Secretのコピーを保管してください。- AGS Private Cloud カスタマーの場合:
ADMIN:NAMESPACE:{namespace}:EXTEND:REPOCREDENTIALS[READ]ADMIN:NAMESPACE:{namespace}:EXTEND:APP[READ]
- AGS Public Cloud カスタマーの場合:
- Extend > Extend app image repository access (Read)
- Extend > App (Read)
- AGS Private Cloud カスタマーの場合:
-
必要な環境変数をエクスポートし、extend-helper-cli を使用して Extend アプリのコンテナイメージをビルドして AGS にアップロードします。
<project-dir>が Extend アプリのプロジェクトディレクトリを指していることを確認してください<namespace>と<app-name>の値は、Extend アプリのApp Detailページで確認できます- 適切なイメージタグ(例:
v0.0.1)を使用してください
- Linux
- Windows (WSL2)
- macOS
# Your AGS environment base URL, e.g., https://spaceshooter.prod.gamingservices.accelbyte.io, https://dev.accelbyte.io, etc.
export AB_BASE_URL='https://xxxxxxxxxx'
# Client ID of OAuth Client for extend-helper-cli (from step 1)
export AB_CLIENT_ID='xxxxxxxxxx'
# Client Secret of OAuth Client for extend-helper-cli (from step 1)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# Your AGS environment base URL, e.g., https://spaceshooter.prod.gamingservices.accelbyte.io, https://dev.accelbyte.io, etc.
export AB_BASE_URL='https://xxxxxxxxxx'
# Client ID of OAuth Client for extend-helper-cli (from step 1)
export AB_CLIENT_ID='xxxxxxxxxx'
# Client Secret of OAuth Client for extend-helper-cli (from step 1)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# Your AGS environment base URL, e.g., https://spaceshooter.prod.gamingservices.accelbyte.io, https://dev.accelbyte.io, etc.
export AB_BASE_URL='https://xxxxxxxxxx'
# Client ID of OAuth Client for extend-helper-cli (from step 1)
export AB_CLIENT_ID='xxxxxxxxxx'
# Client Secret of OAuth Client for extend-helper-cli (from step 1)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-darwin_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1important- 上記のコマンドは、Extend アプリのプロジェクトとは別のターミナルで、異なる作業ディレクトリから実行することをお勧めします。これにより、extend-helper-cli が Extend アプリ用の環境変数を誤って使用してしまうことを防げます。
- 次のエラーが発生した場合は、解決手順について トラブルシューティング: Docker のログインに失敗する を参照してください。
Error saving credentials: error storing credentials - err: exit status 1, out: `error storing credentials - err: exit status 1, out: `The stub received bad data.`
イメージが正常にアップロードされると、Image Version History ページにバージョン v0.0.1 のイメージが表示されます。

Configure the Extend app
アップロードした Extend アプリをデプロイする前に、Extend アプリが必要とする環境変数を設定する必要があります。アプリの詳細ページで、Extend アプリをローカルで実行・テストした際に使用したものと同じ値で、次の環境変数を設定します。
AB_CLIENT_IDAB_CLIENT_SECRET
Extend Override アプリがリリース v2024.02.13 より前のテンプレートに基づいている場合は、必ず PLUGIN_GRPC_SERVER_AUTH_ENABLED 環境変数を true に設定してください。設定しない場合、Extend アプリのアクセストークン検証が無効になり、有効なアクセストークンなしで Extend アプリにアクセスされる可能性があります。
リリース v2024.02.13 以降、Extend Override アプリテンプレートの PLUGIN_GRPC_SERVER_AUTH_ENABLED はデフォルトで true に設定されています。アクセストークン検証は、PLUGIN_GRPC_SERVER_AUTH_ENABLED が明示的に false に設定された場合にのみ無効化できます。これに合わせて、Admin Portal から作成されるすべての新しい Extend アプリには、デフォルトでは PLUGIN_GRPC_SERVER_AUTH_ENABLED 環境変数が設定されなくなりました。以前は、Admin Portal から作成されるすべての新しい Extend アプリに PLUGIN_GRPC_SERVER_AUTH_ENABLED=false が追加されていました。
Deploy the Extend app
Extend アプリをデプロイするには、Deploy Latest Image をクリックします。アプリのステータスが RUNNING に更新されるまで待ちます。これは、Extend アプリが正常にデプロイされたことを示します。
Set AGS to use the Extend app
Admin Portal で、Online > Store & Catalog > Customization > Revocation に移動します。既存の設定を編集するには、Overridden by セクションの編集(鉛筆)ボタンをクリックします。

AccelByte hosted オプションを選択し、先ほどデプロイした Extend アプリを選択します。Save をクリックして完了します。
Next step
Extend Override アプリテンプレートを変更して、独自のカスタムロジックを実装する手順に進みます。詳細については、こちら を参照してください。