セッション専用サーバーのカスタマイズを始める
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services(AGS)では、外部プロバイダーから専用ゲームサーバーをリクエストするカスタムセッションを実装できます。
この記事では、Extend Overrideアプリテンプレートを例として、外部プロバイダーから専用ゲームサーバーをリクエストするシンプルなカスタムセッションをセットアップするプロセスを説明します。
前提条件
- 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の場合:
Dockerのドキュメントに従って、WindowsまたはmacOSにDocker Desktopをインストールします。
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の場合:
Microsoftのドキュメントに従って、WindowsまたはmacOSに.NETをインストールします。
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の場合:
Dockerのドキュメントに従って、WindowsまたはmacOSにDocker Desktopをインストールします。
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の場合:
Dockerのドキュメントに従って、WindowsまたはmacOSにDocker Desktopをインストールします。
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のドキュメントに従って、Microsoft Build of OpenJDKをインストールします。
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の場合:
Dockerのドキュメントに従って、WindowsまたはmacOSにDocker Desktopをインストールします。
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:
<環境のドメインURL>- AGS Shared Cloudのお客様の例:
https://spaceshooter.prod.gamingservices.accelbyte.io - AGS Private Cloudのお客様の例:
https://dev.customer.accelbyte.io
- AGS Shared Cloudのお客様の例:
- まだない場合は、ゲームネームスペースを作成します。ネームスペースIDをメモしてください。
confidentialクライアントタイプでOAuthクライアントを作成します。Client IDとClient Secretを保管してください。
- ベースURL:
アプリテンプレートのクローン
- 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
Extendアプリのセットアップ、実行、テスト
このセクションでは、Extendアプリのセットアップ、ビルド、実行、テストの方法について説明します。
Extendアプリのセットアップ
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 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、GAMELIFT、またはGCP
// GCP設定
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に設定すると、gRPCサーバーはAccelByte Gaming Servicesのアクセストークンなしで呼び出すことができます。このオプションは開発目的でのみ提供されています。本番環境ではgRPCサーバーのアクセストークン検証を有効にすることをお勧めします。
Extendアプリのビルド
- C#
- Go
- Java
- Python
このアプリテンプレートをビルドするには、次のコマンドを使用します。
make build
このアプリテンプレートをビルドするには、次のコマンドを実行します:
make build
このアプリテンプレートをビルドするには、次のコマンドを使用します。
make build
このアプリテンプレートをビルドするには、次のコマンドを使用します。
make build
Extendアプリの実行
- C#
- Go
- Java
- Python
このアプリテンプレートをコンテナで(ビルドして)実行するには、次のコマンドを実行します:
docker compose up --build
このアプリテンプレートをコンテナで(ビルドして)実行するには、次のコマンドを実行します:
docker compose up --build
このアプリテンプレートをコンテナで(ビルドして)実行するには、次のコマンドを実行します:
docker compose up --build
このアプリテンプレートをコンテナで(ビルドして)実行するには、次のコマンドを実行します:
docker compose up --build
Extendアプリのテスト
Extendアプリは、ローカル開発環境またはAGSでテストできます。
ローカル開発環境でのテスト
テストする前に、PLUGIN_GRPC_SERVER_AUTH_ENABLEDがfalseに設定されていることを確認してください。そうでない場合、gRPCリクエストはgRPCサーバーによって拒否されます。
このアプリテンプレートのカスタム関数は、Postmanを使用してローカルでテストできます。Postmanを使用してExtendアプリをテストするには、次の手順に従います:
-
grpc-plugin-dependenciesリポジトリの
README.mdに従って、依存サービスを実行します。warning今のところmTLSを無効にして依存サービスを起動してください:現在
AccelByte Gaming Servicesではサポートされていませんが、セキュリティを向上させるために後で有効になります。有効になっている場合、mTLSなしのgRPCクライアント呼び出しは拒否されます。 -
次のコマンドを使用して、この
gRPCサーバーアプリテンプレートを実行します:
- C#
- Go
- Java
- Python
docker compose up --build
docker compose up --build
docker compose up --build
docker compose up --build
-
Postmanで、新しい
gRPCリクエストを作成し、サーバーURLとしてlocalhost:10000を入力します。この設定は、基本的に依存サービスのEnvoyプロキシを介してgRPCサーバーにアクセスします。詳細については、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"
}
AGSでのテスト
ローカルで実行されているこのアプリをAGSでテストするには、gRPCサーバーをインターネットに公開する必要があります。
- 次のコマンドを使用して、この
gRPCサーバーアプリテンプレートを実行します:
- C#
- Go
- Java
- Python
docker compose up --build
docker compose up --build
docker compose up --build
docker compose up --build
-
ローカル開発環境の
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)をインターネットに公開することもできます。
-
-
Admin Portalで、設定用の正しいネームスペースに移動し、次の操作を行います:
- サイドバーメニューで、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クライアントは、前提条件セクションで言及されたものとは異なります。次のステップのCLIデモアプリに必要です。
- AGS Private Cloudのお客様の場合:
-
手動またはマッチメイキングプロセスを介してゲームセッションを作成すると、セッションはAGSの代わりにGCPプラットフォームからDSをリクエストします。
AGSへのデプロイ
AGSでExtendアプリをデプロイするには、Admin Portalで次の手順を実行します:
Extendアプリの作成
- AGS Admin Portalで、Extend Overrideアプリを作成したいネームスペースに移動します。
- サイドバーメニューのADD-ONSの下で、Extend > Overrideに移動します。
- Overridable Featureページで、+ Create Newボタンをクリックします。
- Create Appフォームで、Extendアプリの名前と説明(オプション)を入力します。
- Createをクリックします。新しいExtendアプリがOverridable Featureアプリリストに追加されます。
Extendアプリのアップロード
-
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 Shared Cloudのお客様の場合:
- Extend > Extend app image repository access (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のイメージが表示されます。

Extendアプリの設定
アップロードした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が追加されていました。
Extendアプリのデプロイ
Extendアプリをデプロイするには、Deploy Latest Imageをクリックします。アプリのステータスがRUNNINGに更新されるまで待ちます。これは、Extendアプリが正常にデプロイされたことを示します。
AGSがExtendアプリを使用するように設定
-
AGS Admin Portalで、カスタム関数を作成するために使用したいネームスペースに移動します。
-
Admin Portalのサイドバーで、Multiplayer > Matchmaking > Session Configurationをクリックします。
-
Session Configurationsページで、Add Session Templateボタンをクリックします。
セッション作成フォームが表示されます。

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