
【Pretia Tech Interview vol.1】 マルチプレイヤーがARゲームを創る
こんにちは!プレティアテクノロジーズです。
ARクラウドの研究開発をするプレティアの技術についてお伝えしていくPretia Tech Blog。
記念すべき第1回は、エンジニアのYanuarとJunにPretia SDKのマルチプレイヤーにフォーカスして話を聞きます。
Yanuar Aristya Edy Putra
リードUnityエンジニア。ネットワークに接続されたリアルタイム・インタラクティブ・アプリケーションの構築や、AR体験の開発・コンテンツ制作プロセスを強化するための様々なツールの開発に豊富なバックグラウンドを持つ。
Jun Han
シニアエンジニア。大規模で複雑なシステムの設計と構築を経験し、現在は革新的なAR体験を大規模にユーザーに提供することを目指している。
—
Hiro: こんにちは!
最初にマルチプレイヤーとはどういうものか詳しく教えてもらえますか?
Yanuar: 一般的には、プレイヤー同士が一緒に何かを体験できる機能として知られています。例えば、「フォートナイト」をプレイする時に、異なる場所にいる人と一緒に遊ぶことができます。こういった体験を実現するためには、マルチプレイヤーが欠かせません。
ARクラウド Pretia では、マルチプレイを開発者が簡単に構築できるようにマルチプレイヤーを搭載しています。ほかのサービスを組み合わせたり、細かく設定する必要はありません。
Hiro: ありがとうございます。次に、バックエンドから見た同期の仕組みについても詳しく教えてください。
Jun: バックエンドには、ロビーサーバー、マッチメーカー、ゲームサーバーの3つのサービスがあります。
ロビーサーバーは文字通りロビーとして機能し、さまざまなゲームのための部屋を提供します。
マッチメーカーは、各プレイヤーが部屋を探し、同じゲームをプレイしている他のプレイヤーに参加する手助けをします。
ゲームサーバーは、リレーサーバーとも呼ばれ、異なるクライアントからのメッセージを互いにブロードキャストします。このようにして、各クライアントの状態は互いに同期されます。
Hiro: ありがとうございます。
2022年8月現在、まだマルチプレイヤーはベータ版として提供していますよね?
Yanuar: はい。まだ我々の理想に対していくつかの機能が不足しているため、ベータ版として提供しています。
現在は開発者コンソールで、同じアプリケーションに何人のユーザーを参加させるかを設定するだけの簡単なマッチメイキングしかできません。
例えば、友人同士だけでゲームに参加することはできません。ただ、他の機能アップデートとあわせて近い将来対応する予定です。
Hiro: 次に将来の計画についてお聞きしたいです。マルチプレイヤーのロードマップでは何が予定されていますか?
Yanuar: まだ公開できないものも含めたくさんのことを予定しています。
直近はサーバーサイドのスケーラビリティを向上させる予定です。また、APIにも変更を加え、より簡単に扱えるようにし、パフォーマンスも向上させる予定です。
Jun: スケーラビリティはかなり重要な要素です。また、クラスターをより多くの地域に拡張し、世界中からアクセスした際のレイテンシーを改善することも計画しています。
Hiro: マルチプレイヤー計画から実装は文字通り0→1の開発になるため、さまざまな問題に直面したと思います。
どのような課題があり、どのように解決していったのかを教えてもらえますか?
Yanuar: まずは、マルチプレイヤーのことを語る上で必ず問題になる ”レイテンシー” です。良い共有体験のためには、レイテンシーを可能な限り低く抑える必要があります。
極端ですが、例えばAさんがパリに、Bさんが日本にいるとすると、地球の半分を横断していることになります。
スムーズな共有体験のためには、Aさんがアクションを起こした瞬間に、そのアクションがBさんの前でもシミュレートされるようにする必要があります。
AさんがBさんを攻撃する瞬間に、ネットワーク遅延が発生したとします。AさんはBさんを倒したと思っていますが、Bさんは遅延があったため実感していません。たとえそれがわずかな時間であったとしても、ゲームの勝敗を判断する上で大きな論点となります。
そこで、バッファリングによる補間処理などいくつかの手法が考えられます。バッファリングは当然レイテンシーが発生するのでバランスを取ることが重要です。これは大変な開発になりますが、より良い体験のためには必要なものです。
Jun: バックエンドの課題は、さまざまなタイプのゲームに適合するようにプロトコルを設計することです。また、バックエンドのリソースを管理し、容量とコストのバランスをとることも大変ですね。
Yanuar: 分かりやすい例としては、MMOのRPGとシンプルなシューティングゲームを比較した場合です。ネットワーク要件が全く異なるので、ソリューションも異なります。
Hiro: お話できない情報も含めかなり苦労してきたように感じます...!
マッチメイキングに話を戻します。マッチメイキングについて詳しく教えてもらえますか?
Jun: 今後、Pretiaでは3種類のマッチメイキングアルゴリズムを提供する予定です。
1つ目は非常にシンプルで、参加者が特定のルームがあることを知っていて、そこに参加するものです。
2つ目は、リローカライズベースのマッチメイキングで、遅延が最も少ないゲームサーバーを活用するものです。
3つ目は、ゲームを始めるためのプレイヤーをネットワーク上から見つけてくれるものです。
Yanuar: また、専用のオーソリティサーバーを用意することも検討しています。これが実装できれば、開発者はカスタムロジックをゲームサーバーに展開できるようになります。
Hiro: より多くのケースに対応して、開発者の負担を軽減することに重点を置いているんですね。
Yanuar: そうですね、優れた開発者体験を提供したいと考えています。特にマルチプレイヤーは力を入れている部分です。
Jun: 私も同じです。開発者が煩わしさから解放され、自分たちが夢中になっていることに集中できるようになればいいと思っています。
Hiro: ありがとうございました!
---
プレティアでは、採用を強化しています!少しでもご興味をお持ちいただけましたら、ぜひお話しましょう!
採用サイト
Meety