モバイルシューティングゲーム向けのクラウドバックエンドの構築方法

こんにちは、Habr! 最近では、ロシアや他のいくつかの国で、すでに50万人以上がダウンロードされているマルチプレイヤーモバイルシューティングゲームGuns Of Boomを発売しました。 スムーズでトラブルのないゲームを実現するには、多くのユーザーが優れたバックエンドを必要とします。 この記事では、なぜクラウドを使用することにしたのかを説明し、クラウドサービスに基づいてバックエンドを構築する機能について簡単に説明します。







一般に、クラウドサービスには、開発者の地下で動作するサーバーの形で、従来のバックエンドよりも多くの否定できない利点があります。 数を大幅に増減できない(ゲームは人気がなく、「季節外れ」であり、機器はアイドル状態です)固定サーバーとは異なり、負荷に応じて追加の容量を自動的にオンおよびオフにできます。



クラウドの深い本質(tm)を理解するのに役立つクラウドの2つの主な利点は、 冗長性の提供とスケーリングの速度です 。 ここでの速度のスケーリングとは、追加のハードウェアリソースを迅速に提供してユーザー数を大幅に増加させ、ユーザー数が減少した場合にサーバーの時間消費を削減し、お金とリソースを節約できることを意味します。



冗長性の場合、ゲームリソース、データ、またはクラウド内のハードウェアシステムの自動複製について話します。 ほとんどの場合、同じ地域内の1つ以上のデータセンター内の複数のサーバーに同じデータセットを格納することにより、冗長性が提供されます。 これは、緊急災害復旧、利用可能なサーバーへの自動フェイルオーバー、およびDDOS攻撃からの保護に必要です。







オンラインシューターの作成について話しているので、データ転送の待ち時間を短くすることが非常に重要です。 すべてのユーザーの少なくとも4分の1は 、3G / 4Gを介してGuns of Boomをプレイします。スムーズなゲームプレイのためには、100ミリ秒以下の遅延が必要です。 上のクリップは、ゲームのダイナミクスを示しています。これは、世界中のどこのプレーヤーでも高いレベルで確実に維持する必要があります。





まず、これは、原則として、同じ地理的地域にある最寄りのサーバーへのプレーヤーの自動接続によって保証されます。 次に、最大のパフォーマンスとスムーズさを確保するために、 セッション サーバーメタサーバーを使用します 。 メタサーバーは、理解を簡単にするために1つのロールに結合したリアルタイムサービスのサブセットであり、ゲームプレイの場所としては重要ではありません。 ある時点で、マイクロサービスモデルの使用を検討しましたが、最終的には大きな利点が見つからず、現在のバージョンに落ち着きました。



ゲームクライアントは、承認とデータ同期のためにメタサーバーにアクセスします;この接続は永続的であり、ゲームセッション中に中断することはありません。 通常、シューティングゲームはこれを回避しようとしますが、現在のワークロードレベルでは、このアプローチには価値があると判断しました。 とりわけ、クライアントがいつどのセッションサーバーに接続するかを決定するのはメタサーバーです。 名前が示すように、ゲームセッション自体はセッションサーバー上で行われます。



クラウドを使用することで、インフラストラクチャを自動的にスケーリングし、現在必要な量のリソースのみを消費することができます。 クラウドは、より多くのハードウェアリソース(CPU、RAM、インターネットチャネル)を簡単に提供して、増加したユーザー数、したがってゲームセッションを処理できます。



スケーリングは反対方向に機能します。 Guns of Boomでは、同時に接続されている8人のプレーヤーのゲームセッションは5分間続きます 。 プレーヤーがセッションサーバーから切断されると、負荷が減少します。 サーバーで実行される戦闘セッションが4回未満の場合(つまり、接続されているユーザーが32人未満の場合)、ゲームクライアントはサーバーにアクセスできなくなります。 そのようなサーバー上のすべてのセッションが終了するとすぐに、そのサーバーからのプレーヤーは空きスロットを持つ他のセッションサーバーにリダイレクトされ、現在のサーバーは非アクティブとしてマークされます。







Guns of Boomでクラウドを使用することに決めたとき、次の要件を策定しました。





同様の規模の産業プロジェクトを立ち上げる際にすでに実証済みのプラットフォームを使用することが重要でした。 したがって、 Amazon Web ServicesはGuns of Boomに選ばれました。



選択の次の段階は、インフラストラクチャのサイズと、基礎として使用される仮想マシンの種類の問題です。 長いテストの後、ほとんどのサービスのメインプラットフォームとしてc4.xlargeマシン、戦闘セッションを備えたサーバーのc4.4xlargeマシンに決めました。



私たちが選んだ主な要因の1つは、ネットワークサブシステムの中断のない高速動作と大量のRAMの供給でした。 これは、スケーリング時に重要であることが判明しました。 品質を最適化し、すべてのリソースをRAMに転送する(およびスワップファイルの使用を無効にする)一方で、サーバーに大きな負荷がかかっても予約を確保する必要があります。



AWSはその一部として、まだ準備ができていなかったいくつかの驚きを用意してくれました。 たとえば、AmazonのEnchanced Networkingにもかかわらず 、ネットワークサブシステムはそれほど単純ではありませんでした。 すべては、いくつかのバトルサーバーに負荷がかかった状態でネットワークがすぐに故障し、クラスター内で深刻な問題が発生し、いくつかのノードが切断され、プレーヤーが切断されたという事実から始まりました。



内部調査の後、バックエンドアーキテクチャの失敗の理由は見つかりませんでした(ログはきれいで、コンソールにエラーはありません)が、 Amazon Premium Supportを集めた後、これはまれではあるが許容できる仮想マシンの振る舞いであることが判明しました。申し立てられたSLA。 その後、クラウドインフラストラクチャのハードウェア障害時を含め、フォールトトレランスを確保するためにアーキテクチャを最適化する必要がありました。



したがって、美しいSLAを備えたクラウドサービスでも、すべての問題が解決されるわけではなく、考慮すべき追加のリスクが伴います。







現在、ゲームは数カ国のソフトラウンジで行われており、インストール数は50万を超えています。 世界中でローンチする前に、バックエンドが適切に耐え、適切にスケーリングできることを確認し、何百万人ものプレイヤーにポジティブなユーザーエクスペリエンスを提供する必要があります。



残念ながら、最初の多くのオンラインゲームでは、起動直後にバックエンドで重大な問題が発生しており、オンラインの重要な部分を獲得しています。 最近の例には、 Pokemon GO、Tom ClancyのThe Division、Total War:Warhammerなどがあります。



現時点では、上記の機能は完全には実装されていませんが、クライアントとサーバー間の通信プロトコルを改善し、ネットワークの負荷と遅延を削減しています。 Amazonクラウドデータセンターインフラストラクチャの地理を使用して、地理的に分散したアーキテクチャを積極的に改善し、誰もがGuns of Boomを快適にプレイできるようにします。 そして、これらすべてのポイントが正常に完了した後にのみ、世界中でGuns of Boomを起動し、それを待っているすべてのプレイヤーを幸せにすることができます。 そして、私たちはそれについて間違いなくあなたに話します。



All Articles