コロナウイルスの影響で初のオンラインとなった「CEDEC」が9月2日(水)から4日(金)までの日程で開催されている。2日目となる3日には、『Minecraft』シリーズで活用されているマルチプレイサーバの実装テクニックを、日本マイクロソフト株式会社、ゲーム&エンターテイメント営業本部の梅津 寛子氏と株式会ナウプロダクションの伊藤 明男氏が語ってくれた。
文・取材/早川清一朗
マイクロソフトがゲームのためにできること
冒頭、梅津氏からは最近リリースされているゲームの傾向として、“よりリアルで実写に近いグラフィックや壮大なシナリオで作品世界に深く入り込み、没入感を味わうことができる濃い内容で遊べるハイボリュームなタイトル”と“ルールが単純で隙間時間に手軽に遊べ、ガチャやアイテム課金ではなく広告収入で運営を行うハイパーカジュアルと呼ばれるジャンル”のふたつに分かれていることが語られた。
それぞれの傾向に合わせて開発や運用も変化してきており、「開発スピード」「拡張性」「マネタイズ」の3つのポイントが求められるようになっているとのこと。
これらの問題を解決するためにMicrosoftは“Microsoft Game Stack”として開発からリリースまで360度全方位でゲーム会社をサポートできるよう、さまざまなソリューションをひとつにまとめ、提供しているとのこと。
その中でも代表的なツールが、「Visual Studio IDE」だ。「Unity」や「Unreal Engine」といった現代のゲーム開発には欠かせない主要なゲームエンジンとの連携も可能で、より効率的なコーディングやデバッグが可能になっていると梅津氏は語ってくれた。
また2018年に買収した世界最大級のソース管理サービスである「GitHub」も利用者数を伸ばしており、コア機能の無料化などさらなる進化を遂げているとのこと。
そして現在のゲーム運営において、プログラムを運用・展開する環境やユーザーの安定した接続を保証する強力なサーバーなど、クラウドサービスの充実は決して欠かせない。
その点について、Microsoftは「Microsoft Azure」という世界最大のクラウドサービスを提供しており、現在では140の国で利用可能となっている。Microsoftの技術とオープンソースの技術双方に対応しており、「Visual Studio IDE」や「GitHub」などのMicrosoft製品群とも高いレベルで統合されており、既に膨大な実績を積み重ね信用できるサービスとなっている。
「Microsoft Azure」の実績のひとつが、『Minecraft Earth』だ。昨年リリースされMinecraftの世界を現実で体験できるタイトルとなっている。このタイトルでは「Azure Cosmos DB」と呼ばれるグローバルに分散されたマルチモデルデータベースが活用されている。プレイヤーによる膨大な数の書き込みのラグを回避するために必要な最短での処理を行うため、「Azure Cosmos DB」をベースにした追加専用データストアを使用し、データに対してプレイヤーが行った一連のアクションをすべて記録している。Microsoftの技術力の高さがうかがえる。
「Azure Cosmos DB」は大規模から小規模まであらゆるスケールのプロジェクトに対応するオープンAPIを備えており、高速な処理を可能とするSQLデータベースだ。『Minecraft』以外にも『マジック・ザ・ギャザリング アリーナ』など複数のタイトルで採用されており、ゲームと非常に親和性が高いツールであることを証明している。
また、Azureのサービス群は高度に統合されており、データモデルを問わずすべてのデータが自動的にインデクシング可能だ。これはゲーム開発における効率化を簡潔化するために重要な要素となるだろう。
今年の5月に発売された『Minecraft Dungeons』においても、Azureのサービス「Azure Kubernetes Services delivers」が活用されている。このサービスはコンテナ化されたアプリケーションの高速化と運用効率の向上を果たし、全体としての運用負荷を軽減させている。
この画像が『Minecraft Dungeons』のサーバ&クライアント構成となる。クライアントがクライアント(ゲームに使用するハード)を通じゲームにアクセスしようとすると、左のシグナリングサーバ群に接続します。
シグナリングサーバは内部の認証システムと通信し、プレイヤーの認証確認を行います。認証に成功するとゲームクライアントはSTUN/TURNサーバへの認証用リレートークンを取得し、ゲストクライアントはシグナリングを通じてソフトクライアントへの接続を確認する。
ここでAzureは異なるシグナリングサーバに接続するゲームクライアントの負荷分散やトラフィックのルーティング、DDoS攻撃の低減、認証サービス、仮想ネットワークとのピアリングなど様々なサービスを用いて快適なゲームプレイの実現に貢献している。
ここまでさまざまなサーバーとサービスについて語ってくれた梅津氏が、特に力を込めていたのが「Azure PlayFab」だ。ゲームの開発・運用においては人的リソースや管理コストを十分に用意できる会社ばかりとは限らない。
そういった中でバックエンドサービスの開発コストを抑え、ゲームの面白さを追求するために注力するという課題が出てきた。「Azure PlayFab」はそのようなニーズにこたえて用意されているアプリケーションで、ゲーム開発に特化している。
「Azure PlayFab」はマスターデータの管理やユーザーの行動分析など、ゲーム運用に必要なデータベースやツールを備えており、ほかにもマルチプレイヤーサーバーやボイスチャットと翻訳を行うことができるコミュニティ機能など、新要素の追加や改善もしばしば行われており、無料で使えるサービスも存在している。そのため、個人ディベロッパーから大型のタイトルまで日本国内外含め、さまざまな開発レベルで使用されている。
特に「Azure PlayFab」は「XBOX ONE」や「プレイステーション4」、「Nintendo Switch」といったコンシューマー機から、AndroidやiOSといったモバイル向けでも使用が可能だ。
「Unity」や「Unreal Engine」といった主要なゲームエンジンを用いて各プラットフォーム向けにゲームを開発できるのも大きな強みだろう。「Azure PlayFab」を用いれば、異なるプラットフォームでも同一のゲームをプレイ可能な形で実装できるのは大きな特徴となる。
『Minecraft』ではゲームへのログインやユーザー情報の管理、アイテムカタログの管理など、さまざまな機能を利用している。その中でも、ユーザーが作成したスキンなどのコンテンツを管理するUGC(ユーザージェネレイテッド・コンテンツ)の登録コンテンツの確認などの処理の煩雑化を避けるための機能はもともと『Minecraft』用に使われていたもので、現在はほかのユーザーでも使用可能となるように準備中であると明かされた。
特に『Minecraft Earth』で利用しているマルチプレイヤーサーバ機能は、「Azure Cosmos DB」と「Azure PlayFab」を組み合わせて構成されている。このように「Azure PlayFab」はさまざまな開発・運用のさまざまなシーンで採用されている。次項では日本国内での実際の活用事例について触れたいと思う。
「Microsoft Azure」その実用例
梅津氏に続いて講義を行ったのは、「Microsoft Azure」のサービスの1つであり、ゲーム開発において重要な役割を持つ「PlayFab」を実際に使用している株式会社ナウプロダクションの伊藤氏だ。特に近年のオンラインゲームでは一般的となっている「マッチング」や「マルチプレイ」についての解説は聞きどころが多かったように感じられた。
世界各国で同じゲームを遊んでいるプレイヤー同士を結び付けるのが、いわゆるマッチメイキングだ。伊藤氏によるとマッチメイキングとは「セッションプレイ型のゲームにおいて同一のセッションで遊ぶプレイヤーをグルーピングする」ことを指しており、「PlayFab」の標準機能を使用して実装されているとのこと。
クライアント側は「PlayFab」のマッチメイキングAPIを使用し、マッチングが成立したクライアント同士はマルチプレイヤーサーバーがホスティングしているゲームサーバービルドにそれぞれ接続する形式が取られており、繋がれた先のゲームサーバービルド上でリアルタイムマルチプレイが実現するようになっているのだそうだ。
今回、開発事例として挙げられているプロジェクトにおいては、マルチプレイヤーサーバとして専用のサーバモデルを用意しているとのこと。例えばキャラクターが移動する際には、クライアント側での処理は「キャラクターを移動させる」という入力情報を送信するのみで、実際の移動についてはサーバ側で処理し、結果のみをクライアントに返して端末の負荷を軽減させている。
この場合クライアントビルドとサーバビルド間での円滑な通信の実現も大きな課題となるが、ネットワークライブラリとしてUnityでの動作をサポートし、リアルタイム通信が可能なフレームワークである「MagicOnion」を採用している。
「MagicOnion」の実装にかかったのはわずか5日。開発環境構築に1.5日、「PlayFab」が提供するゲームサーバーサービスである「GSDK」の組み込みには2日、簡易マルチプレイ実装には1日と、おそろしいほどのスピードで検証環境を実現している。開発に速度が要求される現代においては、環境構築の早さも極めて重要な要素だ。「Microsoft Azure」の力がますます重要となるだろう。
現代において大規模展開されているゲームは、世界中でのプレイが前提となっている。通信環境も使用しているハードも使う言葉も異なるのユーザーが同じゲームを簡単に遊べるようになったのは、今でこそ当たり前のように受け入れられているが、ほんの一昔前は夢物語でしかなかった。
5年、10年という時間でハードウェアの性能が爆発的に向上していく中、ソフトウェアも、環境に応じて素早く柔軟に対応していく力が求められる。その点、ゲーム開発・運用に必要なツールをパッケージングして、多くのニーズに対応できるようになっている「Azure」は、ゲーム開発におけるさまざまな問題や課題を解決するための選択肢として、有力な候補となるのではないだろうか。