エピック ゲームズ ジャパンが主催する勉強会「EOS Deep Dive 2023」が、2023年12月14日(木)に開催されました。
「『地球防衛軍6』におけるEOS導入と実装事例」と題した講演では、サンドロット エンジニア 堀内 康寛氏、ディレクター・チーフエンジニア 野口 俊雄氏が登壇。内製ゲームエンジンで開発された本作にEpic Online Servicesを組み込むノウハウが解説された本講演をレポートします。
エピック ゲームズ ジャパンが主催する勉強会「EOS Deep Dive 2023」が、2023年12月14日(木)に開催されました。
「『地球防衛軍6』におけるEOS導入と実装事例」と題した講演では、サンドロット エンジニア 堀内 康寛氏、ディレクター・チーフエンジニア 野口 俊雄氏が登壇。内製ゲームエンジンで開発された本作にEpic Online Servicesを組み込むノウハウが解説された本講演をレポートします。
TEXT / rita
EDIT / 神谷 優斗
地球防衛軍シリーズは、2003年に「SIMPLE2000」シリーズの作品としてPS2向けに発表されて以来、20年にわたって展開が続く3Dアクションシューティングゲームです。
本講演で取り上げられた『地球防衛軍6』は前作から5年ぶりとなる新作で、2023年12月時点で39万本を販売しています。
本作は、シングルプレイと同じステージを複数人で協力して攻略するオンライン協力プレイに対応しています。
協力プレイを行うには、ロビーを作成して参加者を集めるか、ロビー画面から参加したいロビーを選択します。
本タイトルは、前作までの資産を引き継ぎ、PS4をターゲットとして開発をスタートしました。
しかし、開発途中で後継機となるPS5が発売されたことで「PS4・PS5の両対応(いわゆる縦マルチ)にしたい」「ネットワークプレイもクロスマッチングしたい」という要求が発生しました。
地球防衛軍シリーズは独自のフレームワークで開発されており、通信処理も独自に実装されていました。異なるハード間での処理共通化やマッチングを検討した結果、現状のシステムでは対応不可能であると判断されました。
そこで、従来のオンライン処理に代わる手段を検討。その結果、Epic Gamesが提供するオンラインゲーム構築用のソリューション「Epic Online Services(EOS)」を採用しました。
EOSは、アンリアルエンジンに限らずさまざまな環境で利用できるため、本作のような独自のフレームワークをベースにした開発であっても導入することが可能です。
EOSでは、実績やリーダーボードなどの機能が個別の「インターフェース」として提供されています。
本作で利用したインターフェースは、基本機能にあたる「Auth(認証)」「Connect(接続)」のほか、「Lobby」「P2P」の4つです。
EOSを本作に導入する作業は、Lobbyを使ったゲーム内ロビー機能に10日ほど、P2Pを使ったゲームパートに20日ほどで、合計1ヶ月で完了したそうです。
インタフェース経由でAPIを呼び出して結果をコールバックで受け取る構成で扱いやすく、少ないコストで実装できたと堀内氏は語ります。
リリース後、ピーク時には10万ユーザーからの同時アクセスがありましたが、サーバーはまったく問題が起きなかったそう。さすがは『Fortnite』の接続をさばききるサーバーソリューションだ、と堀内氏はEOSを称賛しました。
ここからは、具体的な実装内容が解説されました。
まずは、Lobbyインターフェースを用いたロビー機能についてです。
本作のマッチングでは、マッチを開始するプレイヤーは名前や参加条件を設定してロビーを作成。マッチに参加するプレイヤーは名前や条件を基にロビーを検索します。
EOSのLobbyは、作成するロビーに対して任意の属性を付与する機能を備えています。
属性は文字列・整数値・実数値・bool値のいずれかの値を持ち、検索の条件として使用できます。
検索結果は、任意の属性が持つ値をソートした順番に取得できます。
本作では、新しく作成されたロビーを優先的に表示するため、ロビーの作成時間を属性として付与し、作成時間でソートした順にロビーを取得しています。
ロビーの検索件数が多い場合は、一度に表示する件数を絞り、再度検索した際に続きを表示させています。
この機能は、表示されるロビーのうち、最も古い(最後に取得された)ロビーの作成時間を保存し、再検索時にその時間以降を検索対象とする条件をつけることで実現しています。
バージョンが異なるクライアントで作成されたロビーや、すでに最大人数で入れないロビーを非表示にする動作も、バージョンや入室状況を属性として付与することで実現しています。
属性は、参加人数などをユーザーに表示する以外に、内部処理に使うデータを変数として保存するためにも活用できます。
続いて、インゲームでの通信を担うP2Pインターフェースが解説されました。
インゲームでのP2P通信は、EOSが提供するUDP通信のAPI上に、サンドロットがこれまでに築いてきた通信処理をそのまま載せる形で実装できたそうです。
UDPとは、通信の信頼性や確実性よりも速度を重視するプロトコルです。確実性の高い送受信にはTCPと呼ばれるプロトコルを利用しますが、状況の変化が激しいアクションゲームでは十分な速度が出ないため、UDPを利用するのが一般的です。
しかし、不確実な通信のみではゲームが成り立たなくなってしまいます。そのため、UDPに信頼性を担保するための再送処理などを低負荷で追加するプロトコルReliableUDP(RUDP)が利用されることもあります。
EOSのP2Pインターフェースでは、UDPに加えてRUDPも利用できますが、本作では独自のRUDP実装がEOSのUDPで動作したため、その状態で運用しているそうです。
インゲームの通信においては、帯域が一定の基準値を上回らないよう、通信内容に優先度を設定しています。使用している帯域が上限に近づいた場合、優先度の低い通信はスキップされます。
高い優先度は、キャラクターの生成やステージの進行、プレイヤーの挙動などの情報に割り当てられています。一方で、更新が途切れ途切れでもゲームの大きな破綻にはつながらない、大量の雑魚キャラクターの位置などは優先度が低く設定されています。
優先度に基づく通信量制御により、ゲームの状況を同期する定期通信は、ピーク時でも320kbpsに抑えられています。
なお、ゲーム中は定期通信のほかに「攻撃をした」「大きなダメージを受けた」「重要な状態変化が起きた」などのイベントに応じたトリガー方式の通信も併せて実行されており、通信全体で1Mbps以下になるように調整されています。
通信量は、敵キャラクターのタイプによっても異なります。下記画像のシーンでは、飛行型の小型敵が大量に出ていますが、この敵は通信量が少ないため帯域のピークには到達せずに済んでいます。
本作では「敵AIに関する通信を、敵がターゲットしているプレイヤーが担当する」ことで、通信量をプレイヤー間で分散しています。
各プレイヤーが自身と戦っている敵のみに関与することで、集中すべき敵はスムーズに動き、対象の敵と関係が薄いその他のプレイヤーは通信帯域を節約できます。
とはいえ、1人のプレイヤーがヘイトを集めて大量の敵を相手すると帯域が集中しやすい点や、遠距離のプレイヤーから見た挙動の再現率が下がる点などのデメリットもあるとのことです。
苦労した点としては、Web上での情報が少なく、サンプルを正しく動かす手順や異常系への対処法がわかりづらい点が挙げられました。
EOSで使用されるサーバーは必要十分な機能を備えており、カスタマイズは不要だったそう。しかし、サーバーに発生した障害に対する能動的な通知がなく、またいつの間にか直っていることがほとんどだったため、トラブルの検出が難しかったそうです。
一方で、独自フレームワークにおいてもトラブルなく運用でき、各プラットフォーム間での運用にほとんど差がない点は大きなメリットであると堀内氏は結論づけました。
『地球防衛軍6』公式サイト「『地球防衛軍6』におけるEOS導入と実装事例」スライド資料EOS Deep Dive 2023ゲームエンジンプログラマ。シリコンスタジオ、ゲームフリークを経て、現在はフリーランス的に活動中。低レイヤ・描画などのランタイムから、ツール・アセットパイプラインまで、ゲームに関する技術はなんでも守備範囲です。RPG・音ゲー・格ゲー・紳士ゲー・お馬さんなどなど幅広く嗜みます。新作を待ちわびているのは『世界樹の迷宮』『ブレイズアンドブレイド』『バーチャロン』など。
西川善司が語る“ゲームの仕組み”の記事をまとめました。
Blenderを初めて使う人に向けたチュートリアル記事。モデル制作からUE5へのインポートまで幅広く解説。
アークライトの野澤 邦仁(のざわ くにひと)氏が、ボードゲームの企画から制作・出展方法まで解説。
ゲーム制作の定番ツールやイベント情報をまとめました。
東京ゲームショウ2024で展示された作品のプレイレポートやインタビューをまとめました。
CEDEC2024で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブル2024で行われた講演のアーカイブ動画・スライドをまとめました。
CEDEC2023で行われた講演レポートをまとめました。
東京ゲームショウ2023で展示された作品のプレイレポートやインタビューをまとめました。
UNREAL FEST 2023で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブルで行われた講演のアーカイブ動画・スライドをまとめました。
UNREAL FEST 2022で行われた講演レポートやインタビューをまとめました。
CEDEC2022で行われた講演レポートをまとめました。