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

チャレンジゴール割り当てExtend Overrideアプリテンプレートを始める

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: <環境のドメインURL>
      • AGS Public Cloudの場合の例: https://spaceshooter.prod.gamingservices.accelbyte.io
      • AGS Private Cloudの場合の例: https://dev.customer.accelbyte.io
    • ゲームネームスペースが作成されていること。
    • confidentialクライアントタイプで作成されたIAMクライアントClient IDClient Secretを記録しておいてください。

アプリテンプレートのクローン

git clone https://github.com/AccelByte/challenge-assignment-plugin-server-csharp.git

Extendアプリの設定、ビルド、実行、テスト

このセクションでは、AGS Extendアプリの設定、ビルド、実行、テストの方法について説明します。

Extendアプリのセットアップ

このアプリを実行できるようにするには、以下の設定手順に従ってください:

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

    注記

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

  2. 以下に示すように、.envファイルに必要な環境変数を入力します。

    AB_BASE_URL=https://test.accelbyte.io     # AGS環境のベースURL
    AB_CLIENT_ID='xxxxxxxxxx' # IAM Client ID
    AB_CLIENT_SECRET='xxxxxxxxxx' # IAM Client Secret
    AB_NAMESPACE='xxxxxxxxxx' # ゲームネームスペースID
    PLUGIN_GRPC_SERVER_AUTH_ENABLED=true # アクセストークン検証の有効/無効
    注記

    このアプリでは、PLUGIN_GRPC_SERVER_AUTH_ENABLEDはデフォルトでtrueになっています。falseに設定すると、AccelByte Gaming ServicesのアクセストークンなしでgRPCサーバーを呼び出すことができます。このオプションは開発目的のみで提供されています。本番環境ではgRPCサーバーのアクセストークン検証を有効にすることを推奨します。

Extendアプリのビルド

このアプリをビルドするには、以下のコマンドを実行します:

make build

Extendアプリの実行

このアプリをコンテナ内でビルドおよび実行するには、以下のコマンドを実行します:

docker compose up --build

Extendアプリのテスト

ローカル開発環境またはAGSでExtendアプリをテストできます。

ローカル開発環境でのテスト

important

テストの前に、PLUGIN_GRPC_SERVER_AUTH_ENABLEDfalseに設定されていることを確認してください。そうでない場合、gRPCリクエストはgRPCサーバーにより拒否されます。

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

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

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

  3. 続いてAssignmentFunction/Assignメソッドを選択し、以下のサンプルメッセージで呼び出します:

    {
    "goals": [
    {
    "code": "goal-code",
    "challengeCode": "challenge-code",
    "name": "goal name",
    "isActive": true,
    "tags": [
    {
    "name": "big goal"
    }
    ],
    "requirements": [
    {
    "operator": "AND",
    "predicates": [
    {
    "parameterName": "mmr",
    "parameterType": "STATISTIC",
    "matcher": "GREATER_THAN",
    "targetValue": 100
    }
    ]
    }
    ],
    "rewards": [
    {
    "type": "STATISTIC",
    "itemId": "mmr",
    "itemName": "more mmr",
    "quantity": 10
    }
    ],
    "createdAt": {
    "seconds": "5095510",
    "nanos": 728418711
    },
    "updatedAt": {
    "seconds": "7873407235",
    "nanos": -217262300
    }
    }
    ],
    "namespace": "namespace",
    "userId": "dcd3fc9c238a4c6d9cd8c5da2f595bd6"
    }

    レスポンスは、プレイヤーに割り当てるために選択されたゴールのリストになります。

    {
    "assignedGoals": [
    {
    "code": "goal-code",
    "challengeCode": "challenge-code",
    "name": "goal name",
    "isActive": true,
    "tags": [
    {
    "name": "big goal"
    }
    ],
    "requirements": [
    {
    "operator": "AND",
    "predicates": [
    {
    "parameterName": "mmr",
    "parameterType": "STATISTIC",
    "matcher": "GREATER_THAN",
    "targetValue": 100
    }
    ]
    }
    ],
    "rewards": [
    {
    "type": "STATISTIC",
    "itemId": "mmr",
    "itemName": "more mmr",
    "quantity": 10
    }
    ],
    "createdAt": {
    "seconds": "5095510",
    "nanos": 728418711
    },
    "updatedAt": {
    "seconds": "7873407235",
    "nanos": -217262300
    }
    }
    ],
    "namespace": "namespace",
    "userId": "dcd3fc9c238a4c6d9cd8c5da2f595bd6"
    }

