Amazon GameLiftを使って効率的にゲーム開発
はじめに
Amazon社が提供するクラウドサービス、AWS(Amazon Web Services)が近年、急速に普及しているので、ご存知の方も多いのではないでしょうか。AWSには、様々なサービスが提供されており、その中にはゲーム開発向けのサービスまで用意されています。今回はそんなゲーム開発向けサービスのひとつであるAmazon GameLiftについてご紹介させていただきます。
Amazon GameLiftとは
Amazon GameLiftとは、セッションベースのマルチプレイヤーオンラインゲーム向けのサーバーアプリケーションのデプロイや運用、監視などを行うことができるマネージドサービスです。オンラインゲームの構成の中で、マッチメイキング機能とマッチメイキング後に振り分けられるゲームセッションが稼働するゲームサーバーの管理機能をマネージドサービスとして提供します。ほとんどのマルチプレイヤーゲームのジャンルに適しており、ファーストパーソンシューティングゲーム、MOBA、格闘ゲーム、レースゲーム、スポーツゲームといったジャンルで、指定した期間内にゲームセッションが開始および終了するマルチプレイヤーゲーム向けに設計されています。
Amazon GameLiftの特徴
Amazon GameLiftは以下のような特徴があります。
・オートスケール
サーバー容量をプレイヤーのトラフィックに応じて自動的にスケーリングできます。1つのインスタンスでも、数百、数千のインスタンスでも同時に起動することができるため、プレイヤートラフィックが急増した場合にも対応できます。逆にプレイヤートラフィックが低い場合には、アイドル状態のサーバー容量に対する課金を停止することも可能です。
・マッチメイキング
自社製のマッチメイキングサービス、または、Amazon GameLift の FlexMatch を使用して、定義したルールに基づいてプレイヤー間のマッチング方法を設計できます。また、FlexMatchのルール言語を使用すれば、誰でも簡単にプレイヤーマッチメイキングを作成できます。
・ダウンタイム不要のアップデート
Amazon GameLiftを使用すれば、アップデートや新コンテンツリリース時でもサーバーを停止することなく、24時間常時プレイヤーはプレイを続けることができます。
・クロスプラットフォームのプレイもサポート
異なるデバイス間においてもコミュニティをつなぎ合わせてプレイヤーのマッチングの可能性を拡大できます。
・既存エンジンで動作
Amazon GameLift では、Amazon Lumberyard、Unreal Engine、Unity、C#、C++などのゲームエンジンがサポートされており、Amazon GameLift SDKで簡単に統合してクラウド上で実行できます。
・サーバー管理
Amazon GameLift では、インスタンスのプロビジョニング、インスタンスへのゲームサーバーのデプロイ、トラフィックの負荷分散、インスタンスとゲームサーバーのモニタリングなどのサーバー管理を自動的に行います。
・グローバル展開
世界の15のAWSリージョンにゲームサーバーをデプロイすることで、プレイヤーに低遅延なサービスを提供できます。Amazon GameLift は、世界中のゲームサーバーを継続的にスキャンし、低遅延なゲームサーバーが利用不可の場合、プレイヤーの近くにキャパシティが自動的に追加されるようにサービスを設定することが可能です。
・インサイトとモニタリング
Amazon GameLift マネジメントコンソールでは、プレイヤートラフィック、サーバーのキャパシティと状態、CPUとメモリの使用率やネットワーク利用量などのリアルタイムデータを確認できます。また、ゲームサーバーのログを自動的に収集・保存することもできます。
Amazon GameLiftのフリート
フリートとは、1つのリージョン内でゲームサーバーの1つのビルドを実行しているAmazon GameLiftインスタンス群のことです。フリート内のインスタンス数を増減させることで、プレイヤートラフィックの変化に対応します。フリートでは、インスタンスタイプ、リージョン、インスタンスあたりのプロセス数などを設定してどのようにビルドを動作させるかを指定します。
・スポットフリート
フリートの中で、スポットフリートというものを使うことができます。スポットフリートを使用することで、需要によるインスタンスキャパシティによって料金が変動し、1時間あたりのサーバー料金を削減できます。
・FleetIQ
FleetIQによって、上記のスポットフリートを管理します。FleetIQは中断による割り込み頻度が低く、コストが一番安いフリートを選択し、プレイヤーのセッションを割り当てることができます。
Amazon GameLiftの主要コンポーネント
Amazon GameLiftを設定してゲームをホストする際に必要な主要コンポーネントは以下の通りです。
・ゲームサーバー
ゲームサーバーは、クラウドで実行されるゲームと通信するためのアプリケーションが動作するサーバーソフトウェアです。Amazon GameLiftサービスにゲームサーバーのビルド(リアルタイムサーバーを使用する場合にはサーバースクリプトファイル一式)をアップロードすることで、ホスティング用の仮想コンピューティングリソースにデプロイされます。デプロイされているゲームサーバーは、GameLift Server SDKを使用してGameLiftサービスと通信し、新しいゲームセッションの開始や停止、新しく接続されたプレイヤーの検証、ゲームセッションの状態、プレイヤーの接続、利用可能なリソースレポートのリクエストなどを行います。
・ゲームクライアント
ゲームクライアントは、プレイヤーのデバイスで実行されるゲームのソフトウェアです。バックエンドのクライアントサービスを介して、既存のゲームセッションを検索してマッチメイキングのリクエストを行うか、Amazon GameLiftサービスから受信した情報を使用して新しいゲームセッションに直接接続を行います。
・Amazon GameLiftサービス
Amazon GameLiftサービスは、ゲームサーバーのコンピューティングリソースを調整・管理し、プレイヤーがゲームに接続できるように新しいゲームセッションを開始し、マッチメイキングをリクエストしてプレイヤーをゲームセッションにスロットします。また、プレイヤーの使用状況とサーバーの状態に関するメトリクスを収集します。
・クライアントサービス
クライアントサービスは、ゲームクライアントとAmazon GameLiftサービス間の通信の処理を行います。Amazon GameLiftサービスにリクエストを送信し、応答として接続の詳細を含むゲームセッション情報を受信して、この情報をゲームクライアントに送ります。
・ゲームセッション
ゲームセッションは、Amazon GameLiftリソースで実行されるゲームサーバーのインスタンスです。有効期間やプレイヤー数などの基本特性を定義します。
Amazon GameLiftを開始する流れ
Amazon GameLiftを開始する際の大まかな流れは、以下のようになります。
- ①ゲームサーバーのビルドをパッケージする
- ②サーバービルドをAmazon GameLiftにアップロードする
- ③Amazon GameLiftコンソールを使用してフリートをセットアップし、デプロイする
- ④ゲームクライアントを用意し、実行する
- ⑤ゲームセッションを作成する
- ⑥プレイヤーがゲームセッションに接続する
- ⑦Amazon GameLiftコンソールを通してフリートをモニタリングする
まとめ
Amazon GameLiftを利用すれば、マッチメイキング機能やオートスケール機能などによってマルチプレイヤーオンラインゲームのために最適化されたサーバーを容易に構築することができるため、環境構築のための知識は最低限で済むのでゲームの開発に取り組みやすくなります。ゲーム開発に興味のある方は是非試してみてはいかがでしょうか。