今年3月に発売されたFINAL FANTASY XV WINDOWS EDITIONでは、マルチプレイ実装にPhoton Serverを採用しています。コンソールのバージョンとも親和性が高く、なんと約1週間で動作するところまで到達しました!
本セッションでは、FF15内でのパケット送信のカスタマイズやマルチプレイ特有の実装、バックエンドサーバーの構成などのご紹介に加え、Photonのイントロダクションと最新情報も合わせてご案内いたします。内容の濃い45分間、ご期待ください!
今年3月に発売されたFINAL FANTASY XV WINDOWS EDITIONでは、マルチプレイ実装にPhoton Serverを採用しています。コンソールのバージョンとも親和性が高く、なんと約1週間で動作するところまで到達しました!
本セッションでは、FF15内でのパケット送信のカスタマイズやマルチプレイ特有の実装、バックエンドサーバーの構成などのご紹介に加え、Photonのイントロダクションと最新情報も合わせてご案内いたします。内容の濃い45分間、ご期待ください!
Microsoft Azure 上で稼働している、新製品モノビットエンジンンクラウドはマルチプレイを利用したアプリ、コンテンツ開発だけでなく、xR デバイスでも簡単に扱う事が可能です。
本セッションではマルチデバイスにおける xR コンテンツの実際の事例などを交え、HoloLens にも対応したモノビットエンジンの最新情報もお届けいたします。
Microsoft Azure の VM のおよそ半分が Linux で動いています。
今回は、ゲーム開発の中で取り上げられることの多い Linux で開発されたゲームのケースを交えながら、Microsoft Azure の便利な機能をご紹介していきます。
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matchingharmonylab
公開URL:https://arxiv.org/pdf/2404.19174
出典:Guilherme Potje, Felipe Cadar, Andre Araujo, Renato Martins, Erickson R. ascimento: XFeat: Accelerated Features for Lightweight Image Matching, Proceedings of the 2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) (2023)
概要:リソース効率に優れた特徴点マッチングのための軽量なアーキテクチャ「XFeat(Accelerated Features)」を提案します。手法は、局所的な特徴点の検出、抽出、マッチングのための畳み込みニューラルネットワークの基本的な設計を再検討します。特に、リソースが限られたデバイス向けに迅速かつ堅牢なアルゴリズムが必要とされるため、解像度を可能な限り高く保ちながら、ネットワークのチャネル数を制限します。さらに、スパース下でのマッチングを選択できる設計となっており、ナビゲーションやARなどのアプリケーションに適しています。XFeatは、高速かつ同等以上の精度を実現し、一般的なラップトップのCPU上でリアルタイムで動作します。
22. ■ VR VoiceChat with MUN とは
MUNをベースに動作する『ボイスチャットエンジン』
コンポーネントを追加するだけで簡単に実装が可能!
無音検知、マルチキャスト配信、遅延音声カット機能を搭載!
- 21 -
23. ■ VR VoiceChat with MUN の特徴
VoiceChat with MUN の機能を実装するには、Unityのオブジェクトに
『MonobitVoice』のコンポーネントを追加します
●コンポーネントを追加するだけで簡単に実装が可能
- 22 -
上記コンポーネントを追加した状態で、MUNによる通信同期を行なう
シーンファイル上で動かすだけで、ボイスチャットが簡単に実現できます
簡単な手順でボイスチャットを実装可能
39. 38
■ MUNによる10万人大規模サービスの構成
MUNサーバで「同時接続者数10万」を実現するには
・MUNは原則として、以下の用途におけるネットワークゲームに適しています。
a) オンライン対戦型のターン制カードゲーム、パズルゲームなど
b) MO(中小規模の、参加人数限定型マルチプレイヤーオンラインゲーム)
c) MOBA(参加人数限定型の戦略対戦型オンラインゲーム)
・1つの MUN サーバセットあたりで、同時接続、およびルーム内各種メッセージを捌けるのは
おおよそ3万人程度です(弊社調べ:1ルームあたり、秒間平均200メッセージの送受信を想定)。
・10万人規模の同時接続者数を捌くためには、MUNサーバの横展開(スケール)が必要になりますが、MUN の
サーバセットは密結合のサーバプロセスで構成されているため、スケールする場合、このサーバセットを1組として
複数のサーバセットを並列配置することになります。
・サーバセットをスケールすることにより、実質的に無限数のMUN クライアントに対し、同時接続処理を捌けます。
・次ページで、具体的なサーバ構成例を示します。
MUN
Room
MUN
Proxy
mun_proxy ・・・mun_resolver
MUN
Master
mun_master
MUN
Resolver
mun_proxy mun_room ・・・mun_room
「MUN サーバセット」のこの1組を単位として、
複数サーバセットを並列配置する
40. 39
■ MUNによる10万人大規模サービスの構成
複数の MUN サーバセットによる 10万人同時接続の実現(概略)
・複数の MUN サーバセットによる、 10万人同時接続を実現するためのサーバ構成例として、以下に示します。
・1つの MUN サーバセットに対して同時に捌くことのできるクライアント数は3万クライアントまでですが、若干
余裕を持たせて、サーバセットを5セット程度用意します。
・どの MUN サーバセットに接続するかを管理し、クライアントを誘引するための、Webサーバを複数台用意します。
Global Section
MUN Server
Machine
MUN Server
Process
Internet
MUN
Client
MUN
Client
・・・
MUN Client
Machine
MUN Client
Process
Web Server
mrs_pusherdatabase
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Resolver
mun_resolver
MUN
Master
mun_master
MUN
Proxy
・・・
mun_proxy mun_room
MUN
Room
・・・
・・・
mun_proxy mun_room ・・・
MUN
Resolver
mun_resolver
MUN
Master
mun_master
MUN
Proxy
・・・
mun_proxy mun_room
mun_proxy mun_room ・・・
MUN
Room
Private Section
MUN Server Set 1 MUN Server Set 2
・・・
41. 40
■ MUNによる10万人大規模サービスの構成
複数の MUN サーバセットによる 10万人同時接続の実現(詳細)
・Webサーバでは、複数の MUN サーバセット内に含まれる mun_resolver のクライアント接続アドレス情報を
事前にデータベース情報として、複数台で同一の内容を保持します。
かつ、MUNクライアントは mun_resolver に接続する前にこの Web サーバに接続し、MUN サーバセットのうち
「最も既存クライアントの接続数の少ない」 mun_resolver のアドレス情報を mrs_pusher で返します。
※ MUN では MRS が内包されていますので、MRSでの情報のやり取りも可能です。
・MUN サーバセットでは、MO/MOBAをはじめとする、中小規模の人数が参加するゲームルームを設置し、そこで
ルーム内プレイヤー同士で、RPCによるデータの送受信、キャラクタなどのオブジェクト位置情報の同期などを
行います。
MUN Resolver に接続するためのアドレス情報を退避したデータベースを持つWebサーバ。
MUNクライアントとのやり取りのためにmrs_pusherを利用し、かつ最もクライアント接続数が
少ない、MUNサーバセットへの誘導を行なう
Web Server
mrs_pusherdatabase
MUN サーバセット自体は通常の MUN サーバとして運用する
サーバのスケールアウトは、原則このサーバセットを1単位として、全体をスケールする形をとる
接続するクライアントは、適宜必要に応じたルームに入室させ、
その中に所属するプレイヤー同士で、メッセージのやり取り、キャラクタの位置情報の同期、
各種パラメータの共有などを行なう。
比較的セキュリティ性を求められない通信対戦/MOであればクライアントベースで開発し、
セキュリティ性の高い通信対戦/MOや、複雑なロジックを必要とするMOBAなどであれば
サーバサイドでのプログラムを実装し、なるべく保守性・安定性に優れたシステムを構築する