Loftia の MMO アーキテクチャを Epic Online Services と Hathora で構築する

Image courtesy of Qloud Games
このゲスト ブログ記事は、Hathora のシニア ソフトウェア エンジニア Justin Chu 氏が執筆しました。Eric Mallon 氏 (Qloud Games 共同設立者兼 CTO) にインタビューを行い、発言を引用しています。

Hathora はサーバー オーケストレーション プラットフォームで、Qloud Games が開発する心地良いソーラーパンク MMO の Loftia で使用されています。このゲームは Kickstarter で幅広く資金を調達し、ファンディングの過程で 400,000 人を超える熱心なファンのコミュニティを作り上げました。
Courtesy of Qloud Games
ゲームのかわいいグラフィックに騙されるなかれ。スタジオが描く Loftia のマルチプレイヤー機能の構想は当初から (とりわけデビュー作から) 非常に野心的なものでした。その目標には、ソロプレイとシームレスなオンライン協力プレイを両立させること、プレイヤーが家を連結できるダイナミックなセッションを実現すること、何百人ものプレイヤーが共有する大規模なソーシャル ハブを用意することがありました。
 
私のチームは先日 Qloud Games の共同設立者兼 CTO である Eric Mallon 氏と情報交換を行い、同社がゲームのアーキテクチャ構築に際して直面した大きな選択と課題について興味深い話を聞きました。この記事では Qloud Games が Epic Online Services (EOS) と Hathora に処理を任せることで小規模なチームが大きな構想を実現した方法について説明します。
Courtesy of Qloud Games

Loftia の初期アーキテクチャの内側

野心的な目標を達成するために、小規模なインディー チームである Qloud は自社でツールを作成するのではなくサードパーティ ツールに頼ることにしました。Eric 氏によると、ゲーム エンジンの選択は簡単だったそうです。

「Unreal Engine 5 は操作が簡単で、多くの開発努力が注ぎ込まれています。他の選択肢はまったくありませんでした。[UE5] は導入が簡単で、プラグインがとても豊富で、クロス プラットフォーム サポートがあります」(Eric 氏)

ゲーム エンジンで対応できない部分もあったため、Eric 氏は心地良い MMO を実現するのに欠かせないオンライン サービスの検討を即座に始めました。最初のアルファ プレイテストのおよそ 1 年半前にはすでに、Qloud では Epic Online Services と Hathora の両方を使い、社内のリモート プレイテストを可能にしていました。

「Epic Online Services と Hathora はどちらも簡単に使い始めることができました。しかも、両方とも開発のベースにできる柔軟性があったのはラッキーでした」(Eric 氏)
Courtesy of Qloud Games

リーン チームに最適なツール

「チームのエンジニアリング人材とバックエンド システム構築能力には常に自信がありました。しかし、小さなチームなので、クロス プラットフォーム プレイヤー認証やスケーラブルなサーバー ホスティングなどの長時間を要するタスクへの対応には既製のツールを使う必要があるとわかっていました」(Eric 氏)

Eric 氏には、クロス プラットフォーム プレイヤー認証機能を適切に実装するには多くの開発時間がかかるとわかっていました。Epic Online Services には、簡単に実装を始めることのできる洗練された無料のソリューションがありました。Qloud は時間をかけて Epic Online Services のモジュール式機能を取り入れる作業を続け、セッション管理や音声チャットなども実装していました。

サーバー ホスティングに関しては、Eric 氏のチームには経験があり、システムの構築と保守にどの程度の時間がかかるのか (多くの場合、保守とリアルタイム監視は個別の専任チームが必要) を把握していました。そして、Qloud には Loftia に専任チームを用意する余裕がないことも明らかでした。

「Hathora はセットアップが非常に迅速でした。ゲーム専用に作られているからです。 EC2 インスタンスを直接管理しなくてもよいのが便利です。当社には他に注力しなければならないことが山のようにあるので」(Eric 氏)
Courtesy of Qloud Games

持続可能なスケーラビリティが不可欠

Epic Online Services の無料ソリューションの使用は、Qloud CTO とチームにとって考えるまでもないことでした。何百ものゲームが EOS を使ってリリースされ、世界中の十億人近いプレイヤーにプレイされている実績があります。Eric 氏はこのサービスの持続的なスケーリング能力を確信しました。「初期の立ち上げコストと同様に、その後のスケーリング コストは重要です。特に、私たちのようなインディー チームにとっては」(Eric 氏)

一方、ゲーム サーバーはマルチプレイヤー ゲーム運営で最も費用がかかる項目の 1 つとして知られています。Eric 氏は Hathora の利用量ベースの料金体系をすぐに気に入りました。さらに Hathora はシームレスにクラウドにバーストできる低価格のベアメタル サーバーも提供しているため、初期開発中、テスト中、リリース後もサーバー費用を無理なく支払い続けられると Eric 氏は判断しました。

Loftia のサーバーは、初期内部テストから Kickstarter 早期支援者 10,000 人以上が参加した直近の Loftia のアルファ プレイテストまで 2 年近く Hathora で安定して稼働しています。そのあらゆる点で Epic Online Services はアーキテクチャのバックボーンを提供し、ユーザーがシームレスに接続し、マッチングし、複数のプラットフォームでプレイできるようにしています。

