2020年9月にStadia™へ、そして2021年5月にはNintendo Switch™、PlayStationⓇ4、PlayStationⓇ5、Xbox One、Xbox Series X/S、SteamⓇ各種プラットフォームへ配信されたゲーム『スーパーボンバーマン R オンライン』。最大64人の同時対戦を実現している。
開発にはUnityが活用された。特筆すべきは、同時プレイを支えるサーバーホスティングにMultiplay、マッチングサーバーはMatchmakerで構築した点だ。
Multiplayは、オンラインマルチプレイヤーゲームに必要なインフラを構築・管理できるサーバーホスティングプラットフォーム。Matchmakerは、Multiplayに含まれるコンポーネントで、プレイヤーのレベルや場所などに応じた最適なマッチングを設定できる。
「かねてから『ボンバーマンはもっと大人数で遊べたら絶対に楽しい』と思っていました」と語るのは、コナミデジタルエンタテインメントでアシスタントプロデューサーを務める松尾達則氏。その念願をどのように形にしたのか。松尾氏と、開発を手掛けたヘキサドライブのリードプログラマーである山本俊介氏に、MultiplayやMatchmakerを導入するきっかけや利点、今後の展望を伺った。
サーバー負荷の変動に耐えうる「高い柔軟性」が製品導入の決め手
——『スーパーボンバーマン R オンライン』を開発した経緯から教えてください。
松尾:2017年にリリースした前作『スーパーボンバーマン R』は、プレイヤーから好評を得ていた一方、最大8人でのオンラインマルチプレイの動作には課題も残りました。
特にプレイヤーの動きを同期する方法です。サーバーを構築してゲームオブジェクトの位置や状態を同期するのではなく、各プレイヤー間で通信して、キー入力を同期する方法を採っていました。
その結果、あるプレイヤーのキー入力が遅延すると、他のプレイヤーも同期を待たなければいけなくなり、動作がカクついてしまう。リリース後も可能な限りの改善を重ねましたが、やはり同期の仕組みがネックになり、対応しきれない部分もあったのです。
こういったオンラインマルチプレイをめぐる課題の解消は、eスポーツの盛り上がりを踏まえても、ボンバーマンをIPとして成長させるためにも不可欠。そう考え、課題を解決しつつ、オンラインに特化したタイトルを開発しようと構想を練りました。
——同時対戦を64人にまで増やすアイデアはどのように生まれたのですか?
松尾:『スーパーボンバーマン R オンライン』は、より多くの方に遊んでいただけるようFree-to-play(基本的なゲームプレイを無料で配信する方式)で配信しています。プレイヤーに遊び続けてもらうには従来のボンバーマン以上のインパクトが必要だと思っていて。そのための方法の一つとして、過去最大の人数でのプレイを検討しました。
実はハドソン時代から「ボンバーマンは大人数で遊べたら絶対に楽しい」と度々話していたのですが、サーバーの負荷など技術的な難しさから何度も頓挫してきたんです。
今回、実現する方法を話し合うなかで「一つのエリアに64人のプレイヤーを配置するのではなく、16個のエリアに4人ずつ配置し、行き来できるようにするのはどうか」というアイデアが挙がり、トライしてみることになりました。
——サーバーホスティングやマッチメイキングの仕組みを構築するにあたって、MultiplayとMatchmakerを導入した理由は?
山本:今作はプレイヤー同士で通信するP2P型ではなく、ゲームのパフォーマンスを考慮し、プレイヤーとサーバーが通信するサーバーホスト型で構築しようと考えていました。
ですが、ヘキサドライブには大規模なサーバー構築の経験や知見をもつ人が少なかったこともあり、自社で一から構築するよりも外部ソリューションの利用が最適だろうと判断しました。
複数のソリューションを試すなかで、Unityが決め手になったのは、サーバー負荷の変動に対する高い柔軟性です。MatchmakerはMultiplayと統合されており、マッチングを希望するプレイヤーの人数に応じて、Multiplayが自動的にサーバーの容量を調整してくれます。サーバーに接続する人数が急に増えた場合なども、サーバー台数不足によるマッチエラーを防いでくれます。
松尾:処理落ちで遊べなくなる状態は最も避けたいですから、サーバーホスティングの柔軟さには惹かれました。また、Matchmakerはプレイヤーの状態や通信環境、所在地に応じて、最も快適にプレイできるサーバーを自動的に割り当ててくれる点も大きな魅力です。
快適なプレイのためにサーバー数をデイリーで最適化
——実際にMatchmakerでマッチングの仕組みを構築して、苦労した点はありますか?
山本:前提として、今作には対戦相手がランダムに決定される『クイックマッチ』と、参加者がルームを作成・検索してバトルに参加する『ルームマッチ』があります。
64人同時プレイは前者の方法でマッチします。プレイヤー同士をレベルや通信状況などでマッチングするのはMatchmakerが得意とする機能であり、スムーズに実装できました。
一方、難しかったのが『ルームマッチ』の実装です。ランダムにプレイヤーをマッチングするのではなく、プレイヤーが作成したルームに、別のプレイヤーが参加してくるという仕組み。Matchmakerの一般的なユースケースとは異なる実装が必要でした。
具体的には、プレイヤーがルームを作成した段階で、マッチが成立した扱いにして一旦サーバーを割り当て、サーバーから「このルームに人が足りない」とプレイヤーを呼び出すよう設定しました。
当時のMatchmakerはβ版より前のα版、世界でも試験的に利用している企業が2社ほど。国内での導入は今作が最初だったと伺っています。参照できる情報も限られていましたので、Unity Japanのテクニカルサポートエンジニアの方とも協力しながら、一緒にベストプラクティスを探っていきました。
——Multiplayを使ってみての感想はいかがですか?
松尾:短いサイクルでサーバーを最適化し、プレイヤーの使い勝手を改善できたのはありがたかったです。Unity Japanのテクニカルサポートエンジニアの方が、サーバー数や負荷数をほぼ毎日報告し、インスタンスを増やすなどの改善を提案してくれました。リリースから数ヶ月は、ほぼ毎日サーバーの調整をかけていましたね。
その甲斐もあって、リリースしてから大規模な障害は一度も発生していません。
山本:特にリリース直後はゲームの負荷が常に変動し、かつ事前に見積もるのも難しいものです。自分たちで都度計測せずとも結果を確認できるのは大変助かりました。
世界200拠点のデータセンターを駆使し、レイテンシーを削減
——今作はNintendo SwitchやPlayStation、Xboxなど複数プラットフォームでのオンラインマルチプレイに対応しています。実装において苦労などはありましたか。
山本:異なるプラットフォーム同士で通信するには、共通の土台となるソケット部分だけを各プラットフォームのSDKを利用して実装し、サーバーと通信します。その仕組みを実装するにあたって、当時のUnityでは暗号化やプレイヤーの認証など、通信周りのパッケージがあまり充実していなかったんです。部分的に自分たちで開発しなければならず大変ではありました。
今はAuthenticationなどプレイヤー認証や暗号化に必要な機能も充実してきたと伺っているので、次の機会ではぜひ利用したいです。
松尾:あとは、プラットフォームごとに異なるスペックへの対応は難しかったですね。たとえば、描画速度にも大きな差があります。どこに基準を合わせるとレイテンシーを最小限に抑えられるのか、細かく調整をかけました。
——クロスプラットフォームかつ海外展開の今作において、レイテンシーを抑えるのは容易ではなかったかと思います。どのように削減していきましたか?
松尾:ボンバーマンは些細な遅延も当たり判定に影響するゲームです。「置かれたボムの表示が遅れて、知らない間に気絶していた!」といった事態が起きないよう、レイテンシーは30から70ミリ秒に収まるよう調整しました。
Multiplayでは世界200拠点以上のデータセンター(※)から利用するサーバーを選べます。どこから通信しているプレイヤーが多いかを随時チェックし、サーバーの場所を変更していました。
たとえば、当初は北南米のプレイヤーが利用するサーバーをカリフォルニアに置いていました。ですが、想像以上に南米からプレイしている方がいらっしゃったため、南米にもサーバーを置いた結果、遅延を抑えられました。
※2021年10月時点の拠点数
遅延のない世界が実現したとき、ゲーム体験はどう進化する?
——今回の開発を振り返って、MultiplayやMatchmakerについて満足した点や今後の期待を伺えますか。
山本:柔軟なサーバーホスティング、それによる動作の安定性には大変満足しています。またサーバーの構築や管理にかかるエンジニアの工数も抑えられ、開発を効率化できました。
今後の期待としては、オンラインマルチプレイヤーゲームの構築をワンストップで行えるようになると嬉しいです。すでにLobby(ゲームをホストするサーバーやクライアントをリストや検索するサービス)、Relay(プレイヤー同士のP2P通信をリレーすることで、NAT透過問題などを解決できるサービス)、Netcode for GameObject(ゲームオブジェクトを同期する仕組みを提供するパッケージ)などの機能が拡充しているので利用するのが楽しみです。
松尾:同じく動作の安定と、価格のリーズナブルさにも満足しています。特に今作では、基本的には定額制の物理サーバーを利用し、一定の負荷を超えたら従量課金のクラウドサーバーを増設するといったハイブリッドな仕組みを構築しています。おかげでサーバーにかかるコストを最適化できました。
また、今後はあらゆるゲームにとってグローバル展開がスタンダードになると思っていますので、世界各国にサーバーを自由に置けるのは大きなメリットです。もはや今後の期待というより究極の理想ですが、いつかは日本と欧米、あるいは他の地域との間でも、レイテンシーがほとんどない状態が実現できたら嬉しいですね。
——もし実現されたとして、ボンバーマンやその他のゲームの遊び方はどのように進化すると思いますか?
松尾:「ゲームをどこでプレイするか」の選択肢が大いに広がると思います。eスポーツの大会なども、今はレイテンシーの都合でLAN環境が構築された会場に選手全員を集める必要がありますが、場所ごとのレイテンシーの違いが解消されると誰でも自宅から参加できるようになり、間口が広がっていくでしょう。そうしたプレイ人口の広がりに適応するゲームをどう作るか、といった視点が一層求められるかもしれません。
ボンバーマンは言語を超えて楽しめるゲームであり、プレイ人口を増やしていける可能性は大いにあると思います。一見単純なゲームなようで、プレイすればするほど、上達を感じ、勝てるようになるのが面白いところ。間口が広がったときに、初心者が上達の階段を登りやすくなるにはどういう遊び方が必要かなど、今以上に模索していくのかなと思います。
——そうした未来に一歩でも近づけるよう、今後もUnityのオンラインマルチプレイにまつわる機能を充実させていけたらと思います。今日はありがとうございました!