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

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

Last updated on July 15, 2026

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

概要

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

AMS を使用した通常の専用ゲームサーバーリクエストフロー

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

外部 DS 管理を使用したカスタム専用ゲームサーバーリクエストフロー

この記事では、次の方法について説明します。

  • Session 機能用の Extend Override アプリテンプレートを変更して、外部の専用ゲームサーバー管理と統合する
  • AGS Admin Portal のセッションテンプレート設定内でカスタム専用ゲームサーバーソースを設定する
  • 専用ゲームサーバーをリクエストする際に Session サービスの機能をオーバーライドする gRPC サーバーを作成する
注記
  • この記事の手順では、Google Cloud Platform を外部専用サーバープロバイダーとして統合するために AGS Session サービスをカスタマイズする方法を示しています。AWS Gamelift 統合に関するドキュメントは近日追加予定です。
  • AGS の専用サーバー管理ツールである AccelByte Multiplayer Server (AMS) もご確認ください。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 がシャットダウンする際には、ゲームセッション削除エンドポイント を呼び出して関連するゲームセッションを削除することを推奨します。SDK 関数 も参照してください。

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

サンプルとして、この構成では専用ゲームサーバーをデプロイする外部の場所として 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 本番環境のベース URL
    AB_CLIENT_ID='xxxxxxxxxx' # 前提条件セクションのクライアント ID
    AB_CLIENT_SECRET='xxxxxxxxxx' # 前提条件セクションのクライアントシークレット
    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 サーバーをローカルで実行します。Session Dedicated Server Extend Override アプリテンプレート入門 の記事にある Test with AGS の手順に従ってください。
    2. アプリを AGS Extend にデプロイします。Session Dedicated Server Extend Override アプリテンプレート入門 の記事にある Deploy in AGS の手順に従ってください。
  4. 自分のネームスペースでセッションテンプレートの設定を行い、Server の設定を Custom にします。アプリをローカルで実行する場合、または自身のサーバーやクラウドにデプロイする場合は、Custom URL に gRPC アプリの公開 URL を入力します。アプリを AGS Extend にデプロイする場合は、AccelByte Hosted オプションを選択し、自分の Session Override App を選びます。

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

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

    GCP コンソールのサンプル