翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ゲームと Amazon GameLift Realtime サーバーの統合
このトピックでは、リアルタイムサーバー GameLift によるマネージド Amazon ソリューションの概要を説明します。概要では、このソリューションがどのような場合にゲームに適しているか、リアルタイムサーバーがどのようにマルチプレイヤーゲームをサポートしているかについて説明します。
ヒント
Amazon GameLift ゲームサーバーホスティングを試すには、「」を参照してくださいAmazon の開始方法 GameLift。
リアルタイムサーバーとは
リアルタイムサーバーは、Amazon GameLift が提供する軽量 ready-to-go のゲームサーバーで、マルチプレイヤーゲームで使用できます。リアルタイムサーバーを使うと、カスタムゲームサーバーの開発、テスト、デプロイのプロセスが不要になります。このソリューションにより、ゲームの完成までにかかる時間と労力を最小限に抑えることができます。
主な特徴
-
ゲームのクライアントとサーバー間のやり取りのための完全なネットワークスタック
-
ゲームサーバーの主な機能。
-
カスタマイズ可能なサーバーロジック
-
リアルタイム設定およびサーバーロジックへライブ更新
-
FlexMatch マッチメーキング
-
ホスティングリソースの柔軟な制御
フリートを作成し、設定スクリプトを提供することで、リアルタイムサーバーをセットアップします。
リアルタイムサーバーがゲームセッションを管理する方法
リアルタイムスクリプトに組み込んで、ゲームセッション管理用のカスタムロジックを追加できます。サーバー固有のオブジェクトへのアクセスや、コールバックを使用したイベント駆動型ロジックの追加、イベント以外のシナリオに基づくロジックの追加を行うコードを記述できます。
リアルタイムクライアントとリアルタイムサーバーのやり取りの方法
ゲームセッション中、ゲームクライアントはバックエンドサービスを通じてリアルタイムサーバーにメッセージを送信することでやり取りします。その後、バックエンドサービスはメッセージをゲームクライアント間で中継して、アクティビティ、ゲームの状態、関連するゲームデータを交換します。
さらに、ゲームロジックを Realtime スクリプトに追加することで、クライアントとサーバーのやり取り方法をカスタマイズできます。カスタムゲームロジックにより、リアルタイムでイベント駆動型レスポンスを開始するコールバックを実装できます。
通信プロトコル
リアルタイムサーバーと接続されたゲームクライアントは、信頼性の高い配信のためのTCP接続と高速配信のためのUDPチャネルの 2 つのチャネルを介して通信します。メッセージを作成するときは、メッセージのタイプに応じて使用するプロトコルを選択します。メッセージ配信はUDPデフォルトで に設定されています。UDP チャネルが利用できない場合、Amazon GameLift はフォールバックTCPとして を使用してメッセージを送信します。
メッセージの内容
メッセージコンテンツは、必要なオペレーションコード (opCode) とオプションのペイロードの 2 つの要素で構成されます。メッセージの は特定のプレイヤーアクティビティまたはゲームイベント opCode を識別し、ペイロードはオペレーションコードに関連する追加のデータを提供します。これらの要素はどちらも開発者定義です。ゲームクライアントは、受信したメッセージの opCodes に基づいて動作します。
プレイヤーグループ
Realtime サーバーはプレイヤーのグループを管理する機能を提供します。デフォルトでは、Amazon はゲームに接続するすべてのプレイヤーを「すべてのプレイヤー」グループ GameLift に配置します。さらに、開発者は自分のゲームに他のグループを設定でき、プレイヤーは同時に複数のグループのメンバーになることができます。グループメンバーは、メッセージを送信したり、グループのすべてのプレーヤーとゲームデータを共有できます。グループの用途の 1 つは、プレイヤーチームを設定し、チームのコミュニケーションを管理することです。
TLS 証明書付きのリアルタイムサーバー
リアルタイムサーバーでは、サーバー認証とデータパケット暗号化がリアルタイムサーバー用に組み込まれています。これらのセキュリティ機能は、TLS証明書の生成を有効にすると有効になります。ゲームクライアントがリアルタイムサーバーに接続しようとすると、サーバーは自動的にTLS証明書で応答し、クライアントが検証します。Amazon GameLift はTCP、 (WebSockets) 通信とUDPトラフィックTLSに を使用して暗号化DTLSを処理します。
リアルタイムサーバーのカスタマイズ
リアルタイムサーバーはステートレスな中継サーバーとして機能します。リアルタイムサーバーは、ゲームに接続されているゲームクライアント間でメッセージのパケットとゲームデータを中継します。ただし、リアルタイムサーバーはメッセージの評価、データの処理、ゲームプレイロジックの実行は行いません。このように使用されると、各ゲームクライアントはゲーム状態の独自のビューを維持し、リレーサーバーを介して他のプレイヤーに更新情報を提供します。各ゲームクライアントは、これらの更新を組み込み、独自のゲーム状態を調整します。
また、リアルタイムスクリプト機能を追加することによって、サーバーをカスタマイズすることもできます。例えば、ゲームロジックでは、サーバー権限によるゲームの状態の表示により、ステートフルなゲームを構築できます。
Amazon は、リアルタイムスクリプトのサーバー側のコールバックのセット GameLift を定義します。これらのコールバックを実装して、イベント駆動型の機能をサーバーに追加します。例えば、以下のことが可能です。
-
ゲームクライアントがサーバーに接続を試みるときにプレイヤーを認証します。
-
リクエスト時にプレイヤーがグループに参加できるかどうかを確認します。
-
特定のプレイヤーからのメッセージまたはターゲットプレイヤーへのメッセージの配信タイミングを決定するか、それに応じて追加の処理を実行します。
-
プレイヤーがグループを離れるか、サーバーから切断されたときに、すべてのプレイヤーに通知します。
-
ゲームセッションオブジェクトまたはメッセージオブジェクトの内容を表示してデータを使用します。
リアルタイムサーバーのデプロイと更新
リアルタイムサーバーの主な利点は、いつでもスクリプトを更新できることです。スクリプトを更新すると、Amazon は新しいバージョンを数分以内にすべてのホスティングリソースに GameLift 配布します。Amazon が新しいスクリプトを GameLift デプロイした後、その時点以降に作成されたすべての新しいゲームセッションは、新しいスクリプトバージョンを使用します。(既存のゲームセッションは引き続き元のバージョンを使用します)。