セッション専用サーバーのカスタマイズを始める
注釈:本資料はAI技術を用いて翻訳されています。
Overview
AccelByte Gaming Services (AGS) では、外部プロバイダーから専用ゲームサーバーをリクエストするためのカスタムセッションを実装できます。
この記事では、Extend Override アプリテンプレートを例として使用し、外部プロバイダーから専用ゲームサーバーをリクエストするシンプルなカスタムセッションをセットアップする手順を説明します。
Prerequisites
- C#
- Go
- Java
- Python
-
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 の場合
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
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 から利用可能なバイナリを使用します。
- extend-helper-cli から利用可能なバイナリを使用します。
g. TCP フォワーディング機能を持つローカルトンネルサービス(以下など)
-
無料プランでは登録が必要です。クイックスタートについては、ngrok のドキュメントを参照してください。
-
登録なしで無料で試すことができます。クイックスタートについては、pinggy のドキュメントを参照してください。
-
-
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 の場合
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合
Windows または macOS に Docker Desktop をインストールする方法については、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Go v1.24
- Go のインストールガイドに従って Go をインストールします。
go version
go version go1.24.0 ...e. Postman
- Postman から利用可能なバイナリを使用します。
- extend-helper-cli から利用可能なバイナリを使用します。
g. TCP フォワーディング機能を持つローカルトンネルサービス(以下など)
-
無料プランでは登録が必要です。クイックスタートについては、ngrok のドキュメントを参照してください。
-
登録なしで無料で試すことができます。クイックスタートについては、pinggy のドキュメントを参照してください。
-
-
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 の場合
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合
Windows または macOS に Docker Desktop をインストールする方法については、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. JDK 17
-
Linux Ubuntu の場合
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install openjdk-17-jdkを実行します。 -
Windows または macOS の場合
Microsoft Build of OpenJDK のインストールについては、Microsoft のドキュメントを参照してください。
java --version
openjdk 17.0.10 2024-01-16
...
e. Postman
- Postman から利用可能なバイナリを使用します。
- extend-helper-cli から利用可能なバイナリを使用します。
g. TCP フォワーディング機能を持つローカルトンネルサービス(以下など)
-
無料プランでは登録が必要です。クイックスタートについては、ngrok のドキュメントを参照してください。
-
登録なしで無料で試すことができます。クイックスタートについては、pinggy のドキュメントを参照してください。
❗ macOS では、上記ツールの一部を簡単にインストールするために Homebrew を使用できます。
-
-
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 の場合
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるために、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合
Windows または macOS に Docker Desktop をインストールする方法については、Docker のドキュメントを参照してください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Python 3.10
-
Linux Ubuntu の場合
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install python3 python3-venvを実行します。 -
Windows または macOS の場合
こちらから利用可能なインストーラーを使用します。
python3 --version
Python 3.10.12
e. Postman
- Postman から利用可能なバイナリを使用します。
- extend-helper-cli から利用可能なバイナリを使用します。
g. TCP フォワーディング機能を持つローカルトンネルサービス(以下など)
-
無料プランでは登録が必要です。クイックスタートについては、ngrok のドキュメントを参照してください。
-
登録なしで無料で試すことができます。クイックスタートについては、pinggy のドキュメントを参照してください。
-
- 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
- AGS Public Cloud 顧客の例:
- まだ持っていない場合は、ゲームネームスペースを作成してください。ネームスペース ID を控えておきます。
confidentialクライアントタイプで OAuth クライアントを作成します。Client IDとClient Secretを保管しておいてください。
- ベース URL:
Clone the app template
- C#
- Go
- Java
- Python
git clone https://github.com/AccelByte/session-dsm-grpc-plugin-csharp.git
git clone https://github.com/AccelByte/session-dsm-grpc-plugin-go.git
git clone https://github.com/AccelByte/session-dsm-grpc-plugin-java.git
git clone https://github.com/AccelByte/session-dsm-grpc-plugin-python.git
Set up, run, and test an Extend app
このセクションでは、Extend アプリのセットアップ、ビルド、実行、テストの方法について説明します。
Set up the Extend app
Extend アプリのサンプルカスタム関数を実行するには、以下の手順に従います。
-
.env.templateファイルの内容をコピーして、docker compose の.envファイルを作成します。注記ホスト OS の環境変数は、
.envファイルの変数よりも優先されます。.envファイルの変数が正しく反映されないように見える場合は、同じ名前のホスト OS 環境変数が存在するかどうかを確認してください。詳細については、docker compose の環境変数の優先順位に関する Docker のドキュメントを参照してください。 -
以下に示すように、
.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
- C#
- Go
- Java
- Python
このアプリテンプレートをビルドするには、以下のコマンドを使用します。
make build
このアプリテンプレートをビルドするには、以下のコマンドを実行します。
make build
このアプリテンプレートをビルドするには、以下のコマンドを使用します。
make build
このアプリテンプレートをビルドするには、以下のコマンドを使用します。
make build
Run the Extend app
- C#
- Go
- Java
- Python
このアプリテンプレートをコンテナで(ビルドして)実行するには、以下のコマンドを実行します。
docker compose up --build
このアプリテンプレートをコンテナで(ビルドして)実行するには、以下のコマンドを実行します。
docker compose up --build
このアプリテンプレートをコンテナで(ビルドして)実行するには、以下のコマンドを実行します。
docker compose up --build
このアプリテンプレートをコンテナで(ビルドして)実行するには、以下のコマンドを実行します。
docker compose up --build
Test the Extend app
Extend アプリは、ローカル開発環境または AGS でテストできます。
Test in a local development environment
テストを行う前に、PLUGIN_GRPC_SERVER_AUTH_ENABLED が false に設定されていることを確認してください。そうでない場合、gRPC リクエストは gRPC server によって拒否されます。
このアプリテンプレートのカスタム関数は、Postman を使用してローカルでテストできます。Postman を使用して Extend アプリをテストするには、以下の手順に従います。
-
grpc-plugin-dependencies リポジトリの
README.mdの手順に従って、dependency servicesを実行します。warning現時点では、mTLS を無効にして依存サービスを起動してください:
AccelByte Gaming Servicesでは現在サポートされていませんが、セキュリティ向上のため後日有効化される予定です。有効化されると、mTLS なしの gRPC クライアント呼び出しは拒否されます。 -
以下のコマンドを使用して、この
gRPC serverアプリテンプレートを実行します。
- C#
- Go
- Java
- Python
docker compose up --build
docker compose up --build
docker compose up --build
docker compose up --build
-
Postman で新しい
gRPC requestを作成し、サーバー URL としてlocalhost:10000を入力します。この設定により、dependency servicesのEnvoyプロキシを介してgRPC serverに実質的にアクセスします。詳細については、gRPC リクエストの作成に関する Postman のドキュメントを参照してください。 -
続けて Postman で
CreateGameSessiongRPC 呼び出しメソッドを選択し、Invokeボタンをクリックします。これにより、gRPC サーバーアプリテンプレートへのストリーミング接続が開始されます。 -
以下のサンプル 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 をインターネットに公開する必要があります。
- 以下のコマンドを使用して、この
gRPC serverアプリテンプレートを実行します。
- C#
- Go
- Java
- Python
docker compose up --build
docker compose up --build
docker compose up --build
-
ローカル開発環境の
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:xxxxxやtcp://xxxxx-xxx-xxx-xxx-xxx.a.free.pinggy.link:xxxxx)を控えておいてください。備考gRPC サーバーポート(TCP)をインターネットに公開するために、他のローカルトンネルサービスや別の方法を使用することもできます。
-
-
Admin Portal で、設定を行う正しい namespace に移動し、以下を実行します。
- サイドバーメニューで Multiplayer > Matchmaking > Session Configuration に移動します。
- Add Session Template ボタンをクリックします。
- Server の設定を DS - Custom に選択します。次に、Custom URL オプションを選択し、手順3のトンネルフォワーディング URL を入力します。

