Amazon GameLift は、マルチプレイヤーゲーム用のマネージド型ゲームサーバーサービスです。ゲームに特化したサービスで、「Fortnite」のような複数人のプレイヤーが1つのルームに参加して短時間で試合をするといった、同時アクセスのプレイヤーの数が大きく変動するゲームに適しています。Amazon製ゲームエンジンAmazon Lumberyardや、Unity、Unreal Engineといったゲームプラットフォームに対応しています。
Amazon GameLiftの特徴、メリット
Amazon GameLiftなら、ゲームサーバーのデプロイ、運用、スケーリングをマネージドで利用できます。グローバルなレイテンシーも45ms(中央値)と低く、オンプレミスとの比較ではスポットインスタンスを利用した場合には、最大70%のコストダウンも可能という試算もあります。
AWSゲームインフラ構築・運用支援サービス
ゲーム開発に専念できるマネージド環境
Amazon GameLiftは、高い安全性と信頼性を持つクラウドプラットフォームのAWSグローバルインフラストラクチャで稼働しています。またマネージドサービスですので、面倒なデプロイ作業や専用ゲームサーバーの管理を任せることができます。低いレイテンシーを維持しつつ、プレイヤーの近くでゲームサーバーをデプロイできます。
またAmazon GameLiftの自動スケーリング機能は、数百や数千でも同時に起動でき、突然のプレイヤー増加にも対応できます。利用中でも、プレイヤーの増減、サーバーのキャパシティーとその状態、CPUとメモリの使用率のリアルタイムデータを確認でき、必要ならアラームを発することもできます。
グローバル展開可能なマルチプレイ環境と多様なインスタンスによる柔軟性
Amazon GameLiftのゲームサーバーは、世界中のゲームユーザーのプレイに対応することを目指しています。ゲームユーザーの近くに最適なゲームサーバーを用意できるように、60 種のインスタンスタイプと22箇所のリージョンを活用できます。オンラインゲームの重要な機能のひとつ、プレイヤーのマッチングについては、Amazon GameLift の機能のひとつ、FlexMatchを使えば、ゲームを楽しくできる適切なマッチメイキングルールを設定することができます。他にも、異なるデバイスでもコミュニティを繋げられるので、プレイヤーのマッチングの可能性を拡大できます。
さらに分散サービス妨害(DDoS)攻撃からゲームサーバーを保護できる設計も取り入れ、仮にサーバーが攻撃されてもプレイヤーをオフラインにさせない高い可用性を持っています。
「NHN AppGuard」導入事例集
専門知識がなくてもさまざまな不正行為から安全にゲーム・アプリを保護できるモバイルアプリ向けセキュリティツール「NHN AppGuard」の導入事例集
Amazon GameLiftの重要な機能FleetIQで、コンピューティングコストを最大70%削減可能
時には大量のコンピューティングパワーを必要とするオンラインゲームにおいて、スポットインスタンスの利用を可能にし、コンピューティングコストを最大70%削減可能という試算がでました。スポットインスタンスとは空いているときだけ利用できるインスタンスのことで、低価格で利用できるメリットがあります。ただ、他の利用者による立ち退き要求には応じる必要があるため、オンラインゲームサーバーが稼働中に立退く=ストップするのはゲームのクオリティーには大きな問題です。
しかしFleetIQを活用すると、スポットインスタンスの運用が自動化され、運用負荷が軽減されるうえ、コストを削減することができます。具体的には、22のリージョンで利用できるスポットインスタンスから、一番レスポンスの良いリージョンを選択するなど、空いているスポットから最適なインスタンスを自動で選択して利用できます。サーバーがスケールアウトするときも、キューの中から一番コストパフォーマンスが良く安全そうなインスタンスを選択します。また立ち退き要求があっても、FleetIQならすぐに別のインスタンスでゲームサーバーをデプロイし、利用することができます。
このFleetIQによって、コンピューティングパワーの利用の増減が激しいオンラインゲームでも、リーズナブルな運用費で利用できるようになりました。実際、米国のゲーム「Tacticool」はAmazon GameLiftのFleetIQの効果として、1,800万回以上のゲームセッションで中断を経験したのはわずか0.004%という数値を上げています※。
※出典:Amazon Web Services「2020年のGameLift – 大型アップデートがプレビューで利用可能に」
AWSの活用でコストを削減!
数多くのヒットタイトルを支えた実績豊富なサービス
スタンダードなカスタムゲームサーバー、迅速かつ安価にゲームサーバーを構築できるリアルタイムサーバー
Amazon GameLiftでゲームサーバーをホスティングする方法には「カスタムゲームサーバー」と「リアルタイムゲームサーバー」の2種類があります。通常はカスタムゲームサーバーを利用しますが、ゲームプレイに複雑なサーバー側のロジック、プレイする時に瞬時の物理演算といった機能が不要なら、リアルタイムゲームサーバーが適しています。例としては、メッセージングゲーム、ターンベースの戦略ゲーム、さまざまなモバイルゲームなどです。ゲーム完成までの時間と労力を、最小限に抑えられます。
リアルタイムゲームサーバーにおけるゲームクライアントとゲームサーバーとの通信はRealtime Client SDKを利用して、TCPもしくはUDPを使います。これによって通信の負荷を軽減できます。またリアルタイムゲームサーバーは、数行のNode.jsベースのJavaScriptで実装可能になるなど、こちらでも工数を削減できます。
マネージドAmazon GameLift を使用したゲームの構成
Amazon GameLiftで構築するゲームアーキテクチャについて説明します。ゲームクライアント、クライアントサービス、ゲームサーバー、Amazon GameLiftサービスの4つが大きな構成要素になります。
ゲームクライアントとクライアントサービスの処理
Amazon GameLiftがホストしているゲームに参加するためには、プレイヤーであるゲームクライアントが参加できるゲームセッションを探す必要があります。そのためにゲームクライアントは、既存のゲームセッションを検索してマッチメイキングをリクエストするか、Amazon GameLiftが新たなゲームセッションを作成します。セッションの検索やマッチメイキングのリクエストは、バックエンドのクライアントサービスを介して行われます。
クライアントサービスは、AWS SDKのGameLiftサービスAPIによって、ゲーム クライアントと Amazon GameLiftサービス間の通信を処理します。他にもクライアントサービスは、プレイヤーの認証や認可、在庫管理、通貨管理といったゲーム固有の他のタスクにも利用される場合があります。
またプレイヤーがサブスクリプション会員ならば、その確認のために外部サービスを使う場合があります。その時、外部サービスによる認証は、ゲームクライアントを経由せずに、クライアントサービスやAmazon GameLiftサービスを介してゲームサーバーに渡されます。
ゲームサーバーの機能
ゲームサーバーは、Amazon GameLiftによってホスティングされます。カスタムゲームサーバーの場合は、Amazon GameLiftとデータをやりとりするためAmazon GameLift Server SDK を使用して実装します。新しいゲームセッションのスタート、新しく接続されたプレイヤーの検証、ゲームセッションの状態、プレイヤーの接続、利用可能なリソースなどのデータを、Amazon GameLiftサービスとやりとりします。ゲームクライアントは、ゲームセッションをホストし、プレイヤーの接続を受け入れます。
なおゲームサーバーは基本的にはインスタンスを集めたものですが、Amazon GameLiftではフリートという単位を使います。1インスタンスに1ルームを割り当て、50ルームで1ゲームを構築した場合、1ゲームで利用するインスタンスの塊(この場合、50)を1フリートと数えます。
オンラインゲームでは参加者が増えて50ルームが100ルームになるといったことがあります。その時、ゲームサーバーとしてはフリートが1つであることは変わりませんが、1フリートのインスタンスは50から100に変動します。フリートとインスタンスの数が、一定ではない点には注意ください。
Amazon GameLiftサービスが管理するリソース
Amazon GameLiftサービスとは、ゲームサーバーのリソースを管理するコアサービスを指します。プレイヤー数に合わせリソースを調整したり、ゲームセッションを追加で作成できます。プレイヤーのトラフィックが大きく変化したら、ゲームの可用性維持のために、ゲームセッションのスタートとストップをコントロールして、ゲームサーバーを安定して稼働できるように調整します。必要があれば、フリート内のインスタンスを1つから数千までスケールアウトも行います。
またAmazon GameLiftコンソールを使えば、ゲームホスティングリソースの設定、プレイヤーの数に応じた容量のスケール、リソースのステータスのモニタリングを行うことができます。他にも、ゲームサーバーのパフォーマンスやゲームとプレイヤーのアクティビティに関するメトリクスを追跡できます。
Amazon GameLiftの利用方法
Amazon GameLiftを利用する手順、環境などの概要を紹介します。
利用開始のおおまかな手順
1.
ゲームクライアントにはAWS SDK for GameLiftを、サーバーにはAmazon GameLift Managed Server SDKを利用して、ゲームクライアントとサーバーがAmazon GameLiftサービスとデータをやりとりできるように設定します。
2.
ゲームのビルドファイルをパッケージ化して、利用するAWS アカウント内のAmazon GameLiftにアップロードします。次にデプロイするためのフリートを作成します。フリートはAmazon GameLiftコンソールで作成できます。ここではフリートの名前、スポットインスタンスの利用、インスタンスのタイプなどを設定します。新しいフリートが設定されたら、ビルドファイルがフリートにダウンロードされ、ビルドインストールスクリプトに基づいてインストールされます。その後、フリートにゲームがデプロイされ、ゲームサーバーが構築されます。
3.
ゲームクライアントからゲーム参加の希望をゲームサーバーに伝えると、フリートに既存のゲームセッションがあればそこに参加し、なければ新しいゲームセッションが作成されるので、そこに参加します。こうしてプレイヤーがフリートに参加(接続)されると、その様子がAmazon GameLiftコンソールのフリートのページで確認できます。[Player sessions](プレイヤーセッション)を見ると、フリート内のゲームセッションに接続しているプレイヤーの数がわかります。
Unreal Engine、UnityなどのゲームエンジンをサポートするGameLiftのServerSDK
Amazon GameLift Managed Servers SDKは、ゲーム製作用プラットフォームとして著名な、Amazon Lumberyard、Unity 2020.3、Unreal 4.26、カスタム C++、およびカスタム C# の各エンジンをサポートしています。またSDKには、Amazon GameLift Server SDKのC++ およびC# バージョンとUnreal Engineプラグインが含まれていますので、Unreal Engineゲームサーバーを容易に構築できます。Amazon GameLift はオープンウェブ標準で構築されているので、Xbox Live、Steam、PlayStation Networkなどのプラットフォームも使用できます。
Amazon GameLiftなど、AWSの導入・運用はNHNテコラスにお任せください
大きく変動するゲームユーザー数は、ゲームのホスティングにおける悩みの種です。Amazon GameLiftは、クラウドサービスのオートスケール機能で、ユーザーの増減におけるサーバーサイジングの最適化のための工数負担から開発者を解放します。さらにスポットインスタンスを利用できサーバー運営費を低く抑えられるので、これからのオンラインゲーム構築にメリットの多いプラットフォームと言えるでしょう。
AWSのプレミアティア サービスパートナーであるNHNテコラスは、Amazon GameLiftの再販権利をAWSパートナーとして世界で初めて取得しました。NHN PlayArt 株式会社様が提供するマルチプレイヤーゲーム「A.I.M.$(エイムズ)」でAmazon GameLiftを利用した構築事例もあります。
Amazon GameLiftは、このほど大阪リージョンの利用が始まり、FleetIQでは次世代のAWS Graviton2プロセッサーのサポートも始まりました。これからもAmazon GameLiftは、どんどん機能アップが期待されます。NHNテコラスではAmazon GameLiftを利用したオンラインゲームの構築のご相談も受け付けています。
AWSゲームインフラ構築・運用支援サービス
「NHN AppGuard」導入事例集
専門知識がなくてもさまざまな不正行為から安全にゲーム・アプリを保護できるモバイルアプリ向けセキュリティツール「NHN AppGuard」の導入事例集