翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Unity 用プラグイン: Amazon GameLift Anywhere でローカルテストをセットアップする
このワークフローでは、Amazon GameLift 機能用のクライアントとサーバーのゲームコードを追加し、プラグインを使用してローカルワークステーションをテストゲームサーバーホストとして指定します。統合タスクが完了したら、プラグインを使用してゲームクライアントとサーバーのコンポーネントをビルドします。
Amazon GameLift Anywhere ワークフローを開始するには:
Unity エディタのメインメニューで、Amazon GameLift、[Anywhere でホスト] の順に選択します。このアクションで、@Anywhere フリートでゲームを設定するためにプラグインページが開きます。このページには、ゲームコンポーネントを統合し、ビルドし、起動するための 5 ステッププロセスが表示されます。
プロファイルを設定する
このワークフローに従うときに使用したいプロファイルを選択します。選択したプロファイルは、ワークフローのすべてのステップに影響します。作成するすべてのリソースは、プロファイルの AWS アカウントに関連付けられ、プロファイルのデフォルト AWS リージョンに配置されます。プロファイルユーザーのアクセス許可によって、 AWS リソースとアクションへのアクセスが決まります。
-
使用可能なプロファイルのドロップダウンリストからプロファイルを選択します。まだプロファイルがない場合、または新しいプロファイルを作成する場合は、Amazon GameLift メニューに移動し、 AWS アカウントプロファイルの設定を選択します。
-
ブートストラップステータスが [アクティブ] ではない場合、[ブートストラッププロファイル] を選択して、ステータスが [アクティブ] になるまで待機します。
ゲームサーバーを Amazon GameLift に統合する
注記
サンプルゲームをインポートした場合は、この手順をスキップできます。サンプルゲームアセットには、必要なサーバーコードとクライアントコードがすでに設定されています。
ワークフローのこの手順では、ゲームプロジェクトのクライアントコードとサーバーコードを更新します。
* ゲームサーバーは、ゲームセッション開始のプロンプトの受信、ゲームセッションの接続情報の提供、ステータスの報告を行うために、Amazon GameLift サービスと通信できる必要があります。
ゲームクライアントは、ゲームセッションの情報、ゲームセッションへの参加または開始情報、ゲームに参加するための接続情報を取得できる必要があります。
サーバーコードを統合する
カスタムシーンがある独自のゲームプロジェクトを使用している場合は、指定のサンプルコードを使用して、必要なサーバーコードをゲームプロジェクトに追加します。
-
ゲームプロジェクトファイルで、
Assets/Scripts/Server
フォルダを開きます。存在しない場合は、作成します。 -
GitHub リポジトリ aws/amazon-gamelift-plugin-unity
に移動し、パス Samples~/SampleGame/Assets/Scripts/Server
を開きます。 GameLiftServer.cs
ファイルを見つけて、ゲームプロジェクトのServer
フォルダにコピーします。サーバー実行可能ファイルを構築するときは、このファイルをビルドターゲットとして使用します。
サンプルコードには、Amazon GameLift C# サーバー SDK (バージョン 5) を使用するの以下の最小限の必須要素が含まれています。
Amazon GameLift API クライアントを初期化します。Amazon GameLift Anywhere フリートには、サーバーパラメータを使用する
InitSDK()
呼び出しが必要です。これらの設定は、プラグインで使用できるように自動的に設定されます。OnStartGameSession
、OnProcessTerminate
、onHealthCheck
など、Amazon GameLift サービスからのリクエストに応答する必須のコールバック関数を実装します。指定されたポートで
ProcessReady()
を呼び出し、サーバープロセスでゲームセッションをホストする準備ができたら、Amazon GameLift サービスに通知します。
サンプルサーバーコードをカスタマイズする場合は、以下のリソースを参照してください。
クライアントコードを統合する
カスタムシーンで独自のゲームプロジェクトを使用している場合は、基本的な機能をゲームクライアントに統合する必要があります。また、プレイヤーがサインインしてゲームセッションに参加できるように、UI 要素を追加する必要があります。Amazon GameLift サービス APIs ( AWS SDK 内) を使用して、ゲームセッション情報の取得、新しいゲームセッションの作成、既存のゲームセッションへの参加を行います。
Anywhere フリートを使用してローカルテスト用のクライアントをビルドする場合は、Amazon GameLift サービスに直接呼出しを追加できます。クラウドホスティング用のゲームを開発する場合、または本番ホスティングに Anywhere フリートを使用する場合、ゲームクライアントと Amazon GameLift サービス間のすべての通信を処理するためにクライアント側のバックエンドサービスを作成する必要があります。
Amazon GameLift をクライアントコードに統合するには、次のリソースをガイドとして使用します。
-
クライアントを GitHub リポジトリ aws/amazon-gamelift-plugin-unity の GameLiftCoreApi クラスと統合します。このクラスは、プレイヤー認証とゲームセッション情報の取得に関する制御を提供します。
-
GitHub リポジトリ aws/amazon-gamelift-plugin-unity、
Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs
にあるサンプルゲーム統合を表示します。 -
「Unity ゲームクライアントに Amazon GameLift を追加する」の手順に従います。
Anywhere フリートに接続するゲームクライアントの場合、ゲームクライアントには以下の情報が必要です。プラグインは、プラグインで作成したリソースを使用するようにゲームプロジェクトを自動的に更新します。
FleetId - Anywhere フリートの一意の識別子。
FleetLocation - Anywhere フリートのカスタムロケーション。
AwsRegion - Anywhere フリートがホストされている AWS リージョン。これは、ユーザープロファイルで設定したリージョンです。
ProfileName - AWS SDK for GameLift へのアクセスを許可するローカルマシン上の AWS 認証情報プロファイル。ゲームクライアントは、これらの認証情報を使用して Amazon GameLift サービスへのリクエストを認証します。
注記
認証情報プロファイルはプラグインによって生成され、ローカルマシンに保存されます。そのため、ローカルマシン (または同じプロファイルのマシン) でクライアントを実行する必要があります。
Anywhere フリートに接続する
このステップでは、使用する Anywhere フリートを指定します。Anywhere フリートは、ゲームサーバーをホスティングするための、どこにでも配置できる一連のコンピューティングリソースを定義します。
現在使用している AWS アカウントに既存の Anywhere フリートがある場合は、フリート名ドロップダウンフィールドを開き、フリートを選択します。このドロップダウンには、現在アクティブなユーザープロファイルの AWS リージョン内の Anywhere フリートのみが表示されます。
既存のフリートがない場合、または新しいフリートを作成する場合は、[新しい Anywhere フリートを作成] を選択してフリート名を指定します。
プロジェクトに Anywhere フリートを選択すると、Amazon GameLift はフリートのステータスがアクティブであることを確認し、フリート ID を表示します。このリクエストの進行状況は Unity エディタの出力ログで追跡できます。
コンピューティングを登録する
このステップでは、ローカルワークステーションを新しい Anywhere フリートのコンピューティングリソースとして登録します。
ローカルマシンのコンピューティング名を入力します。フリートに複数のコンピューティングを追加する場合、名前は一意でなければなりません。
[コンピューティングを登録] を選択します。このリクエストの進行状況は Unity エディタの出力ログで追跡できます。
プラグインは、IP アドレスが localhost (127.0.0.1) に設定されているローカルワークステーションを登録します。この設定は、同じマシンでゲームクライアントとサーバーを実行することを前提としています。
このアクションに応じて、Amazon GameLift はコンピューティングに接続できることを確認し、新しく登録されたコンピューティングに関する情報を返します。
ゲームを起動する
このステップでは、ゲームコンポーネントをビルドし、それを起動してゲームをプレイします。以下のタスクを実行します。
-
ゲームクライアントの設定を行います。このステップでは、プラグインにプロンプトして、ゲームプロジェクトの
GameLiftClientSettings
アセットを更新します。プラグインは、このアセットを使用して、ゲームクライアントが Amazon GameLift サービスに接続するために必要な特定の情報を保存します。-
サンプルゲームをインポートして初期化しなかった場合は、新しい
GameLiftClientSettings
アセットを作成します。Unity エディタのメインメニューで、[アセット]、[作成]、[GameLift]、[クライアント設定] の順に選択します。プロジェクトで GameLiftClientSettings の複数のコピーを作成すると、プラグインはこれを自動検出し、プラグインが更新するアセットについて通知します。 -
[ゲームを起動] で、[クライアントの設定: Anywhere 設定を適用] を選択します。このアクションは、先ほど設定した Anywhere フリートを使用するようにゲームクライアント設定を更新します。
-
ゲームクライアントをビルドして実行します。
標準の Unity ビルドプロセスを使用してクライアント実行可能ファイルを構築します。[ファイル]、[ビルド設定] の順に選択し、プラットフォームを Windows、Mac、Linux に切り替えます。サンプルゲームをインポートして設定を初期化すると、ビルドリストとビルドターゲットが自動更新されます。
新しく構築されたゲームクライアント実行可能ファイルの 1 つ以上のインスタンスを起動します。
Anywhere フリートでゲームサーバーを起動します。エディタで、[サーバー: サーバーを起動] を選択します。このタスクでは、ライブサーバーが起動されます。Unity エディタが開いている限り、クライアントはこのサーバーに接続できます。
ゲームセッションを開始するかゲームセッションに参加します。ゲームクライアントインスタンスで、UI を使用して各クライアントをゲームセッションに参加させます。参加方法は、機能をクライアントに追加した方法によって異なります。
サンプルゲームクライアントを使用している場合、次の特徴があります。
プレイヤーログインコンポーネント。Anywhere フリートのゲームサーバーに接続する場合、プレイヤーの検証はありません。任意の値を入力して、ゲームセッションに参加します。
ゲーム参加のシンプルな UI。クライアントがゲームに参加しようとすると、クライアントは利用可能なプレイヤースロットがあるアクティブなゲームセッションを自動的に検索します。ゲームセッションが利用できない場合、クライアントは新しいゲームセッションをリクエストします。ゲームセッションが利用可能な場合、クライアントは利用可能なゲームセッションへの参加をリクエストします。複数の同時クライアントでゲームをテストすると、最初のクライアントがゲームセッションを開始し、残りのクライアントは既存のゲームセッションに自動的に参加します。
4 つのプレイヤースロットがあるゲームセッション。最大 4 つのゲームクライアントインスタンスを同時に起動でき、同じゲームセッションに参加できます。
サーバー実行可能ファイルからの起動 (オプション)
Anywhere フリートでテストするためのゲームサーバー実行可能ファイルを構築して起動できます。
標準の Unity ビルドプロセスを使用してサーバー実行可能ファイルを構築します。[ファイル]、[ビルド] の順に選択し、プラットフォームを専有サーバーとビルドに切り替えます。
-
Anywhere フリート ID と AWS リージョンを使用して AWS CLI コマンド get-compute-auth-token を呼び出して、短期認証トークンを取得します。フリート ID は、フリートの作成時に [Anywhere フリートに接続する] に表示されます。アクティブなプロファイルを選択すると、 AWS リージョンがプロファイルの設定に表示されます。
aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
-
コマンドラインから新しく構築されたゲームサーバー実行可能ファイルを起動し、有効な認証トークンを渡します。
my_project.exe --authToken [token]