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

エンタイトルメント失効のカスタマイズを始める

Last updated on July 15, 2026

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

Overview

AccelByte Gaming Services (AGS) では、プレイヤーのアセットの失効処理を行うカスタムロジックを実装できます。

この記事では、Extend Override アプリテンプレートを例として使用し、プレイヤーのアセットの失効処理を行うためのカスタムロジックを設定する手順を説明します。

Prerequisites

  1. 次のツールがインストールされた 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 の場合:

      1. Ubuntu リポジトリからインストールするには、sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2 を実行します。
      2. ユーザーを docker グループに追加します: sudo usermod -aG docker $USER
      3. 変更を反映させるために、ログアウトしてから再度ログインします。
    • 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 から入手できるバイナリを使用します。

    f. extend-helper-cli

    g. TCP フォワーディング機能を備えたローカルトンネルサービス(以下など):

  1. 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
    • まだ持っていない場合は、ゲームネームスペースを作成 してください。ネームスペース ID を控えておきます。
    • confidential クライアントタイプで OAuth クライアントを作成 します。Client IDClient Secret を保管してください。

Clone the app template

git clone https://github.com/AccelByte/revocation-grpc-plugin-server-csharp.git

Set up, run, and test an Extend app

このセクションでは、Extend アプリのセットアップ、ビルド、実行、そしてテストの方法を説明します。

Set up the Extend app

このアプリを実行できるようにするには、次のセットアップ手順に従います。

  1. .env.template ファイルの内容をコピーして、docker compose 用の .env ファイルを作成します。

    注記

    ホスト OS の環境変数は、.env ファイルの変数よりも優先されます.env ファイル内の変数が正しく反映されないように見える場合は、同じ名前のホスト OS 環境変数が存在していないか確認してください。詳細については、docker compose の環境変数優先順位に関する Docker のドキュメント を参照してください。

  2. 以下のように .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

important

テストを行う前に、PLUGIN_GRPC_SERVER_AUTH_ENABLEDfalse に設定されていることを確認してください。設定されていない場合、gRPC リクエストは gRPC server によって拒否されます。

このアプリのカスタム関数は、Postman を使用してローカルでテストできます。Postman を使用して Extend アプリをテストするには、次の手順に従います。

  1. 次のコマンドを使用してこのアプリを実行します。

    docker compose up --build
  2. Postman で新しい gRPC リクエストを作成し、サーバー URL として localhost:6565 を入力します。詳細については、gRPC のサポートに関する Postman のガイド を参照してください。

  3. 続けて 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 を必要とせずにこれを行うには、ローカルトンネルサービスを使用します。

  1. 次のコマンドを使用してこのアプリを実行します。

    docker compose up --build
  2. ローカル開発環境の 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:xxxxxtcp://xxxxx-xxx-xxx-xxx-xxx.a.free.pinggy.link:xxxxx)を控えておいてください。

    備考

    gRPC server ポート(TCP)をインターネットに公開するために、他のローカルトンネルサービスや別の方法を使用することもできます。

  3. Admin Portal で、設定対象の正しい ネームスペース に移動し、以下を行います。

    1. サイドバーメニューで Online > Store & Catalog > Customization > Revocation に移動します。
    2. まだ何も追加していない場合は Add Configuration をクリックします。
    3. Locally hosted (for testing purpose) オプションを選択します。前の手順のローカルトンネルフォワーディング URL を入力し、Create をクリックします。
  4. 次の権限を含む 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)
    important
    • Client IDClient Secret のコピーを保管してください。
    • この手順で作成した OAuth クライアントは、Prerequisites セクションで説明したものとは異なります。次の手順で使用する Postman コレクションが、gRPC Server の URL 登録やテストユーザーの作成・削除を行うために必要となります。
  5. Postman コレクション(demo/revocation-demo.postman_collection.json)の概要にある手順に従い、前の手順で取得した Client IDClient Secret を使用して環境を設定します。Extend アプリのフローが実行されている際、このアプリのコンソールログに注意してください。コレクション内のすべてのリクエストを実行すると、gRPC Server のメソッドのうち少なくとも 1 つが呼び出されるはずです。

Deploy in AGS

AGS で Extend アプリをデプロイするには、Admin Portal で次の手順を行います。

  1. Create the Extend app
  2. Upload the Extend app
  3. Configure the Extend app
  4. Deploy the Extend app
  5. Set AGS to use the Extend app

Create the Extend app

  1. AGS Admin Portal で、Extend Override アプリを作成したいネームスペースに移動します。
  2. サイドバーメニューの ADD-ONS で、Extend > Override に移動します。
  3. Overridable Features ページで + Create New ボタンをクリックします。
  4. Create App フォームで、Extend アプリの名前と説明(任意)を入力します。
  5. Create をクリックします。新しい Extend アプリが Overridable Features アプリリストに追加されます。

Upload the Extend app

  1. extend-helper-cli 用の IAM クライアントを設定します。クライアントタイプ confidentialIAM クライアントを作成 し、以下に示す必要な権限を割り当てます。Client IDClient 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)
  2. 必要な環境変数をエクスポートし、extend-helper-cli を使用して Extend アプリのコンテナイメージをビルドして AGS にアップロードします。

    • <project-dir> が Extend アプリのプロジェクトディレクトリを指していることを確認してください
    • <namespace><app-name> の値は、Extend アプリの App Detail ページで確認できます
    • 適切なイメージタグ(例: 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
    important
    • 上記のコマンドは、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 のイメージが表示されます。

    image history in AGS Admin Portal

Configure the Extend app

アップロードした Extend アプリをデプロイする前に、Extend アプリが必要とする環境変数を設定する必要があります。アプリの詳細ページで、Extend アプリをローカルで実行・テストした際に使用したものと同じ値で、次の環境変数を設定します。

  • AB_CLIENT_ID
  • AB_CLIENT_SECRET
warning

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 セクションの編集(鉛筆)ボタンをクリックします。

click the overridden by revocation section

AccelByte hosted オプションを選択し、先ほどデプロイした Extend アプリを選択します。Save をクリックして完了します。

choosing an AccelByte extend app

Next step

Extend Override アプリテンプレートを変更して、独自のカスタムロジックを実装する手順に進みます。詳細については、こちら を参照してください。