-
confidentialクライアントタイプで、以下の権限を含む OAuth クライアントを作成します。- AGS Private Cloud 顧客の場合:
NAMESPACE:{namespace}:MMV2GRPCSERVICE [READ]
importantClient IDとClient Secretのコピーを保管しておいてください。- このステップで作成した OAuth クライアントは、Prerequisites セクションで言及したものとは異なります。次のステップの CLI デモアプリで必要になります。
- AGS Private Cloud 顧客の場合:
-
手動で、またはマッチメイキングプロセスを介してゲームセッションを作成すると、セッションは代わりに GCP プラットフォームから DS をリクエストします。
Deploy in AGS
AGS で Extend アプリをデプロイするには、Admin Portal で以下の手順が必要です。
Create the Extend app
- AGS Admin Portal で、Extend Override アプリを作成したいネームスペースに移動します。
- サイドバーメニューの ADD-ONS の下にある Extend > Override に移動します。
- Overridable Features ページで、+ Create New ボタンをクリックします。
- Create App フォームで、Extend アプリの名前と説明(任意)を入力します。
- Create をクリックします。新しい Extend アプリが Overridable Features アプリ一覧に追加されます。
Upload the Extend app
-
extend-helper-cli 用の IAM クライアントをセットアップします。クライアントタイプ
confidentialで IAM クライアントを作成し、以下に示す必要な権限を割り当てます。Client IDとClient 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)
- AGS Private Cloud 顧客の場合:
-
必要な環境変数をエクスポートし、extend-helper-cli を使用して Extend アプリのコンテナイメージをビルドし、AGS にアップロードします。
<project-dir>が Extend アプリのプロジェクトディレクトリを指していることを確認してください<namespace>と<app-name>の値は、Extend アプリのApp Detailページで確認できます- 適切なイメージタグ(例:
v0.0.1)を使用してください
- Linux
- Windows (WSL2)
- macOS
# 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# 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# 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-darwin_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1important- 上記のコマンドは、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 バージョンのイメージが表示されます。

Configure the Extend app
アップロードした Extend アプリをデプロイする前に、Extend アプリが必要とする環境変数を設定する必要があります。アプリの詳細ページで、Extend アプリをローカルで実行・テストする際に使用したのと同じ値の環境変数を設定します。
AB_CLIENT_IDAB_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 が追加されていました。
Deploy the Extend app
Extend アプリをデプロイするには、Deploy Latest Image をクリックします。アプリのステータスが RUNNING に更新されるまで待ちます。これにより、Extend アプリが正常にデプロイされたことが示されます。
Set AGS to use the Extend app
-
AGS Admin Portal で、カスタム関数を作成するために使用したい namespace に移動します。
-
Admin Portal のサイドバーで、Multiplayer > Matchmaking > Session Configuration をクリックします。
-
Session Configurations ページで、Add Session Template ボタンをクリックします。
セッション作成フォームが表示されます。

-
セッションテンプレートの詳細、接続、参加可能性の設定を入力します。
importantセッションテンプレートを作成する際は、サーバー選択で必ず DS - Custom オプションを選択してください。
-
リストから AccelByte Hosted オプションを選択し、作成した Extend App の名前を選択します。
-
(任意)Deployment と Client Version の情報を入力します。
-
Save をクリックして、新しいセッションテンプレートを作成します。
Next step
Extend Override アプリテンプレートを変更して、独自のカスタムロジックを実装する手順に進みます。詳細については、こちらを参照してください。