AMS を始める
注釈:本資料はAI技術を用いて翻訳されています。
概要
このドキュメントでは、AccelByte Multiplayer Servers(AMS)を専用サーバー(DS)プロバイダーとして使用し、ゲームを稼働させるためのシンプルなアプローチについて説明します。
AMS を DS プロバイダーとして使用するには、AccelByte Public Cloud に登録してフリートを管理し、マッチメイキングサービスまたはセッションサービスが専用サーバーをクレームできるように認可する必要があります。Unity または Unreal ベースのゲームの場合、AccelByte Game Software Development Kit(SDK)を DS に統合する必要もあります。これにより、DS が使用可能になったことを AMS に通知したり、フリートをスケールインする必要がある場合にドレイン信号に応答したりできるようになります。ゲームが別のエンジンを使用している場合は、ローカル WebSocket を介して AMS watchdog protocol を実装する必要があります。このガイドの残りの部分では、ゲームエンジンが AccelByte Game SDK でサポートされていることを前提としています。
AccelByte Public Cloud と DS のセットアップ
セットアップを行うための手順は以下のとおりです。
- AccelByte Public Cloud でアカウントを登録します。
- アカウントが作成され、ログインして AMS のトライアルを有効化したら、「Set up My Game」をクリックします。
- ネームスペースを作成したら、AMS のドキュメントに従って以下を行います。
- AMS アカウントを作成する。
- Admin Portal から AMS Command Line Interface(CLI)ツールをダウンロードする。
- AccelByte Game SDK を使用して 専用サーバーを AMS と統合する。
- AMS CLI を使用して専用サーバーのビルドをアップロードする
上記の手順に従うと、ゲームサーバーは AMS 上で実行できる状態になります。
専用サーバーのクレーム
専用サーバーをクレームする方法には、次の 2 つのオプションがあります。
- セッション管理サービスが DS をクレームする: セッション管理サービスまたはマッチメイキングサービスが、ゲームセッションが作成されたときに AMS Server Claim Endpoint を呼び出します。
- DS が自身をクレームする(セルフクレーム): DS がアクティブになったときに自身をクレームします。
どちらの方法でも、AMS は DS をクレーム済みとしてマークし、バッファ設定に従ってフリートを適切にスケールできるようにします。
AGS を使用した専用サーバーのクレーム
バックエンドとして AGS を使用している場合、セッションが作成されると AGS セッションサービスが各 DS のクレームを代わりに処理します。詳細については、セッションを設定して AMS から専用サーバーをクレームするを参照してください。
AGS を使用しない専用サーバーのクレーム
オプション 1: セッション管理サービスが DS をクレームする
ゲームが AGS を使用せず、別のマッチメイキングソリューションまたはセッション管理ソリューションを使用している場合は、利用可能な AGS Extend SDK のいずれかをセッション管理ソリューションに統合することで、AMS から専用サーバーをクレームできるようにできます。
いずれかの SDK を使用する場合、またはクレーム API に直接 REST 呼び出しを行う場合は、認可トークンが必要です。認可トークンは、OAuth のクライアント ID とシークレットを使用して取得します。
サービスが使用する IAM クライアントを設定するには、以下の手順に従います。
- AccelByte Admin Portal のサイドバーで、Game Setup > IAM Clients に移動します。
- Create IAM Clients をクリックし、Create from Template を選択して、Custom Backend Tooling テンプレートを選択します。
- 使用するシークレットを入力します。
- Permission セクションで、AMS グループ内の Dedicated Server Claim オプションを見つけ、update 権限のチェックボックスをオンにします。
- Create をクリックします。
ゲームのセッション管理サービスは、このクライアント ID とシークレットを使用してトークンを取得し、AMS から専用サーバーをクレームすることができます。マッチが成立したときに DS をクレームするシンプルなマッチメイカーを構築する例として、Accelbyte Python Extend SDK を使用した matchmaking-server AMS サンプルリポジトリを参照してください。
マッチメイカーまたはセッション管理サービスは、たとえばプレイヤーのログインを必須とし、ログイン済みのプレイヤーが一度にアクティブなマッチメイキングリクエストを 1 件のみ持つように制限するなどして、悪意のあるユーザーが過剰なクレームリクエストをトリガーすることを防ぐ必要があります。
オプション 2: DS が自身をクレームする(セルフクレーム)
サードパーティのセッション管理サービスを使用している場合、DS をクレームするための変更を加えられない場合があります。そのような場合は、以下のようにセルフクレームのアプローチを使用できます。
- 起動時に、DS はセッションプロバイダー(例: Epic Online Services のセッションサービスを使用)にセッションを登録するか、またはサーバーブラウザ(例: Steam のゲームサーバー)に利用可能なサーバーとして自身を登録します。
- プレイヤーが特定の DS でプレイすることを選択し、それに接続すると、サーバーはローカルの watchdog にクレームメッセージを送信します(AccelByte SDK を使用している場合は SDK を介して)。これにより、DS はセッション中/クレーム済みとしてマークされ、AMS はフリートのバッファ設定に従って新しい DS インスタンスを起動できるようになります。
このアプローチでは、DS がアクティブになったときに自身をクレームするため、外部サービスがクレーム呼び出しを行う必要なく、AMS がフリートを適切にスケールできるようになります。
DS にセッションを認識させる
DS は、アイドル状態(セッションを提供する準備ができている状態)ではなく、アクティブなゲームセッションを提供しているかどうかを認識する必要があります。これにより、ドレイン信号を受け取った際に適切に動作できます。想定される動作については、ドレイン信号をリスニングするで説明されています。ゲームサービスのセットアップやゲームロジックの要件に応じて、DS にセッション情報を認識させる方法には、以下のようないくつかの方法があります。
- ゲームが AGS をバックエンドとして使用している場合、DS は AGS セッションサービスからの通知をサブスクライブする必要があります。
- プレイヤーが接続している場合は、アクティブなセッションがあると見なします。
- DS のクレームに成功した後、セッション管理サービスは DS の IP とポート情報を使用して、DS にクレームされたことを知らせ、セッションの詳細を共有するメッセージを送信できます。
- DS が通知システムをサブスクライブし、セッション管理サービスがセッションの詳細を含む通知を送信できるようにすることもできます。
- DS セルフクレームのアプローチ(オプション 2)を使用している場合、DS はプレイヤーが接続したときにクレームを開始するため、すでにセッションの状態を認識しています。