AGSでのテスト

AGS環境でローカルで実行されているアプリをテストするには、gRPCサーバーがインターネットに接続されている必要があります。パブリックIPを必要とせずにこれを行うには、ローカルトンネルサービスを使用できます。

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

    docker compose up --build
  2. ローカル開発環境のgRPCサーバーのTCPポート6565をインターネットに公開します。最も簡単な方法は、ローカルトンネルサービスプロバイダーを使用することです。

    • ngrokにサインインし、ngrokダッシュボードからauthtokenを取得してローカル環境に設定します。 そして、gRPCサーバーを公開するには、以下のコマンドを使用します:

      ngrok tcp 6565
    • または代わりに、pinggyを使用し、sshコマンドラインのみで簡単なトンネルを設定することもできます。 その場合、gRPCサーバーを公開するには、以下のコマンドを使用します:

      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サーバーのポート(TCP)をインターネットに公開するために、他のローカルトンネルサービスや別の方法を使用することもできます。

  3. Admin Portalで、この設定に対応するネームスペースに移動し、以下を行います:

    1. Online > Challenges > Customizationに移動します。

    2. Add Configurationをクリックします。

    3. Locally hosted for testing purposeオプションを選択します。前の手順で取得したトンネル転送URLを入力し、Registerをクリックします。

      Challengeのオーバーライド可能な設定を追加するモーダル

  4. confidentialクライアントタイプで、以下の権限を含むIAMクライアントを作成します:

    • AGS Private Cloudの場合:
      • ADMIN:NAMESPACE:{namespace}:CHALLENGE:PLUGIN [CREATE,READ,UPDATE,DELETE]
      • ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:* [DELETE]
    • AGS Public Cloudの場合:
      • Challenge -> Customization(Read、Create、Update、Delete)
      • IAM > Users(Delete)
    important
    • IAMクライアントの作成が完了するとClient Secretにアクセスできなくなるため、必ず保存しておいてください。
    • この手順で作成するOAuthクライアントは、Prerequisitesセクションで言及されているものとは異なります。これは、次の手順でPostmanコレクションがgRPCサーバーURLを登録し、テストユーザーの作成・削除を行うために必要です。
  5. 前の手順で取得したClient IDClient Secretを使用して、Postmanコレクション(demo/challenge-assignment-demo.postman_collection.json)の概要にある手順に従って環境を設定します。extendアプリのフローが実行されているとき、このアプリのコンソールログに注意してください。コレクション内のすべてのリクエストを実行すると、少なくとも1つのgRPCサーバーメソッドが呼び出されるはずです。

Deploy in AGS

AGSでExtendアプリをデプロイするには、Admin Portalで以下の手順が必要です:

  1. Extendアプリの作成
  2. Extendアプリのアップロード
  3. Extendアプリの設定
  4. Extendアプリのデプロイ
  5. Extendアプリを使用するようにAGSを設定

Extendアプリの作成

  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アプリリストに追加されます。

Extendアプリのアップロード

  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のような適切なイメージタグを使用してください
    # AGS環境のベースURL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
    export AB_BASE_URL='https://xxxxxxxxxx'
    # extend-helper-cli用OAuthクライアントのClient ID(手順1より)
    export AB_CLIENT_ID='xxxxxxxxxx'
    # extend-helper-cli用OAuthクライアントのClient Secret(手順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のイメージが表示されます。

    AGS Admin Portalのイメージ履歴

Extendアプリの設定

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

  • AB_CLIENT_ID
  • AB_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が追加されていました。

Extendアプリのデプロイ

Extendアプリをデプロイするには、Deploy Latest Imageをクリックします。アプリのステータスがRUNNINGに更新されるまで待ちます。これはExtendアプリが正常にデプロイされたことを示します。

Extendアプリを使用するようにAGSを設定

Admin PortalでChallengeのカスタマイズを更新します。既存の設定を編集するには、Overridden Byセクションに移動します。

オーバーライドの詳細が表示されたChallengeカスタマイズページ

AccelByte hostedオプションを選択し、Extendアプリの1つを選びます。完了するにはRegisterをクリックします。

アプリ設定編集モーダル

Next step

Extend Overrideアプリテンプレートを修正して、独自のカスタムロジックを実装してください。詳細については、こちらを参照してください。