Amazon GameLift でマルチプレイヤーゲームサーバーをホスティング - マッチメイキングとフリート管理

GameLift によるゲームサーバーのデプロイ、FlexMatch マッチメイキング、スポットインスタンスの活用を解説します。

GameLift の概要

GameLift はマルチプレイヤーゲームの専用サーバーをマネージドにホスティングするサービスで、世界の AWS リージョンと Local Zones にゲームサーバーを配置できます。FPS、バトルロイヤル、MOBA などのリアルタイムマルチプレイヤーゲームで、プレイヤーに低レイテンシの接続を提供します。FlexMatch マッチメイキングエンジンでスキルなどのプレイヤーの属性にもとづいてマッチを組み、Auto Scaling でプレイヤー数に応じたフリートサイズの自動調整を行います。GameLift Server SDK をゲームサーバーバイナリに統合することで、セッション管理、ヘルスレポート、プレイヤー接続管理を GameLift が代行し、ゲーム開発者はゲームロジックを実装します。

FlexMatch とフリート管理

FlexMatch はルールベースのマッチメイキングエンジンで、プレイヤーのスキルレーティング、レイテンシ、チームサイズ、カスタム属性に基づいてマッチを構成します。マッチングルールは JSON で定義し、「スキル差が 100 以内のプレイヤーを 5 対 5 でマッチング」といった条件を設定します。ルールには拡張 (expansion) を定義でき、待機時間が長くなるにつれてスキル差の許容範囲を段階的に広げることで、マッチ成立率と品質のバランスを取れます。フリートはゲームサーバーのインスタンスグループで、オンデマンドとスポットの混在構成が可能です。ゲームセッションキューを使うと複数フリートにまたがってゲームセッションの配置を管理でき、フェイルオーバーやコストを考えた配置に使えます。

マルチリージョンとレイテンシ最適化

GameLift のマルチロケーションフリートは、 1 つのフリート定義で複数リージョンにゲームサーバーをデプロイします。 FlexMatch のマッチメイキング設定でプレイヤーのレイテンシデータを評価し、ゲームセッションを配置するリージョンを決めます。プレイヤーは GameLift SDK でレイテンシを測定し、マッチメイキングリクエストに含めます。 Anywhere フリートを使うと、オンプレミスやエッジのサーバーを GameLift のフリート管理に統合でき、特定地域でのレイテンシ要件に対応できます。リアルタイムサーバー機能では、 Node.js スクリプトでゲームロジックを記述し、カスタムバイナリのビルドなしで軽量なゲームサーバーを構築できます。

設計のベストプラクティスと落とし穴

GameLift の本番運用で検討する項目を整理します。Server SDK の統合では、ProcessReady で onStartGameSession、onProcessTerminate、onHealthCheck の 3 つのコールバックを実装し、onHealthCheck が false を返すとプロセスが異常と判定されて終了されます。ゲームセッションの最大同時プレイヤー数は CreateGameSession 時に指定し、途中で変えられないため、見込みより多めの値を指定します。スポットインスタンス利用時は、onProcessTerminate が呼ばれてからプロセス終了まで通常 2 分間の猶予があり、この間にゲームステートの保存やプレイヤーへの通知を完了させます。ゲームセッションキューでは、優先度設定でスポットフリートを先に配置し、フォールバックとしてオンデマンドフリートを後に置く構成をとれます。また、GameLift のビルドアップロードはリージョンごとに行う必要があり、CI/CD パイプラインで対象のリージョンへのデプロイを自動化できます。

他のホスティング方式との比較

マルチプレイヤーゲームサーバーのホスティング方式として、GameLift 以外に EC2 での自前運用、ECS/EKS でのコンテナ化、サードパーティの Multiplay や i3D.net があります。EC2 での自前運用では構成を自由に決められる一方、マッチメイキング、スケーリング、セッション管理を独自に構築します。ECS/EKS はコンテナ化による可搬性が利点ですが、ゲーム特化のマッチメイキングやレイテンシベースの配置ロジックは自前で実装する必要があります。GameLift は FlexMatch、FleetIQ、マルチロケーションフリートなどのゲーム向けの機能を備え、ゲームサーバーのインフラの運用を GameLift に任せられます。一方で GameLift は AWS 固有のサービスであり、マルチクラウド戦略やオンプレミス中心の運用を志向する場合は Anywhere フリートか他の方式を使う構成をとります。Realtime Servers は低負荷のカジュアルゲームで使い、物理演算を多用する FPS タイトルではカスタムバイナリ方式をとります。

GameLift のコスト最適化

GameLift のコストはインスタンス時間で課金されます。スポットインスタンスをフリートに指定すると、ホスティングのコストを抑えられます。FleetIQ はスポットの中断率が低いインスタンスタイプを選びます。Auto Scaling ポリシーでアクティブなゲームセッション数やプレイヤー数に基づいてフリートサイズを調整し、ピーク時間外のインスタンスを削減します。オンデマンドとスポットの混合フリートで、ベースラインをオンデマンドで確保し、ピーク時の追加キャパシティをスポットで賄う構成をとれます。

まとめ

GameLift はマルチプレイヤーゲームサーバーのホスティングと FlexMatch マッチメイキングを提供するサービスです。マルチロケーションフリートで複数のリージョンにゲームサーバーを置き、スポットインスタンスでホスティングのコストを抑えます。Anywhere フリートでオンプレミスやエッジのサーバーも統合管理でき、リアルタイムサーバーで軽量なゲームロジックを構築します。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。

共有する