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