Azure DocumentDB を活用したゲーム「The Walking Dead: No Man's Land」がランキング 1 位に

執筆者: Aravind Ramachandran (Program Manager, Azure DocumentDB)

このポストは、10 月 21 日に投稿された The Walking Dead: No Man's Land game soars to #1 supported by Azure DocumentDB の翻訳です。

 

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

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

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

Azure DocumentDB が選ばれた理由

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

  • 公開初日から膨大な数のユーザーが接続することが想定されるため、多数のプレイヤーのログイン時とログアウト時にメタデータをリアルタイムで更新すると共に、必要に応じて柔軟にパフォーマンスをスケール アップ/スケール ダウンできるデータベースが必要でした。
  • 優れたユーザー エクスペリエンスを実現するためには、応答性がきわめて重要です。プレイヤーのプロフィールおよびスコア情報の保存をミリ秒単位で実行し、プレイ時にラグが発生しないようにする必要がありました。
  • データ層では、単純なキー/値の参照以外に、プレイヤーの内部 ID または GameCenter、Facebook、Google の ID によるプレイヤーの検索や、プレイヤー ギルドのメンバーシップに基づくクエリなど、さまざまなプロパティをリアルタイムでデータを絞り込む必要がありました。
  • この作品には、ゲーム内チャット、プレイヤー ギルドのメンバーシップ、クリアしたミッション、ソーシャル グラフなどのソーシャル機能があり、柔軟なスキーマが必要でした。また、国やソーシャル ネットワークなど、さまざまなグループ別にプレイヤーを並べ替え、リアルタイムの「ハイスコア」ランキングを作成する必要がありました。
  • Next Games にとってリリースのタイミングは非常に重要であり、慎重に検討した末、PaaS (サービスとしてのプラットフォーム) サービスのみを使用して開発することを決定しました。データベースのセットアップと管理の作業を最小限に抑え、開発サイクルを短縮することが重視されました。

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

DocumentDB の活用方法

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

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

  • 単一のプレイヤー ID に基づく単一パーティション クエリ (英語)
  • ページ サイズ/最大アイテム数が固定されており、DocumentDB のパーティションを順次スキャンする複数パーティション クエリ (英語) (プレイヤーが所属するグループやフレンドの上位 N 件のランキング作成に使用)
  • レイテンシを最小限に抑えるために、ResolveForRead を使用してパーティションの並列スキャンを行う複数パーティション クエリ (例: Facebook ID、Google ID、GameCenter ID などの「2 次インデックス」によるプレイヤーの検索などに使用)

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

次のステップ

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