Amazon GameLiftとは
Amazon GameLift は、セッションベースのマルチプレイヤーゲーム専用のゲームサーバーをデプロイ、運用、スケーリングするためのマネージドサービスです。
ゲームに特化されたサービスであり、わずか数分でクラウド内に最初のゲームサーバーをデプロイできるため、ソフトウェアの開発で事前に必要な数千時間というエンジニアリング時間が節約され、デベロッパーがマルチプレイヤー機能を設計から削除する原因となることが多い技術的なリスクを低減できます。
AWS の実証済みコンピューティング環境で構築されているため、Amazon GameLift を使用すると、プレイヤーの需要に合わせて高性能のゲームサーバーを自動的にスケールアップおよびスケールダウンできます。
また、Amazon GameLiftは、AWSの実績のあるネットワークインフラストラクチャとデータセンターの中で稼働しているため、DDoS攻撃から保護するように設計されており、グローバルにゲームを展開することで、プレイヤーの待機時間とレイテンシーを最小に抑えた最善のゲーム体験を提供できます。
使用したキャパシティーに対する料金のみであるため、ゲームのアイデアを思い付いたばかりの段階でも、数百万人のプレイヤーがいるゲームを稼働する場合でも使用開始できます。
セッションベースの認証
セッションとは、Web クライアントが Cookie を使用してサーバーにアクティブにログオンしている時間と定義されています。
クッキーにセッション情報を保存して、クッキーはサーバー側が発行してクライアントのブラウザに保存します。
はじめにサーバはクライアントにランダムな値のセッションIDを送信します。セッションIDはクッキーに保存します。
通信を行うたびに、クライアントからサーバーに対してクッキーを送信します。
サーバー側はクッキーを受け取って情報を確認し、変更の必要がある場合はクライアントに対してクッキーを更新して返信します。
サーバはセッションIDと紐付ける事でクライアントの状態を保持できるため認証が成功すれば、その後はセッションIDの確認だけで認証が不要になります。
GameLiftが適しているゲームジャンル
Amazon GameLift は、ほとんどのマルチプレイヤーゲームのジャンルに適しています。
GameLift は、指定した期間内にゲームセッションが開始および終了するマルチプレイヤーゲーム向けに設計されています。ファーストパーソンシューティングゲーム、MOBA、格闘ゲーム、レースゲーム、スポーツゲームといったジャンルのマルチプレイヤーゲームです。
GameLift リアルタイムサーバーは、プレビュー中の新機能ですが、少量のデータをプレイヤー間で共有し、複雑性の低いシミュレーションを行う、こういったセッションベースのマルチプレイヤーゲームに最適です。
これらの属性は、カードゲーム、リアルタイム戦略、ロールプレイング、ターン制戦略ゲームのようなジャンルのゲームなどで利用することができます
Amazon GameLiftの概念
GameLiftでは、2種類の専用ゲームサーバーのホスティング方法と主に4種類のホスティングリソースを提供しています。
カスタムゲームサーバーとリアルタイムサーバーと呼ばれる2種類の方法で、専用ゲームサーバーをホスティングできます。
カスタムゲームサーバーの主要コンポーネント
ゲームサーバー
ゲームサーバーは、クラウドで実行されるゲームのサーバソフトウェアです。
ゲームセッション
プレイヤーと一緒に進行中のゲームを指します。有効期間やプレイヤー数など、ゲームセッションの基本特性を定義します。
Amazon GameLift サービス
ゲームサーバーをホストするためのリソースを管理するコアサービス
ゲームクライアント
デバイスで実行されているゲームのソフトウェア
クライアントサービス(ゲームサービス)
GameLiftサービスとゲームクライアント間の通信を仲介するサービス
認証認可などゲーム固有のロジックも処理
カスタムゲームサーバーにおけるゲームへの統合
カスタムゲームサーバーと統合する方法を整理しましょう。
ポイントとしてはどのコンポーネントで何を組み込みどのような処理を実装するか把握することです。
クライアントサービスには、Amozon GameLiftサービスにAPI経由でアクセスするためにAWS SDKを組み込みます。
Amozon GameLiftサービスから情報取得するので、これをゲームクライアントに渡します。
ゲームサーバーは、Amazon GameLiftサーバーSDKというネームサーバー専用のSDKを組み込みます。
これを使用して、Amazon GameLiftサービスとやり取りします。
ゲームクライアントでは、クライアントサービスから渡されたゲームサーバーへの接続情報をもとに自前の方法で直接接続します。
ゲームの仕様に合わせて、GRPCやWEBsocketもしくは独自のプロトコルを使用して、通信処理を実装します。
Amazon GameLift リアルタイムサーバーとは
Node.jsベースのJavaScriptを数行記述することでゲームサーバーを作成してホスティングできる軽量サーバーソリューションです。
リアルタイムサーバーはTCPとUDPを採用しており複雑な設定なしですぐに通信処理を実装できます。
もっともシンプルな使い方としてリアルタイムサーバーは、ステートレスな中継サーバーとして機能します。
必要があればゲームロジックを記述してステートフルなサーバーとしても使用できます。
またリアルタイムサーバーは、カスタムゲームサーバー同様にGameLiftが提供する機能やホスティングリソースを利用できます。
ユースケースとしては、カードゲームやターンベースの戦略ゲーム、軽量のモバイルゲームなどがあり、カスタムゲームサーバーと比較してゲームの複雑性を求めない場合に向いています。
リアルタイムサーバーの主要コンポーネント
RealTime サーバー
RealTime スクリプトを実行するサーバーソフトウェア
ゲームセッション
プレイヤーの接続先となる
RealTimeサーバーのインスタンス
Amazon GameLift サービス
ゲームクライアント
デバイスで実行されているゲームのソフトウェア
クライアントサービス
GameLiftサービスとゲームクライアント間の通信を中化するサービス
認証認可などゲーム固有のロジックも処理