イベント
[GDC 2024]ネットゲームに必要なあらゆる要素をまとめたUnity用サンプル「Megacity Metro」が公開に
Megacity Metroとは何か
Megacity Metroとは,2023年に行われたUnity開発者向けカンファレンス「UNITE 2023」で,リリースが予告されていたものだ。セッションを担当したUnityのHersh Bansal氏によると,Megacity Metroデモは,2018年当時のUnityが発表したゲーム風技術デモ「Megacity」の世界観をモチーフとして開発したものとのこと。ただ,Megacity Metroの開発にあたっては,3Dモデル素材はすべて新規に制作したそうだ。
グラフィックスシステムについては,Unityが互換性重視のグラフィックスパイプラインとして提供している「Universal Render Pipeline」(以下,URP)を,あえて選択しているという。Unityには,表現力重視のハイエンドグラフィックシステム「High Definition Render Pipeline」(以下,HDRP)もあるが,URPを選択したのは,Megacity Metroを「Windows PCだけでなく,MacやiOS端末,Android端末とのクロスプレイサンプルとして実現したかったから」と,Bansal氏は説明していた。
スマートフォンでの動作もターゲットとしている場合,たしかに軽量で互換性の高いURPを選ぶのもうなずける。
まずは,最近公開となったMegacity Metroの紹介動画を見てみよう。
リリースされたランタイムは,128人以上の同時プレイに対応しており,その実現にあたっては,Unityが提供する「Unity Cloud Services」や「DOTS」(Data-Oriented Technology Stack),「ECS for Unity」(Entity Component System)などの技術が活用されているとのことである
サーバー・クライアント型オンラインゲーム向けのネットコードを提供
Megacity Metroでは,ゲーム世界で起きていることのさまざまな同期処理を,DOTS上で構築したサブシステム「Netcode for Entities」で行っている。
マルチプレイヤーゲームでは,ひとつのゲーム世界に対して,複数のプレイヤーがアクセスしてさまざまな行動をとるわけだが,それぞれの行動は,ゲームに参加しているプレイヤーにとって,「理不尽ではない納得できるもの」である必要がある。
こうしたサーバー・クライアント型のオンラインゲームでは,各プレイヤーが同じサーバーに接続されているとしても,それぞれの行動がサーバーに送られてデータが更新されるタイミングは,まったくバラバラになる。たとえばMegacity Metroでは,プレイヤーがそれぞれの宇宙船(空飛ぶクルマ)を操縦しているわけだが,宇宙船の座標や向きのデータは,それぞれまちまちのタイミングでサーバーに送られるわけだ。
たとえば,プレイヤーAがプレイヤーBの宇宙船を狙って銃撃した場合,プレイヤーAの位置座標や向き,銃撃した時刻がサーバーに送られるタイミングと,プレイヤーBの最新の位置座標や向きがサーバーに送られるタイミングは異なる。これをサーバーが,何の工夫もなくそれぞれの情報が届いたタイミングで衝突判定(≒物理シミュレーション)を行ってしまうと,プレイヤーは遅延を感じたり,あるいはゲーム判定に理不尽さを感じることになりかねない。
プレイヤーAとBは,サーバー側で進行している絶対時間のゲーム世界でプレイしているつもりでも,同じ時間にそれぞれが見ているゲーム画面ですら,サーバー側からすれば遅延したゲーム世界の状態だからだ。
こうしたサーバー・クライアント型ネットワークゲームの高品位な同期進行システムは,各プレイヤー(クライアント)の高度な状態予測と,遅延補償の仕組みを実装しなければならない。だが,その設計と実装には,かなりの専門知識が必要になる。
今回,発表となったNetcode for Entitiesは,そうした難解な同期,遅延の問題をシステマティックに対策できて,しかも,その処理系をチューニングすることもできるというものだ。
ユーザー認証やマッチメイクのサブシステムも提供
ネットワークゲームと言えば,面倒なのがユーザーアカウント作成だ。
プレイに参加するゲーマーにとっても面倒な手間だし,オンラインゲームを開発する側にとっても同様だ。ハイペースでさまざまなオンラインゲームがリリースされている現在,ユーザーアカウント作成が面倒だと,プレイ前に離脱されてしまう可能性だってある。
というわけで,UnityはMegacity Metroにおいて,クロスプラットフォーム対応のユーザーアカウント作成サブシステムも提供している。GoogleアカウントやApple IDといったメジャーなアカウントシステムから連携認証させることで,手軽にオンラインゲームのアカウントを作るサブシステムが付属しているのはありがたい。
オンラインゲームの開発で,もうひとつ「面倒ごと」があるとすれば,マッチメイキングだ。要は対戦相手だったり,一緒に冒険するパートナーを,各プレイヤーに割り当てる(マッチングさせる)サービスだ。アカウントデータベースを参照して,同じ腕前のプレイヤーと引き合わせる仕組みを,ゼロから作ろうとすると骨が折れそうである。
というわけで,UnityはMegacity Metroで,マッチメイキングのサブシステムも提供している。もう1人の講演者であるErick Boulay氏によると,プレイヤー同士のネットワーク遅延状況や,ゲームのプレイ実績,ゲームコミュティにおける評判などを吟味して,マッチメイクができるように設計してあるとのことだ。
そのほかにも,Unityが運営するクラウドサービス上にゲームサーバーをホスティングさせるためのガイドラインや,プレイヤー同士が自由なコミュニケーションを楽しめるようにするためのロビーサービスなども提供する。
ゲームに参加しているプレイヤー同士のボイスチャットやテキストチャット機能,フレンド登録を始めとしたソーシャル機能,サーバー運営側の管理システムなども用意されている。
Megacity Metroは,「ネットワークゲームのサンプルプロジェクト」として提供されるわけだが,オンラインゲーム単体だけではなく,オンラインゲームを取り巻く周辺のサブシステムまでを手広く網羅したサンプルになっているのが興味深い。オンラインゲームを開発するに当たっての「面倒ごと」のひととおりを,サンプルの形で実装したうえで提供してくれるのは,オンラインゲーム開発経験がそれほど多くない開発者にとっては,ありがたいことだろう。
インディーゲームの開発においては圧倒的な採用率を誇るUnity。今後は,ユニークなUnityベースのサーバー・クライアント型オンラインゲームがいろいろと登場してくるかもしれない。
UnityのMegacity Metro登録ページ(英語)
Unity公式Webサイト
4Gamer「GDC 2024」掲載記事一覧
- 関連タイトル:
Unity
- この記事のURL: