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

セッション専用サーバーのカスタマイズを始める

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/session-dsm-grpc-plugin-csharp.git

Set up, run, and test an Extend app

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

Set up the Extend app

Extend アプリのサンプルカスタム関数を実行するには、以下の手順に従います。

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

    注記

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

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

    AB_BASE_URL=https://prod.gamingservices.accelbyte.io        # AccelByte Gaming Services 本番環境のベース URL
    AB_CLIENT_ID='xxxxxxxxxx' # Prerequisites セクションからの Client ID
    AB_CLIENT_SECRET='xxxxxxxxxx' # Prerequisites セクションからの Client Secret
    PLUGIN_GRPC_SERVER_AUTH_ENABLED=false # アクセストークンと権限の検証を有効化または無効化します
    DS_PROVIDER='DEMO' # DS 実装を選択します(DEMO、GAMELIFT、または GCP)

    // GCP Config
    GCP_SERVICE_ACCOUNT_FILE='./account.json' # json 形式の GCP サービスアカウントファイル
    GCP_PROJECT_ID=xxxxx-xxxx # GCP プロジェクト ID
    GCP_NETWORK=public # GCP ネットワークタイプ
    GCP_MACHINE_TYPE=e2-micro # GCP インスタンスタイプ
    GCP_REPOSITORY=asia-southeast1-docker.pkg.dev/xxxx/gcpvm # GCP リポジトリ
    GCP_RETRY=3 # インスタンス取得のための GCP リトライ回数
    GCP_WAIT_GET_IP=1 # インスタンス IP 取得までの GCP 待機時間(秒)
    GCP_IMAGE_OPEN_PORT=8080 # 専用サーバーの開放ポート
    注記

    このアプリテンプレートでは、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. grpc-plugin-dependencies リポジトリの README.md の手順に従って、dependency services を実行します。

    warning

    現時点では、mTLS を無効にして依存サービスを起動してください: AccelByte Gaming Services では現在サポートされていませんが、セキュリティ向上のため後日有効化される予定です。有効化されると、mTLS なしの gRPC クライアント呼び出しは拒否されます。

  2. 以下のコマンドを使用して、この gRPC server アプリテンプレートを実行します。

docker compose up --build
  1. Postman で新しい gRPC request を作成し、サーバー URL として localhost:10000 を入力します。この設定により、dependency servicesEnvoy プロキシを介して gRPC server に実質的にアクセスします。詳細については、gRPC リクエストの作成に関する Postman のドキュメントを参照してください。

  2. 続けて Postman で CreateGameSession gRPC 呼び出しメソッドを選択し、Invoke ボタンをクリックします。これにより、gRPC サーバーアプリテンプレートへのストリーミング接続が開始されます。

  3. 以下のサンプル JSON データをコピーして送信することで、マッチにおけるプレイヤー数を指定するパラメーターを送信し続けます。

    {
    "client_version": "test",
    "deployment": "test-deployment",
    "game_mode": "test-game",
    "maximum_player": "10",
    "namespace": "testing",
    "requested_region": [
    "us-west-1",
    "us-west-2"
    ],
    "session_data": "testing",
    "session_id": "uuidv4"
    }

Test with AGS

ローカルで実行しているこのアプリを AGS でテストするには、gRPC server をインターネットに公開する必要があります。

  1. 以下のコマンドを使用して、この gRPC server アプリテンプレートを実行します。
  1. ローカル開発環境の 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 サーバーポート(TCP)をインターネットに公開するために、他のローカルトンネルサービスや別の方法を使用することもできます。

  2. Admin Portal で、設定を行う正しい namespace に移動し、以下を実行します。

    1. サイドバーメニューで Multiplayer > Matchmaking > Session Configuration に移動します。
    2. Add Session Template ボタンをクリックします。
    3. Server の設定を DS - Custom に選択します。次に、Custom URL オプションを選択し、手順3のトンネルフォワーディング URL を入力します。 カスタム DS アプリを選択するセッションテンプレート設定
  3. confidential クライアントタイプで、以下の権限を含む OAuth クライアントを作成します。

    • AGS Private Cloud 顧客の場合:
      • NAMESPACE:{namespace}:MMV2GRPCSERVICE [READ]
    important
    • Client IDClient Secret のコピーを保管しておいてください。
    • このステップで作成した OAuth クライアントは、Prerequisites セクションで言及したものとは異なります。次のステップの CLI デモアプリで必要になります。
  4. 手動で、またはマッチメイキングプロセスを介してゲームセッションを作成すると、セッションは代わりに GCP プラットフォームから DS をリクエストします。

Deploy in AGS

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

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

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 アプリイメージリポジトリアクセス(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 でのイメージ履歴

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

  1. AGS Admin Portal で、カスタム関数を作成するために使用したい namespace に移動します。

  2. Admin Portal のサイドバーで、Multiplayer > Matchmaking > Session Configuration をクリックします。

  3. Session Configurations ページで、Add Session Template ボタンをクリックします。

    セッション作成フォームが表示されます。

    カスタム DS アプリを選択するセッションテンプレート設定

  4. セッションテンプレートの詳細、接続、参加可能性の設定を入力します。

    important

    セッションテンプレートを作成する際は、サーバー選択で必ず DS - Custom オプションを選択してください。

  5. リストから AccelByte Hosted オプションを選択し、作成した Extend App の名前を選択します。

  6. (任意)DeploymentClient Version の情報を入力します。

  7. Save をクリックして、新しいセッションテンプレートを作成します。

Next step

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