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

セッション・オーバーライドによる外部専用ゲームサーバー管理統合の紹介

Last updated on February 4, 2026

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

はじめに

AccelByte Gaming Services(AGS)のSessionサービスを使用すると、お好みの外部またはサードパーティの専用ゲームサーバー管理ツールとゲームを統合できます。AGS Sessionサービスは、最小プレイヤー数(セッションテンプレート設定内)がセッションに参加した時点で専用サーバーをリクエストします。

Normal dedicated game server request flow with AMS

AGSでは、Extend Overrideを使用してデフォルトのセッション動作をオーバーライドできます。AMSに専用ゲームサーバー(DS)をリクエストする代わりに、SessionサービスはSession OverrideアプリでユーザーがConfigureした外部プロバイダーからDSをリクエストします。

Custom dedicated game server request flow with external DS Management

この記事では、以下の方法について説明します:

  • 外部専用ゲームサーバー管理と統合するためのセッション機能用Extend Overrideアプリテンプレートの変更
  • AGS Admin Portal内のセッションテンプレート設定でカスタム専用ゲームサーバーソースを設定
  • 専用ゲームサーバーをリクエストする際にセッションサービス機能をオーバーライドするgRPCサーバーの作成
注記
  • この記事の手順では、外部専用サーバープロバイダーとしてGoogle Cloud Platformを統合するためにAGS Sessionサービスをカスタマイズする方法を示しています。AWS Gamelift統合のドキュメントは近日追加予定です。
  • AccelByte Multiplayer Server(AMS)をご確認ください。これはAGSの専用サーバー管理ツールです。AMSは、プレイヤーの可能な限り近くに専用ゲームサーバーを提供できる動的な専用ゲームサーバーマネージャーです。

前提条件

APIコントラクト

コントラクト内の関数は以下の通りです:

service SessionDsm{
rpc CreateGameSession(RequestCreateGameSession) returns (ResponseCreateGameSession);
rpc TerminateGameSession(RequestTerminateGameSession) returns (ResponseTerminateGameSession);
rpc CreateGameSessionAsync(RequestCreateGameSession) returns (ResponseCreateGameSessionAsync);
}

CreateGameSession

CreateGameSessionは、クライアントまたはマッチメイキングがDS管理プロバイダーから専用ゲームサーバーをリクエストするゲームセッションを作成する際に呼び出されます。

public override Task<ResponseCreateGameSession> CreateGameSession(RequestCreateGameSession request, ServerCallContext context)
{
...
}

CreateGameSessionAsync

CreateGameSessionと同じ機能を実行しますが、非同期で実行されます。

public override Task<ResponseCreateGameSessionAsync> CreateGameSessionAsync(RequestCreateGameSession request, ServerCallContext context)
{
...
}

TerminateGameSession

TerminateGameSessionは、ゲームセッションが削除される際に呼び出されます。

public override Task<ResponseTerminateGameSession> TerminateGameSession(RequestTerminateGameSession request, ServerCallContext context)
{
...
}
備考

gRPCリクエスト処理の詳細については、こちらをご覧ください。

専用ゲームサーバーロジック

ゲームセッションのライフサイクルを専用ゲームサーバー(DS)のステータスと同期させることが重要です。これにより、専用ゲームサーバーがすでに削除またはシャットダウンされているときに、ゲームセッションがハング(またはまだアクティブ)状態になることを防ぎます。DSがシャットダウンする際に、delete game sessionエンドポイントを呼び出して関連するゲームセッションを削除することをお勧めします。SDK関数も参照してください。

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

サンプルとして、この設定ではGoogle Cloud(GCP)仮想マシンを専用ゲームサーバーをデプロイする外部の場所として使用します。

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

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

Google Cloud Platformのセットアップ

  1. Google Cloud Platform(GCP)にログインします

    gcloud auth login
  2. service-key-accountを作成します。

    gcloud iam service-accounts keys create test.json --iam-account=xxxx@xxxx.iam.gserviceaccount.com
  3. GCPのトラフィック用にVirtual Private Cloud(VPC)でファイアウォールのIPアドレスとポートを許可します。

  4. GCPで、サンプルゲームDSのDockerイメージ(アーティファクト)用のリポジトリを作成します。タグを追加し、DSをDockerリポジトリにプッシュします。コマンド例:

    docker tag sampleds asia-southeast1-docker.pkg.dev/xxxx/xxxx/sampleds
    docker push asia-southeast1-docker.pkg.dev/xxxx/xxxx/sampleds
備考
  • 統合中の問題を回避するため、GCPのインスタンス名は小文字で命名し、62文字を超えないようにすることをお勧めします。
  • DockerのArtifact Registryへの認証設定については、Googleのドキュメントを参照してください。

アプリとセッションテンプレートの設定

  1. GCP認証情報をセットアップします。認証情報はJSONファイルに保存し、GCPの呼び出しに使用する必要があります。コードスニペットでは、service-account-key.jsonという名前になっています。

    important

    許可すべきロールは、Compute Admin、Artifact registry reader、artifact registry writer、およびservice account userです。

  2. .envファイルで環境変数をセットアップします。.env.templateはアプリテンプレートリポジトリにあります。

    AB_BASE_URL=https://prod.gamingservices.accelbyte.io        # AGS prod環境のベースURL
    AB_CLIENT_ID='xxxxxxxxxx' # 前提条件セクションのClient ID
    AB_CLIENT_SECRET='xxxxxxxxxx' # 前提条件セクションのClient Secret
    PLUGIN_GRPC_SERVER_AUTH_ENABLED=false # アクセストークンと権限検証の有効化または無効化
    DS_PROVIDER='DEMO' # DS実装の選択:DEMOまたは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 # 専用サーバーのオープンポート
  3. アプリ(gRPC)サーバーをローカルで実行するか、AGS Extend(AccelByteホスト)にデプロイします。

    1. gRPCサーバーをローカルで実行します。セッション専用サーバーExtend Overrideアプリテンプレートの使用開始記事のTest with AGS手順に従ってください。
    2. アプリをAGS Extendにデプロイします。セッション専用サーバーExtend Overrideアプリテンプレートの使用開始記事のDeploy in AGS手順に従ってください。
  4. ネームスペースでセッションテンプレート設定をセットアップし、サーバー設定をCustomに設定します。アプリをローカルで実行するか、独自のサーバーまたはクラウドにデプロイする場合は、Custom URLにgRPCアプリのパブリックURLを入力します。アプリをAGS Extendにデプロイする場合は、AccelByte Hostedオプションを選択し、Session Override Appを選択します。

    Session template configuration to select a custom DS app

  5. Custom Serverを使用して設定したセッションテンプレートを使用してゲームセッションを作成し、Session Overrideアプリをテストします。最小プレイヤー数がセッションに参加すると、GCPで専用ゲームサーバーがリクエストされ、スポーンされます。

    GCP console sample