「Epic Online Services と Hathora の両方を使うとリリースからその後まで Loftia の費用を都合よく増減できるということがわかり、安心しています」と Eric 氏は言います。

Loftia のマッチメイキング アーキテクチャ:Epic Online Services と Hathora の統合の概要

Loftia のバックエンド アーキテクチャは次の 2 つのコア グループに整理することができます。
  1. データとテレメトリ パイプライン:永続性、分析、長期的なプレイヤー状態を処理します。そのために Qloud では Sentry、AWS Firehose、DynamoDB などのツールを使用しています。
  2. リアルタイム ゲームプレイ インフラストラクチャ:複数のプレイヤーがリアルタイムで交流するセッションの実行を担います。

Loftia を特に面白くしているのは Qloud が採用しているマッチメイキングの方法です。従来のように競争成績を基に行うのではなく、プレイヤーがフレンドとすぐにプレイを始められるよう、適切なセッションにスムーズに追加されるようになっています。この方法はエレガントかつ非常にシンプルです。

ワールドの種類

Loftia はマッチメイキングのニーズを方向付ける 2 つの異なる種類のワールドを用意しています。
  1. ソーシャル ハブ – 1 セッション最大 100 プレイヤー。プレイヤーが会ったり、クエストに挑戦したり、採集したり、NPC と交流したりできる共有の公共スペースです。
  2. プレイヤー ハウス – 最大 25 プレイヤー。セッションのためにプレイヤーに住宅「スロット」が動的に割り当てられる公共ゾーンです。小さな地区で最大 8 人のプレイヤーやフレンドと同居します。 
Courtesy of Qloud Games

プレイヤーがワールドに参加する方法

速度と信頼性を確保できるようにプレイヤーの接続フローが設計されています。

1.プレイヤーがワールドへの参加をリクエストします。
2. Epic Online Services を使用して既存のセッションが検索されます。 3. マッチが見つからない場合、Hathora で新しいサーバーが起動します。
  • サーバーがオンラインになったら、サーバーが Epic Online Services に登録され、プレイヤーが接続できるようになります。統合のヒント:Epic Online Services のセッションは Hathora のルームにぴったり対応しています。

このフローの大枠はシンプルに見えますが、どの MMO でも同じように、特殊な状況下で穴が出現します。Qloud が直面した興味深い課題について、いくつか見てみましょう。
 

課題 1:新規サーバーの競合状態

Loftia チームは早い段階で、マッチするセッションがない場合のサーバーのプロビジョニング過多をどのように回避するかという厄介な課題に遭遇しました。

技術的な効率性とワールドのにぎやかさの維持という 2 つの理由から、プレイヤーを追加するソーシャル ハブ セッションをできるだけ少ない数に抑えるという目標がありました。プレイヤー ハウスにも同じ原則が当てはまりました。

チームが取ったソリューションは、AWS Lambda バッファを使い、Hathora で新しいインスタンスを起動している間、サーバー リクエストをキューに入れることでした。このバッファにより、複数の参加リクエストが同時に到着した場合に余分なサーバーが起動するのを回避できます。

徹底的なテストLoftia の最初のプライベート アルファの間、このバッファ ロジックがなかったため、余分なサーバーが起動して大きなバーストが発生していました。またしても、アルファ テストが極めて重要だと思い知らされるできごとでした。
 

課題 2:サーバー スロットの予約

気付きにくかったもう 1 つの重要な課題は、参加プロセス中に空いているスロットを予約することです。空きスロットが 5 つしかないサーバーに 5 人のプレイヤーが参加を試みた場合、5 つすべてのリクエストがオーバーラップし、参加を拒否されるプレイヤーが出てしまうリスクがあります。

Loftia はこの問題を Unreal オンライン ビーコンで回避しています。オンライン ビーコンを使って、空きをクエリするだけでなく、接続試行が始まる前にスロットを予約しています。細かいところの改善ですが、瞬間瞬間のエクスペリエンスが劇的に良くなる工夫です。

Loftia のような、心地良く、ソーシャル性を重視するゲームでは、少しの使いにくさで魅力が大きく削がれてしまいます。こうした小さな実装の細部への対処が、プレイヤー エクスペリエンスに大きな影響を与えます。

スケーラブルなリリースための心地の良い土台

インディー スタジオによる MMO 構築は現在でもまだ野心的な挑戦であることは間違いなく、それが初めての作品となればなおさらです。しかし、ゲームの設計とアーキテクチャを丁寧に考え、Epic Online Services と Hathora を活用してそのアーキテクチャを現実のものに近付けたら、Loftia のようなゲームの参入障壁は決定的に低くなるでしょう。
 
Eric 氏と Qloud チームはチームに合った適切なツールを使い、小規模チームが大規模 MMO エクスペリエンスを構築する道を切り開いています。そして、Loftia のテーマであるソーラーパンクのように、高く舞い上がろうとするこの小さなチームの未来は明るく見えます。
 

リンクと参考文献

    Epic Online Services を始める

    Epic Online Services (EOS) は、主要なエンジン、ストア、プラットフォームすべてで機能する無料のサービスで、デベロッパーにゲームをリリースして拡張する力を与えます。