Unity 用プラグイン: マネージド EC2 フリートにゲームをデプロイする - Amazon GameLift

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Unity 用プラグイン: マネージド EC2 フリートにゲームをデプロイする

このワークフローでは、 プラグインを使用して、Amazon が管理するクラウドベースのコンピューティングリソースでホストするためのゲームを準備します GameLift。Amazon GameLift 機能のクライアントとサーバーのゲームコードを追加し、サーバービルドをホスティング用の Amazon GameLift サービスにアップロードします。このワークフローが完了すると、クラウドで実行されているゲームサーバーと、それらに接続できる作業中のゲームクライアントが作成されます。

Amazon GameLift マネージド Amazon EC2 ワークフローを開始するには:
  • Unity エディタのメインメニューで、Amazon GameLift を選択し、マネージド EC2 でホストを選択します。このワークフローでは、ゲームコンポーネントを統合し、構築、デプロイ、起動する 6 ステップのプロセスを紹介します。

プロファイルを設定する

このワークフローに従うときに使用したいプロファイルを選択します。選択したプロファイルは、ワークフローのすべてのステップに影響します。作成するすべてのリソースは、プロファイルの AWS アカウントに関連付けられ、プロファイルのデフォルト AWS リージョンに配置されます。プロファイルユーザーのアクセス許可によって、 AWS リソースとアクションへのアクセスが決まります。

  1. 使用可能なプロファイルのドロップダウンリストからプロファイルを選択します。まだプロファイルがない場合、または新しいプロファイルを作成する場合は、Amazon GameLift メニューに移動し、 AWS アカウントプロファイルの設定 を選択します。

  2. ブートストラップステータスが「アクティブ」でない場合は、[ブートストラップのプロファイル] を選択し、ステータスが「アクティブ」に変わるまで待ちます。

ゲームを Amazon と統合する GameLift

このタスクでは、ゲームプロジェクトのクライアントコードとサーバーコードを更新します。

  • ゲームサーバーは Amazon GameLift サービスと通信して、ゲームセッションの開始、ゲームセッション接続情報の提供、ステータスの報告を求めるプロンプトを受信できる必要があります。

  • ゲームクライアントは、ゲームセッションに関する情報の取得、ゲームセッションへの参加または開始、ゲームに参加するための接続情報の取得が可能である必要があります。

注記

サンプルゲームをインポートした場合は、このステップをスキップできます。サンプルゲームアセットには、必要なサーバーとクライアントコードが既に用意されています。

サーバーコードの統合

カスタムシーンで独自のゲームプロジェクトを使用する場合は、提供されたサンプルコードを使用して、必要なサーバーコードをゲームプロジェクトに追加します。テスト用のゲームプロジェクトを Anywhere フリートと統合した場合、このステップの手順はすでに完了しています。

  1. ゲームプロジェクトファイルで、 Assets/Scripts/Serverフォルダを開きます。存在しない場合は、作成します。

  2. GitHub リポジトリ aws/ amazon-gamelift-plugin-unityに移動し、パス を開きますSamples~/SampleGame/Assets/Scripts/Server

  3. ファイルを見つけGameLiftServer.csてゲームプロジェクトの Serverフォルダにコピーします。サーバー実行可能ファイルを構築するときは、このファイルをビルドターゲットとして使用します。

サンプルコードには、Amazon GameLift C# サーバー SDK (バージョン 5) を使用するこれらの最低限必要な要素が含まれています。

  • Amazon GameLift API クライアントを初期化します。Amazon GameLift Anywhere フリートには、サーバーパラメータを使用した InitSDK () 呼び出しが必要です。これらの設定は、プラグインで使用できるように自動的に設定されます。

  • 、、OnStartGameSessionOnProcessTerminateおよび を含む Amazon GameLift サービスからのリクエストに応答するために必要なコールバック関数を実装しますonHealthCheck

  • サーバープロセスがゲームセッションをホストする準備ができたら、指定されたポートProcessReady()で を呼び出して Amazon GameLift サービスに通知します。

サンプルサーバーコードをカスタマイズする場合は、次のリソースを参照してください。

クライアントコードの統合

クラウドベースのゲームサーバーに接続するゲームクライアントの場合、ゲームクライアントから直接呼び出すのではなく、クライアント側のバックエンドサービスを使用して Amazon GameLift サービスを呼び出すことがベストプラクティスです。

