国産のリアルタイム通信エンジン
「モノビットエンジン」の最新情報と
マルチコミュニケーションを実現する
新製品「VR Voice Chat with MUN」のご紹介
ミドルウェア事業部部長 安田 京人
2016/10/21
ITProEXPO2016 IDCフロンティア様ブース内講演資料
2
目次
1,モノビット社&講演者紹介
2,モノビットエンジンとは
3, Monobit Unity Networkingのご紹介
4,「VR Voice chat with MUN」とは
5,モノビットエンジン2.0について
■目次
3
■モノビット社&講演者紹介
株式会社モノビットは、ゲームとネットワークのテクノロジーをベースに、
あらゆるエンターテインメントコンテンツ制作を行っている、
エンターテインメントテクノロジーベンチャーです。
講演者紹介
<安田 京人(Kyoto Yasuda)>
株式会社モノビットミドルウェア事業部部長
・IT系企業でSE兼PGとして2年勤務。
・6年間大手デベロッパーでコンシューマーゲームプログラマーと
してアクションゲームを中心に様々なジャンルのゲーム開発に携わ
る。
・オンラインゲームの知識を身に付けるため株式会社モノビットに
入社。現在はモノビットエンジンの開発指揮とエヴァンジェリスト
としても活動。
モノビット社紹介
■モノビットエンジンとは
モノビット社が提供するネットワークミドルウェア製品群です。
<モノビットエンジン製品ラインナップ>
1.Monobit Unity Networking
→ クライアントプログラムのみで簡単にマルチプレイが
実装出来る通信ミドルウェア。
Unity専用。
クライアント間通信専用。
2.リアルタイム通信エンジン
→ 本格的オンラインゲームを作成できる通信ミドルウェア。
Unity、Cocos2dx、UnrealEngine対応
サーバにコードも書ける
4
5
・モノビットエンジンが動作する本番サーバ群を無料で構築
・Webサイトで申し込むだけ
・24時間365日の有人サーバ死活監視付き。
(24時間365日、サーバエンジニアと電話、chatworkが繋がります)
・クラウドサービスとオンプレ環境に対応
3.モノビットエンジン・クラウドパッケージ
■モノビットエンジンとは
http://cloud.monobitengine.com/
■モノビットエンジンとは
6
■モノビットエンジンとは
7
8
今回は主力製品である、
MonobitUnityNetworking(略してMUN)をご紹介します。
MUNは、マルチプレイの実装に特化したUnity専用のAssetです。
<特徴>
1,純国産(日本製)の通信エンジン
2,主にクライアント同士の通信をリレーする商品
3,Linuxサーバで動作する(オンプレミス環境にも提供可能)
4,無料のテスト環境がついてくる
5,サーバにコードを記述することはできない
6,基盤が実績ある「モノビットリアルタイム通信エンジン」
■Monobit Unity Networkingのご紹介
9
・マッチングやルーム開設機能を搭載
→ランダムマッチング機能やカスタムマッチングが実現可能
※サーバを介して、
各クライアントを
マッチングできます。
※各種マッチングが
簡単に実装できます。
MUN
クライアント A
※サーバにめんどうなロジックを
記述する必要はありません。
ルーム
サーバ
ロビー
ルーム
開設
MUN
クライアント
C
参加
MUN
クライアント B
参加
MUN
クライアント
N
参加
■MUNの特徴
■Monobit Unity Networkingのご紹介
ルーム
ロビー
サーバ
※サーバにめんどうなロジックを
記述する必要はありません。
10
・クライアント間の情報共有機能を搭載
→マルチキャスト、ユニキャストが簡単実装。
※サーバを介して、
各クライアント同士で、
リアルタイムに情報の
共有が可能です。
※マルチキャスト、
ユニキャストなどが
簡単に実装できます。
MUN
クライアント A
MUN
クライアント B
MUN
クライアント
C
MUN
クライアント
N
データ
共有
■MUNの特徴
■Monobit Unity Networkingのご紹介
11
・RPC
RPCとは「モノビットリアルタイム通信エンジン」でも
実装されていた仕組みで、「Remote Procedure Call
(リモートプロシージャコール)」の略で、
簡単に説明すると、ネットワーク上にある、別の端末の
メソッドを呼び出す仕組みのことです。
「モノビットリアルタイム通信エンジン」では主に、
クライアントとサーバ間で用いられておりましたが、
MUNではクライアント間のやり取りで使用されます。
使い心地についてはUnity標準のRPCに近いです。
■MUNの特徴
■Monobit Unity Networkingのご紹介
12
・RPC
RPCを使用するにはいくつか条件があります。
RPCメッセージとして受信したい情報は、
引数として指定する。
現在のMUNでは、以下の種類の値を引数型として
指定することが出来ます。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
その1
■MUN_RPCで扱えるデータの型
■Monobit Unity Networkingのご紹介
13
・RPC
RPCを使用するにはいくつか条件があります。
RPCメッセージとして受信したい情報は、
引数として指定する。
現在のMUNでは、以下の種類の値を引数型として
指定することが出来ます。
・float(Single)
・double(Double)
・string(String)
・object(Object)
・Vector2, Vector3, Vector4 ・Quaternion
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
その2
■MUN_RPCで扱えるデータの型
■Monobit Unity Networkingのご紹介
・MUNの実例
Mecanim GDC2013 Sample Projectを、
MUNを使ってマルチプレイゲーム化してみました!
14
■MUNの特徴
■Monobit Unity Networkingのご紹介
・こちらが映像です
15
■Monobit Unity Networkingのご紹介
・MUNの実例
かかった時間は
1日程度。
公式サイトで手順を完全解説しています。
http://www.monobitengine.com/doc/mun/
こちらを参考にする事で既存ゲームの
オンラインゲーム化のイメージが掴めると思います。
16
■MUNの特徴
■Monobit Unity Networkingのご紹介
・ドキュメントも充実!!
※技術情報を公開中
http://www.monobitengine.com/doc/mun/
17
■MUNの特徴
■Monobit Unity Networkingのご紹介
・ドキュメントも充実!!
※APIリファレンスも同梱(Doxygen出力)
http://www.monobitengine.com/doc/doxygen/monobitunitynetworking/html/index.html
18
■MUNの特徴
■Monobit Unity Networkingのご紹介
19
KDDI社が東京ゲームショウ2016において発表いたしました複数人参加型のVR
デモコンテンツ「Linked-door loves Space Channel 5」に関わるコンテンツを制
作、本デモコンテンツでテーマとしている人と人とがVR空間内で繋がる「Linked-
door」において弊社の製品であるリアルタイム通信エンジン「モノビットエンジン」
を利用。VRボイスチャット通信をはじめ、マルチコミュニケーションをトータルで実
現しています。
Powered by ×
・「スペースチャンネル5 ウキウキビューイングショー」に関連する開発は、グランディング株式会社が行っています。
・「Space Channel 5」(スペースチャンネル5)は、株式会社セガホールディングスまたはその関連会社の登録商標または商標です。
・本資料に記載されている会社名、製品名、サービス名は各社の商標または登録商標です。
■Monobit Unity Networkingのご紹介
複数人参加型VRデモ「Linked-door loves Space Channel 5」
20
■ 『VR Voice Chat with MUN β版』とは
「VR Voice Chat with MUN β版」とは、VRコンテンツに「ボイスチャット機能」を
手軽に実装できるUnity専用の無料アセットです。
2016年8月にβ版がリリースされ、現在無料でダウンロード可能です。
ゲームだけではなく、様々な業種で制作されるVRコンテンツにも、
VRボイスチャットを簡単に搭載できます。
また、HTC Viveで動作するサンプルプログラムも付属し、制作の参考にすることも
可能です。
ダウンロード→http://www.monobitengine.com/vrvc/
21
■ 『VR Voice Chat with MUN β版』とは
ボイスチャットの実装についての技術的なお話
22
■ 『VR Voice Chat with MUN β版』とは
<まずはコーデックの選定>
ボイスチャットを実装するにあたり、
UnityAssetで提供されているボイスチャットに使えそうなアセットを
調査しました。
・他社製ボイスチャットエンジン
→Opusを使用
・DFVoice
→SpeeXを使用
次に上記二点のコーデックについて、
踏み込んだ調査を行いました。
23
<コーデックの大まかな特徴>
■Opus
Skype等に使われている非常に音質が良いと定評のあるコーデック。
・長所
→ビットレートの割に音質が良いので、
データ量を抑えつつ音質を保てるためストリーミングに適している
現在進行形で機能追加とデバッグが進んでおり、
安心してこれからも使用できる。
・短所
→全体的に処理が重く、CPUコストがかかる。
※一般的なVoIPコーデックの3倍のCPU負荷がある
■ 『VR Voice Chat with MUN β版』とは
24
<コーデックの大まかな特徴>
■SpeeX
Opusの前世代のフリーのコーデック。
公式サイトでは、Opusを使ったほうが良いとなっている。
・長所
→Unityにおいては.NET用のライブラリが配布されており、
実装はしやすい(ジッターライブラリも揃っており存外使えそう)
音質的にはOpus以下だが、そこまで悪くはない。
・短所
→前世代のコーデックなので、これからの追加機能やデバッグが期待できない
■ 『VR Voice Chat with MUN β版』とは
25
<結論>
「VR Voice Chat with MUN」では、
上記から、SpeeXの.NETライブラリは実装は楽そうですが、
現状ストリーミング向けにはOpusが一番良いと判断し、
Opusを用いて実装する事にしました。
■ 『VR Voice Chat with MUN β版』とは
26
<ボイスチャットの仕様について>
仕様作成にあたり、
ボイスチャットを使用するアプリケーション実装者は、
コーデック関連の知識を有していない、
またはそれに近い者と仮定し、
コーデックの設定に関しても意識しなくて良いような仕様にする事を心掛
けています。
仕様自体はほぼ決め打ち状態ではあるが、
様々な条件で事前にテストを行っており、
VR空間で円滑に行えるコミュニケーションを優先とし、
ベストバランスとなるような設定にしています。
■ 『VR Voice Chat with MUN β版』とは
27
<ボイスチャットの仕様について>
・参考データ
下記のデフォルトの仕様において、
ネットワーク帯域幅はMUNのデータも入って、
おおよそ100Kbps程になっています。
サンプリングレート:48KHz
圧縮ビットレート:16Kbps(変更可能)
量子化ビット数:16bit
チャンネル数:1 channel
フレーム長(録音データ長):40ms
■ 『VR Voice Chat with MUN β版』とは
28
<ボイスチャットの実際の実装について>
1.アプリケーション実装者が数クリックでボイスチャットを
実装可能に
MUNの使用が前提条件なので、
プレイヤーキャラクターなどにコンポーネントの追加のみで
ボイスチャットを実現できること
実際にボイスチャットを実装していただければ、
プレイヤーキャラクター
(MonobitViewコンポーネントが追加されている)に対し、
[Add Component]で[Monobit Voice]を追加するだけで
ボイスチャットの実装が完了する事が確認できます。
■ 『VR Voice Chat with MUN β版』とは
29
<ボイスチャットの実際の実装について>
2.MUNの高速化対応も実施
CPU占有率を抑えるため、
基盤となっているMUN自体にもチューニングを行い、
高速化を大幅に行っております。
ボイスチャットのリリース後のMUNは、
おおよそ50~100%以上の高速化がされております。
今回の高速化の肝は、
.NetのGCが極力動かないようなバッファコントロールを
こころがけた事になります。
■ 『VR Voice Chat with MUN β版』とは
30
<ボイスチャットの実際の実装について>
3.UnityとMUNに特化
UnityとMUNに特化しているため、
ルーム作成などの追加APIなどもなく、
ただコンポーネントを追加するだけでゲーム上に実装できます。
エンジン内部のロジックがシンプルになり高速な動作を
可能としています。
→つづきます
■ 『VR Voice Chat with MUN β版』とは
31
<ボイスチャットの実際の実装について>
3.UnityとMUNに特化
また、エンジンの高速化といった面においては、
使いたいUnity APIがメインスレッド以外で使えない状況だった為、
MonoBehaviour::Update()を極力占有しない
高速なエンジンを書く必要があったが、
シンプルで高速なバッファリングロジックを作成して、
Update()の占有時間を開発PCの環境においては
1~3ms程度に抑えた。
(占有時間は上記フレーム長や使用するPCのCPUによって変化します)
■ 『VR Voice Chat with MUN β版』とは
32
<まとめ>
・VR Voice Chat with MUNを使う利点
1.コーデックが不要
2.音質はそこそこ担保されている
→ご要望を頂ければチューニングも可能
3.MUNを使っていると、実装がめちゃくちゃ簡単
4.無料で今すぐ試せる
ぜひ御社のVRタイトルでも使ってみて下さい!
■ 『VR Voice Chat with MUN β版』とは
33
■ モノビットエンジン2.0について
CTO中嶋が新規設計した最新版リアルタイム通信エンジン!
「Monobit Realtime Server」サーバ側
「Monobit Realtime Multiplayer」クライアント側
(通称:モノビットエンジン2.0)
のご紹介です。
<特徴>
・あらゆる通信プロトコルに対応(TCP、UDP、RUDP)
・サーバもクライアントも多言語対応(C++、C#マルチ)
・全力で最適化!めちゃめちゃ速い!
→低レイテンシかつ、1サーバあたり5000接続以上捌けるように設計
・サーバにゲームコードを書かなくてもいい(MUN相当)し、
書きたかったら自由に書くことも出来る。
・サーバもマルチプラットフォームで開発可能!
→WindowsのVisualStudioで開発&デバッグして、
本番はLinuxサーバで動作も可能。
・amazon gameliftを利用して、クラウドサービスを全世界展開予定!
・ゲームロジックを実装したサーバでもオートスケール可能に!
・NATトラバーサルでP2P通信にも対応予定!
→全世界でレイテンシが最低になる中継サーバを自動選択!
■モノビットエンジン2.0の特徴
現状考えうる、最強のゲーム向け通信ミドルウェアにな
ります! 34
■ モノビットエンジン2.0について
35
直近のロードマップ
来年頭からβ版をリリース予定です。ご期待ください!
■ モノビットエンジン2.0について
36
ご静聴ありがとうございました!
・お気軽にお問合せください
contact@monobit.co.jp

ITProEXPOスライド20161014