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

セッションマネージャーのカスタマイズ

Last updated on February 4, 2026

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

概要

AccelByte Gaming Services(AGS)では、カスタムロジックを実装してセッション管理戦略を調整し、ゲームセッションとパーティーセッションの柔軟性と制御を強化できます。この機能により、セッションの作成、更新、削除に対する特定の動作を定義でき、既存のセッションサービス機能とのシームレスな統合を維持しながら、独自の要件を満たすことができます。

この記事では、Extend Overrideアプリテンプレートを例として、以下のイベントでセッションデータを管理するためのカスタムセッションオーバーライドを設定するプロセスを説明します。

  • OnSessionCreated: ゲームセッションが初めて作成されるときの操作。
  • OnSessionUpdated: ゲームセッションに更新または変更があるときの操作。
  • OnSessionDeleted: ゲームセッションが削除済みとしてマークされるときの操作。
  • OnPartyCreated: パーティーセッションが初めて作成されるときの操作。
  • OnPartyUpdated: パーティーセッションに更新または変更があるときの操作。
  • OnPartyDeleted: パーティーセッションが削除済みとしてマークされるときの操作。

前提条件

  1. Windows 11 WSL2/Linux Ubuntu 24.04またはmacOS 14+に以下のツールがインストールされていること:

    a. Bash

    • On Windows WSL2またはLinux Ubuntuの場合:

      bash --version

      GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
      ...
    • On macOSの場合:

      bash --version

      GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
      ...

    b. Make

    • On Windows WSL2またはLinux Ubuntuの場合:

      Ubuntuリポジトリからインストールするには、sudo apt update && sudo apt install makeを実行します。

      make --version

      GNU Make 4.3
      ...
    • On macOSの場合:

      make --version

      GNU Make 3.81
      ...

    c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)

    • On 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. ログアウトして再度ログインし、変更を有効にします。
    • On WindowsまたはmacOSの場合:

      WindowsまたはmacOSへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。

      docker version

      ...
      Server: Docker Desktop
      Engine:
      Version: 24.0.5
      ...

    d. .NET 8 SDK

    • On Linux Ubuntuの場合:

      Ubuntuリポジトリからインストールするには、sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0を実行します。

    • On WindowsまたはmacOSの場合:

      WindowsまたはmacOSへの.NETのインストールに関するMicrosoftのドキュメントに従ってください。

      dotnet --version

      8.0.104

    e. Postman

    • Postmanから利用可能なバイナリを使用します。

    f. extend-helper-cli

    g. TCP転送機能を持つローカルトンネルサービス、例えば:

    • Ngrok

      無料プランには登録が必要です。クイックスタートについてはngrokドキュメントを参照してください。

    • Pinggy

      登録なしで無料で試すことができます。クイックスタートについてはpinggyドキュメントを参照してください。

  1. AGS Admin Portal環境へのアクセス。
    • ベースURL: <環境のドメインURL>
      • AGS Shared Cloudのお客様の例: https://spaceshooter.prod.gamingservices.accelbyte.io
      • AGS Private Cloudのお客様の例: https://dev.customer.accelbyte.io
    • まだゲームネームスペースがない場合は、ゲームネームスペースを作成します。ネームスペースIDをメモしてください。
    • confidentialクライアントタイプでOAuthクライアントを作成します。Client IDClient Secretを保管してください。

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

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

Extendアプリのセットアップ、実行、テスト

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

Extendアプリのセットアップ

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

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

    注記

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

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

    AB_BASE_URL=https://test.accelbyte.io     # AccelByte Gaming Services環境のベースURL
    AB_CLIENT_ID='xxxxxxxxxx' # 前提条件セクションのClient ID
    AB_CLIENT_SECRET='xxxxxxxxxx' # 前提条件セクションのClient Secret
    AB_NAMESPACE='xxxxxxxxxx' # 前提条件セクションのNamespace ID
    PLUGIN_GRPC_SERVER_AUTH_ENABLED=false # アクセストークン検証の有効化または無効化
    注記

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

Extendアプリのビルド

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

make build

Extendアプリの実行

このアプリテンプレートをコンテナで(ビルドして)実行するには、以下のコマンドを実行します:

docker compose up --build

dockerアプリが実行されている場合、docker-composeファイルで設定されたポートを使用してアクセスできます。例えば、サンプルgRPCサーバーアプリの場合:

...
services:
app:
build: .
ports:
- "8080:8080"
- "6565:6565"
...

