Azure Cosmos DB がサポートするゲーム「The Walking Dead: No Man’s Land」がランキング 1 位に

10月 21, 2015 に投稿済み

Principal Program Manager, Azure Cosmos DB

フィンランドのヘルシンキを拠点とする Next Games は、急成長しているゲーム会社です。2015 年 10 月 7 日に、AMC と Next Games は、「The Walking Dead: No Man's Land」を iOS 向けにリリースしました。これは、AMC の大ヒット テレビ シリーズを原作とする公式モバイル ゲームです。その後、この作品はわずか 1 週間で App Store の無料アプリ ランキングの 1 位にまで上り詰めました。

ダウンロード数は最初の週末だけで 100 万回を超え、プレイ時間は 3,100 万分に達するなど、この作品はリリース前から大きな期待を集めていました。このゲームの大規模なスケールとパフォーマンス要求をサポートするために、Next Games の開発チームはバックエンド サービスを Azure に実装することにしました。ゲームのプロフィールや状態のメタデータを大量に取り込むと同時に、待機時間の短いクエリ (10 ミリ秒未満) に対応する必要がある永続レイヤーには、フル マネージドの NoSQL JSON データベースである Azure Cosmos DB が選択されました。

「The Walking Dead: No Man’s Land」は、シングル プレイヤー モードとマルチプレイヤー モードに対応するターン制のモバイル戦略ゲームです。ゲーム内では基地を設置したり、生存者を捜索したり、スキルや武器を強化してミッションをクリアしたりなど、人気のテレビ ドラマを忠実に再現しています。プレイするにはオンライン接続が必要で、プレイ中にはプレイヤーやギルドのメタデータを保持して頻繁に取得する必要があります。

Azure DocumentDB が選ばれた理由

Next Games の​​開発チームは、この熱い注目を集めるゲームで使用するデータベースの要件として、大規模なスケールとパフォーマンスのニーズにシームレスに対応できることを最も重視しました。

  • 公開初日から膨大な数のユーザーが接続することが想定されるため、多数のプレイヤーのログイン時とログアウト時にメタデータをリアルタイムで更新すると共に、必要に応じて柔軟にパフォーマンスをスケール アップ/スケール ダウンできるデータベースが必要でした。

  • 優れたユーザー エクスペリエンスを実現するためには、応答性がきわめて重要です。プレイヤーのプロフィールおよびスコア情報の保存をミリ秒単位で実行し、プレイ時にラグが発生しないようにする必要がありました。

  • データ層では、単純なキー/値の参照以外に、プレイヤーの内部 ID または GameCenter、Facebook、Google の ID によるプレイヤーの検索や、プレイヤー ギルドのメンバーシップに基づくクエリなど、さまざまなプロパティをリアルタイムでデータを絞り込む必要がありました。

  • この作品には、ゲーム内チャット、プレイヤー ギルドのメンバーシップ、クリアしたミッション、ソーシャル グラフなどのソーシャル機能があり、柔軟なスキーマが必要でした。また、国やソーシャル ネットワークなど、さまざまなグループ別にプレイヤーを並べ替え、リアルタイムの「ハイスコア」ランキングを作成する必要がありました。

  • Next Games にとってリリースのタイミングは非常に重要であり、慎重に検討した末、PaaS (サービスとしてのプラットフォーム) サービスのみを使用して開発することを決定しました。データベースのセットアップと管理の作業を最小限に抑え、開発サイクルを短縮することが重視されました。

さまざまなソリューションを評価した結果、Next Games は上記のすべての要件を十二分に満たしている Azure Cosmos DB をゲームのコア コンポーネントとして採用しました。

Cosmos DB の活用方法

Next Games は、プレイヤーのメタデータやソーシャル グループのデータを保存するために、開発、ロード テスト、運用の各環境用の Cosmos DB アカウントを作成しました。各アカウント内でデータをパーティション分割するため、Next Games チームは Cosmos DB .NET SDK とハッシュ パーティション リゾルバーを使用し、コンシステント ハッシュ法を使って Cosmos DB コレクション間でデータを分散しました。Cosmos DB コレクションは、最大限のスループットとパフォーマンスが得られるように S3 パフォーマンス レベルで構成され、効率的で柔軟な並べ替えを可能にするために文字列の範囲インデックス作成ポリシーが設定されました。

Next Games チームは、アトミックな upsert を使用した書き込みと、次の 3 つのクエリ パターンのいずれかを使用した読み取りを実行するリポジトリ クラスを実装しました。

  • 1 つのプレイヤー ID に基づく単一パーティション クエリ

  • ページ サイズ/最大アイテム数が固定されており、Cosmos DB のパーティションを順次スキャンする複数パーティション クエリ (プレイヤーが属するグループまたはフレンドの上位 N 件のランキング作成に使用)

  • レイテンシを最小限に抑えるために、ResolveForRead を使用してパーティションの並列スキャンを行う複数パーティション クエリ (例: Facebook ID、Google ID、GameCenter ID などの「2 次インデックス」によるプレイヤーの検索などに使用)

このゲームでは、ハイスコアをリアルタイムで表示することも重要です。ランキングは、全世界のハイスコア、プレイヤーが住む国のハイスコア、フレンドのハイスコアに分かれています。この機能は、Cosmos DB クエリを使用してコレクション内の並べ替えを実行し、その結果を個別の "ハイスコア" ドキュメントとして集計すると共に、個々のコレクション内に JSON ドキュメントとして保存するサービスとして実装されました。

次のステップ

大人気ゲームやモバイル アプリのニーズに対応できるバックエンド データベースをお探しの場合は、Cosmos DB の無料試用版をお試しください。また、Cosmos DB エンジニアリング チームとの 1 対 1 のチャットをご予約いただくこともできます。「No Man’s Land」は iTunes App Store からダウンロードできますのでぜひお楽しみください。