マネージド EC2 フリートでホストするためのプラグインワークフローでは、各デプロイシナリオに、以下のコンポーネントを含む構築済みのバックエンドサービスが含まれています。

  • ゲームセッションのリクエストとゲームセッション情報の取得に使用される一連の Lambda 関数と DynamoDB テーブル。これらのコンポーネントは API ゲートウェイをプロキシとして使用します。

  • 一意のプレイヤー IDsし、プレイヤー接続を認証する Amazon Cognito ユーザープール。

これらのコンポーネントを使用するには、ゲームクライアントがバックエンドサービスにリクエストを送信して以下を実行する機能が必要です。

  • AWS Cognito ユーザープールにプレイヤーユーザーを作成し、認証します。

  • ゲームセッションに参加し、接続情報を受け取ります。

  • マッチメーキングを使用してゲームに参加します。

以下のリソースをガイドとして使用します。

デプロイシナリオを選択する

このステップでは、この時点でデプロイしたいゲームホスティングソリューションを選択します。どのシナリオを使用しても、ゲームを複数デプロイすることができます。

  • 単一リージョンフリート: アクティブプロファイルのデフォルト AWS リージョンにある単一のホスティングリソースのフリートにゲームサーバーをデプロイします。このシナリオは、サーバーと AWS およびサーバービルド設定との統合をテストするための出発点として最適です。次のリソースをデプロイします。

    • ゲームサーバービルドをインストールして実行中のAWS フリート (オンデマンド)。

    • プレイヤーが認証してゲームを開始するための Amazon Cognito ユーザープールとクライアント。

    • ユーザープールと API をリンクする API ゲートウェイオーソライザー。

    • プレイヤーから API ゲートウェイへの過剰な呼び出しを スロットリングする WebACL。

    • プレイヤーがゲームスロットをリクエストするための API ゲートウェイ + Lambda 関数。この関数は、何も利用できない場合に CreateGameSession() を呼び出します。

    • プレイヤーがゲームリクエストの接続情報を取得するための API ゲートウェイ + Lambda 関数。

  • FlexMatch フリート: ゲームサーバーを一連のフリートにデプロイし、プレイヤーマッチを作成するためのルールを含む FlexMatch マッチメーカーを設定します。このシナリオでは、低コストのスポットホスティングをマルチフリート、マルチロケーション構造で使用して、高い可用性を実現します。このアプローチは、ホスティングソリューションのマッチメーカーコンポーネントの設計を開始する準備ができたときに役立ちます。このシナリオでは、このソリューションの基本リソースを作成します。このリソースは、必要に応じて後でカスタマイズできます。次のリソースをデプロイします。

    • FlexMatch プレイヤーのリクエストとフォームマッチを受け入れるためのマッチメーキング設定とマッチメーキングルールセット。

    • ゲームサーバービルドがインストールされ、複数のロケーションで稼働している 3 AWS つのフリート。バックアップとして 2 つのスポットフリートと 1 つのオンデマンドフリートが含まれます。

    • (実行可能性、コスト、プレイヤーレイテンシーなどに基づいて) 最適なホスティングリソースを見つけ、ゲームセッションを開始することで、提案されたマッチのリクエストに応えるAWS ゲームセッションプレイスメントキュー。

    • プレイヤーが認証してゲームを開始するための Amazon Cognito ユーザープールとクライアント。

    • ユーザープールと API をリンクする API ゲートウェイオーソライザー。

    • プレイヤーから API ゲートウェイへの過剰な呼び出しを スロットリングする WebACL。

    • プレイヤーがゲームスロットをリクエストするための API ゲートウェイ + Lambda 関数。この関数は StartMatchmaking() を呼び出します。

    • プレイヤーがゲームリクエストの接続情報を取得するための API ゲートウェイ + Lambda 関数。

    • Amazon DynamoDB テーブルには、プレイヤーのマッチメーキングチケットとゲームセッション情報を保存できます。

    • GameSessionQueue イベントを処理する SNS トピック + Lambda 関数。

ゲームパラメータを設定する