2つのポートが公開されており、形式はhost_port:container_portです。

  • "8080:8080": ホストマシンのポート8080をコンテナのポート8080にマッピングします。つまり、ホストでhttp://localhost:8080にアクセスすると、トラフィックがappコンテナ内のポート8080にルーティングされます。
  • "6565:6565": ホストのポート6565をコンテナのポート6565にマッピングし、コンテナ内のそのポートで実行されているサービスへのアクセスを可能にします。

Extendアプリのテスト

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

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

important

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

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

  1. grpc-plugin-dependenciesリポジトリのREADME.mdに従って、依存サービスを実行します。

    warning

    今のところmTLSを無効にして依存サービスを起動してください: mTLSは現在AGSではサポートされていませんが、セキュリティを向上させるためのサポートが間もなく追加されます。mTLSが有効になっている場合、mTLSなしのgRPCクライアント呼び出しは拒否されます。

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

    docker compose up --build
  3. Postmanで、新しいgRPCリクエストを作成し、サーバーURLとしてlocalhost:10000を入力します。この設定は、基本的に依存サービスEnvoyプロキシを介してgRPCサーバーにアクセスします。詳細については、gRPCリクエストの作成に関するPostmanのドキュメントを参照してください。

  4. Postmanで、OnSessionCreated gRPC呼び出しメソッドを選択し、Invokeボタンをクリックします。これにより、gRPCサーバーへのストリーム接続が開始されます。

  5. 引き続きPostmanで、以下のサンプルJSONをコピーしてSendをクリックし、マッチ内のプレイヤー数を指定するパラメータを送信します:

    {
    "session": {
    "session": {
    "id": "sessionid",
    "is_active": true,
    "namespace": "namespace",
    "created_by": "created_by"
    }
    }
    }

    成功時の期待されるレスポンスは、セッションが返されますが、以下のような属性フィールドが追加されます:

    {
    "session": {
    "session": {
    "id": "sessionid",
    "is_active": true,
    "namespace": "namespace",
    "created_by": "created_by",
    "attributes": {
    "SAMPLE": "value from GRPC server"
    }
    }
    }
    }

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:xxxxxまたはtcp://xxxxx-xxx-xxx-xxx-xxx.a.free.pinggy.link:xxxxxをメモしてください。

    備考

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

  3. Admin Portalで、Extendアプリがあるネームスペースに移動し、セッションテンプレートを作成します:

    1. サイドバーメニューで、Multiplayer > Matchmaking > Session Configurationに移動します。
    2. Add Session Templateボタンをクリックします。必要な情報を入力します。詳細については、セッションテンプレートの作成と設定を参照してください。
    3. Use Custom Session Functionオプションを有効にし、セッションテンプレートのアクションとしてOnSessionCreatedを選択してください。
    4. Custom URLオプションを選択し、ステップ3のトンネル転送URLを使用します。
    5. セッションテンプレートの作成を完了するか、次のステップに従ってフローをシミュレートします。

    Session Template Override

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

    • AGS Private Cloudのお客様の場合:

      • ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [CREATE,READ,UPDATE,DELETE]
      • ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:* [DELETE]
    • AGS Shared Cloudのお客様の場合:

      • Session -> Custom Configuration (Read, Create, Update, Delete)
      • IAM -> Users (Delete)
    important
    • IAMクライアントの作成を完了した後、Client Secretにアクセスできなくなるため、必ず保存してください。
    • このステップで作成されたOauthクライアントは、前提条件セクションで言及されたものとは異なります。これは、次のステップのPostmanコレクションでgRPCサーバーURLを登録し、テストユーザーを作成および削除するために必要です。
  5. Postmanコレクション(demo/session-manager-demo.postman_collection.json)の概要の指示に従って、前のステップのClient IDClient Secretを使用して環境をセットアップします。extendアプリフローが実行されているときは、このアプリのコンソールログに注意してください。コレクション内のすべてのリクエストを実行すると、少なくとも1つのgRPCサーバーメソッドが呼び出されるはずです。

AGSへのデプロイ

AGSでExtendアプリをデプロイするには、Admin Portalで以下の手順を実行します:

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

Extendアプリの作成

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

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 Shared 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のイメージが表示されます。

    image history in AGS Admin Portal

Extendアプリの設定

アップロードした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が追加されていました。

Extendアプリのデプロイ

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

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

AGS Admin Portalで、カスタム関数を作成したいネームスペースに移動します。Admin Portalのサイドバーで、Multiplayer > Matchmaking > Session Configurationをクリックします。Session Configurationsページで、Add Session Templateボタンをクリックします。セッションテンプレートを作成する際は、**"Use Custom Session Function"**の選択にチェックを入れてください。AccelByte Hostedオプションを選択し、作成したExtendアプリの名前を選択します。その後、Saveをクリックして新しいセッションテンプレートを作成します。

Session template override with extend app

次のステップ

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