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 repo 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 フリートには、サーバーパラメータを使用した Init SDK() 呼び出しが必要です。これらの設定は、プラグインで使用できるように自動的に設定されます。

  • 、、 などの Amazon OnStartGameSession GameLift サービスからのリクエストに対応するために必要なコールバック関数を実装しますOnProcessTerminateonHealthCheck

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • W ebACl は、APIゲートウェイへの過剰なプレイヤー呼び出しをスロットリングします。

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

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

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

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

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

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

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

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

    • W ebACl は、APIゲートウェイへの過剰なプレイヤー呼び出しをスロットリングします。

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

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

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

    • SNS トピック + GameSessionQueue イベントを処理する 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 つのゲームクライアントインスタンスを同時に起動でき、同じゲームセッションに参加します。