このステップでは、 にアップロードするためのゲームについて説明します AWS 。

  • ゲーム名: ゲームプロジェクトにわかりやすい名前を付けます。この名前はプラグイン内で使用されます。

  • フリート名: マネージド EC2 フリートにわかりやすい名前を指定します。Amazon GameLift は、コンソールでリソースを一覧表示するときに、この名前 (フリート ID とともに) を使用します AWS 。

  • ビルド名: サーバービルドにわかりやすい名前を指定します。この名前 AWS を使用して、Amazon にアップロードされ GameLift 、デプロイに使用されるサーバービルドのコピーを参照します。

  • 起動パラメータ: マネージド EC2 フリートインスタンスでサーバー実行可能ファイルを起動するときに実行するオプションの手順を入力します。最大長は 1024 文字です。

  • ゲームサーバーフォルダ: サーバービルドを含むローカルフォルダへのパスを指定します。

  • ゲームサーバーファイル: サーバー実行可能ファイル名を指定します。

デプロイシナリオ

このステップでは、選択したデプロイシナリオに基づいてゲームをクラウドホスティングソリューションにデプロイします。このプロセスには、 がサーバービルドを検証し、ホスティングリソースをプロビジョニングし、ゲームサーバーをインストールし、サーバープロセスを起動し、ゲームセッションをホストする準備を整えるまで数分 AWS かかることがあります。

デプロイを開始するには、デプロイ CloudFormationを選択します。ゲームホスティングの状況は、こちらで追跡できます。詳細については、 の AWS マネジメントコンソール AWS にサインインして、イベント通知を表示できます。プラグインのアクティブなユーザープロファイルと同じアカウント、ユーザー、 AWS リージョンを使用してサインインしてください。

デプロイが完了すると、 AWS EC2 インスタンスにゲームサーバーがインストールされています。少なくとも 1 つのサーバープロセスが実行中で、ゲームセッションを開始する準備ができています。

ゲームクライアントを起動する

フリートが正常にデプロイされると、ゲームサーバーが実行され、ゲームセッションをホストできるようになります。クライアントを構築して起動し、接続してゲームセッションに参加できるようになりました。

  1. ゲームクライアントを設定します。このステップでは、ゲームプロジェクトのGameLiftClientSettingsアセットを更新するようにプラグインに指示します。プラグインは、このアセットを使用して、ゲームクライアントが Amazon GameLift サービスに接続するために必要な特定の情報を保存します。

    1. サンプルゲームをインポートして初期化しなかった場合は、新しいGameLiftClientSettingsアセットを作成します。Unity エディタのメインメニューで、アセット、作成、、 GameLiftクライアント設定 を選択します。プロジェクト GameLiftClientSettings で の複数のコピーを作成すると、プラグインはこれを自動的に検出し、プラグインが更新するアセットを通知します。

    2. ゲームを起動 で、クライアントの設定: マネージド EC2 設定の適用 を選択します。このアクションは、デプロイしたマネージド EC2 フリートを使用するようにゲームクライアント設定を更新します。

  2. ゲームクライアントを構築します。標準の Unity ビルドプロセスを使用して、クライアント実行可能ファイルを構築します。ファイル、ビルド設定で、プラットフォームを Windows、Mac、Linux に切り替えます。サンプルゲームをインポートして設定を初期化すると、ビルドリストとビルドターゲットが自動的に更新されます。

  3. 新しく構築されたゲームクライアント実行可能ファイルを起動します。ゲームのプレイを開始するには、2~4 個のクライアントインスタンスを起動し、それぞれの UI を使用してゲームセッションに参加します。

サンプルゲームクライアントを使用している場合、次の特性があります。

  • プレイヤーログインコンポーネント。Anywhere フリートのゲームサーバーに接続する場合、プレイヤーの検証はありません。ゲームセッションに参加するには、任意の値を入力できます。

  • シンプルな参加ゲーム UI。クライアントがゲームに参加しようとすると、クライアントは利用可能なプレイヤースロットを持つアクティブなゲームセッションを自動的に検索します。利用可能なゲームセッションがない場合、クライアントは新しいゲームセッションをリクエストします。ゲームセッションが利用可能な場合、クライアントは利用可能なゲームセッションへの参加をリクエストします。複数の同時クライアントでゲームをテストする場合、最初のクライアントはゲームセッションを開始し、残りのクライアントは既存のゲームセッションに自動的に参加します。

  • 4 つのプレイヤースロットを持つゲームセッション。最大 4 つのゲームクライアントインスタンスを同時に起動でき、同じゲームセッションに参加します。