More Related Content Similar to 【CEDEC2018】800万ダウンロードを達成した共闘ことばRPG 『コトダマン』でのモノビットエンジン採用実例と最新情報 ①
Similar to 【CEDEC2018】800万ダウンロードを達成した共闘ことばRPG 『コトダマン』でのモノビットエンジン採用実例と最新情報 ① (20) More from モノビット エンジン (20) 【CEDEC2018】800万ダウンロードを達成した共闘ことばRPG 『コトダマン』でのモノビットエンジン採用実例と最新情報 ①11. ■ MRS(Monobit Revolution Server)の特徴
●低遅延・高効率でのリアルタイム通信制御
- 通信シーケンスや内部プロセス、利用者に提供するAPI等を刷新
- リアルタイム通信機能として、より速く、よりシンプルな設計を実現
従来リリースしていた「リアルタイム通信エンジン」をゼロから見直して作成
●TCP, UDP, WebSocket の通信プロトコルの利用
- ネットワーク高速化とサーバ側CPU負荷軽減を実現
- 1サーバインスタンスあたり20,000クライアント以上の同時接続を実現
TCP 接続は従来の「リアルタイム通信エンジン」を大幅に強化
UDP 接続プロトコルのサポート
- リアルタイム性の求められるデータの送受信に最適なUDP/RUDPを使用可能
WebSocket 接続プロトコルのサポート(ver.1.1.0 以降)
- PhantomJS(http://phantomjs.org/)を利用した自動テストが可能
高速処理によるインフラコストの大幅低減を実現
12. ■ MRS(Monobit Revolution Server)の特徴
●多種多様なプラットフォームに対応
●ゲームエンジン、開発言語を多数サポート
C/C++ JavaC# JavaScript
マルチプラットフォームも対応
PHP,Ruby
Windows/VisualStudioでサーバ開発が可能に!
13. ■ MRS(Monobit Revolution Server)の特徴
●堅牢な暗号化によりチート対策も万全
・ 送信レコード単位で、暗号処理の適用可否を設定可能
- 暗号処理はCPU負荷を掛けやすい
- 秘匿性が低い送信レコードには暗号処理させないなどの施策により
全体的なスループット向上が見込まれる
・ 暗号方式について
- 暗号鍵方式には AES128 を採用
- 暗号鍵の交換方式には EDCH(楕円曲線ディフィー・ヘルマン)
鍵共有アルゴリズムを採用
●拡張ライブラリによる機能の拡張が可能
ルームサーバの機能や、ゲームマッチング、チャットなどは
『MRS_ROOM』 や 『MUN』 などで実現可能
ルーム作成 マッチング チャット
MRS_ROOM MUN
転送レコードごとの暗号化
14. ■ MRS(Monobit Revolution Server)の特徴
- mackerel_agent をインストールするだけで問題なく監視可能
- システムメトリック : ロードアベレージ, CPU, メモリ, ディスクアクセス, ネットワーク帯域, ストレージ使用状況の監視
- カスタムメトリック : 各サーバプロセスごとのモニタリング, 同時利用者数(CCU)の監視など
●直感型サーバ監視ツール 『Mackerel』 に対応
MRS の対応内容
Mackerelとは
- サーバプロセスの監視状況をリアルタイムにグラフ化
- モニタリングはもちろん、ブラウザ対応UIやAPIが豊富
高機能な監視ツールにより運用をサポート
15. ■ MRS(Monobit Revolution Server)の特徴
●低遅延・高効率化のNiftyCloudでの実証実験
・ TCP による最高性能試験の結果、
毎秒約540,000レコードのECHO送受信を実現させることが可能
※ MRS_bench 計測結果(1秒間隔の計測ログ、暗号化なし)
loop:試行数
s:総送信バイト数
r:総受信バイト数(総受信レコード数)
c:接続数
d:切断数
e:エラー検知数
loop:1 s:0 r:0(0) c:0 d:0 e:0
loop:1302 s:940160 r:46678(32104) c:40 d:0 e:0
loop:2576 s:4679800 r:366276(143363) c:117 d:0 e:0
loop:3222 s:8596640 r:1443319(340764) c:193 d:0 e:0
loop:3627 s:12284680 r:3220253(495575) c:266 d:0 e:0
loop:3939 s:15922640 r:5375457(551009) c:300 d:0 e:0
loop:4240 s:19534640 r:7557718(543762) c:300 d:0 e:0
・ UDP による最高性能試験の結果、
毎秒約350,000レコードのECHO送受信を実現させることが可能
※ MRS_bench 計測結果(1秒間隔の計測ログ、暗号化なし)
loop:試行数
s:総送信バイト数
r:総受信バイト数(総受信レコード数)
c:接続数
d:切断数
e:エラー検知数
loop:1 s:0 r:0(0) c:0 d:0 e:0
loop:698 s:133020 r:132220(132220) c:20 d:0 e:400
loop:1624 s:770060 r:768440(346380) c:40 d:0 e:920
loop:2491 s:1463660 r:1461980(344720) c:40 d:0 e:920
loop:3373 s:2169260 r:2167640(353580) c:40 d:0 e:920
loop:4255 s:2874860 r:2873220(353560) c:40 d:0 e:920
- Server :
Nifty-Cloud e-large8(37/h) x1
Intel Xeon 4Core CPU(E5-2697) 2.60GHz / 8GB RAM
- Client :
VMware 上の 仮想 Linux PC
※ MRS ver.1.0.0 リリース版での検証
※ 計測ツールは弊社内製のベンチマークツール 『MRS_bench』 によるもの
16. ■ MRS(Monobit Revolution Server)の特徴
●同時接続数のAWSでの実証実験
SVプロセス数 CLプロセス数
送信間隔
(ms)
1コネクション辺りの
送信バイト数
SV・CPU使用率(%) CL・CPU使用率(%)
受信パケット数
(msg/sec)
送信パケット数
(msg/sec)
合計パケット数
(msg/sec)
1 2 1000 20 12% 17%,17% 2万 4万 6万
1 2 500 20 26.30% 23%,23% 5.2万 7万 12.2万
1 2 250 20 43.30% 34%,34% 8.1万 15.5万 23.6万
1 2 125 20 97% 61%,61% 29万 29万 58万
2 2 125 20 56%,45% 69%,69% 16万 30万 46万
2 4 125 20 57%,45% 42%,42%,42%,42% 16万 32万 48万
4 4 100 20 40%,40%,40%,40% 53%,53%,53%,53% 20万 40万 60万
4 4 50 20 70%,70%,70%,70% 93%,93%,93%,93% 40万 50万 90万
4 4 50 100 80%,80%,80%,80% 96%,96%,96%,96% 40万 50万 90万
- Server :
Amazon EC2 c5 xlarge (4vcpu, 8GBmem)
- Client :
VMware 上の 仮想 Linux PC
※ MRS ver.1.4.1 リリース版での検証
※ 計測ツールは弊社内製のベンチマークツール 『MRS_bench』 によるもの
1サーバインスタンスあたり2万同時接続以上を達成する圧倒的処理性能
!
17. ■ MRS(Monobit Revolution Server)の特徴
より詳細なベンチマークのデータは、
「リアルタイムゲームサーバーのベンチマークのとり方」
というスライドで紹介しています。
https://www.slideshare.net/yhonjo/ss-87611264
18. 対応
プラットフォ
ーム
■ MRS(Monobit Revolution Server)の展望
通信方式
実装方法
現行リリース 2018年8月 2018年9月 2018年10月 2018年冬以降
Linux
Windows
MacOSX
Android
iOS
Unity
Client/Server
通信方式
TCP/UDP/RUDP
プロトコル
WebSocket
CのAPIを利用
通信結果を
コールバック処理
他言語はバイン
ディングで対応
HTTP
サーバサンプル
Switch
UnrealEngine 4
P2P通信方式
コールバック
処理のRPC化
RPCスタブコードの
ジェネレータを
リリース
ゲームジャンルに
特化した実践的サンプル
20. ■ MUN(Monobit Unity Networking)とは
クライアントのみでも実装できる、Unity特化型の通信エンジン
マルチプレイを簡単に実装できるアセットです
Unity5.x、Unity2017.x Unity2018対応
※ver2.5.0にてUnity2018に正式対応!
21. ■ MUN(Monobit Unity Networking)の特徴
- サーバ接続/切断、オフラインモード
- ロビーやルームに対する入室/退室制御、ロビーとルームの状態取得
- プレイヤー情報の取得(サーバ内検索, プレイヤーパラメータの設定と取得)
- RPCによる、任意のクライアントに対する情報送信および受信
- シーン内オブジェクトの位置・姿勢・アニメーション等の同期
- 各種条件に応じた、マッチメイキング制御
- ノンプログラミング通信制御 etc...
※すべて単一のコンポーネントやAPIで実装可能
MUN で実装できる機能の一部
※各種家庭用ゲーム機はNDA締結により利用可能になります
●多彩な機能が多様なプラットフォームで利用可能
利用可能なプラットフォーム
22. ■ MUN(Monobit Unity Networking)の特徴
●すべての通信ロジックを、クライアント側オンリーで実装可能
MUN リリース当初からの設計思想を実現
- 『サーバサイドの構築なしでリアルタイム通信を実現したい』というご要望に対
応
- 通信ロジックも含め、オンラインゲームのすべての制御をクライアント側でコーディング可能
!
※MUNサーバはbroadcastでリレー配信する役割を果たします
- クライアントコードをそのままサーバに移植して、簡単にチート対策!
- MUN標準機能のサーバのソースコードを公開中。VisualStudioでカスタマイズ可能。
●必要に応じて、サーバにコードを書くことも可能!
MUN2.0より、MRSと連携してC++/C#言語でサーバ開発が可能になりました!
サーバとクライアントでコードを自在に配置可能
23. ■ MUN(Monobit Unity Networking)の特徴
- MUNサーバ側は、TCP/UDPの通信ポート双方で待ち受けしている
- 同一認証のMUNクライアントであれば、TCPの接続クライアントとUDPの接続クライアント
を
同一ルームに接続させることも可能
●TCP, UDPの通信プロトコルの利用
MRSに基づき、TCP/UDPの通信プロトコルをサポート
MUNにおける UDP/RUDP接続プロトコルについて
- MUNの内部処理で行われる送受信(ロビー/ルームの入退室など)の通信をUDPで行なう場合、
すべて RUDP で伝送される
- RPC(リモートプロシージャコール)、およびオブジェクト同期通信のみUDP/RUDP の個別設定が可
能
速度を重視するか信頼性を重視するか、
場面によって最適な通信プロトコルを選択可能
24. ■ MUN(Monobit Unity Networking)の特徴
- クライアントサイドの改ざんに伴う、チートの横行を防ぐ術がほとんどない
すべてのソースコードがクライアントに含まれるため
- ホストの優位性が圧倒的に高い
ノンプレイヤーの通信データについて、ホストは即時実行するが
他クライアントはホストからの通信を待たねばならないため
- ゲーム進行が、ホストの性能に依存する
●オンプレミス版MUNサーバを用いたサーバサイド実装にも対応
クライアント側オンリーでの実装における『問題点』
サーバサイド実装にすることの『メリット』
- サーバサイドに実装することにより、クライアント改ざんの隙を与えない
ほとんどの処理はサーバ依存にし、クライアントはビューアとして機能させる
- すべてのクライアントに対し、『平等なサービス』を提供できる
ホストも他のクライアントで実行タイミングを完全に一致させることができる
26. ■ MUN(Monobit Unity Networking)の展望
対応
プラットフォ
ーム
通信方式
クライアント
プログラム
現行リリース 2018年8月 2018年9月 2018年冬以降
Windows
MacOSX
Android
iOS
Client/Server
通信方式
TCP/UDP/RUDP
プロトコル
Webブラウザ
Switch
2018年10月
WebSocket
サーバプログ
ラム
Linux C++
Windows C++,C#
MacOSX
.NET Core C#
.Net Core 2.1対応
Unity C#
コア処理のリファクタリングにより、
高頻度送受信時の性能向上
(GC抑止等)
PS4
28. ■ VR VoiceChat with MUN とは
MUNをベースに動作する『ボイスチャットエンジン
』
コンポーネントを追加するだけで簡単に実装が可能!
無音検知、マルチキャスト配信、遅延音声カット機能を搭載!
■
32. ■ VR VoiceChat採用実績
■Trip Trap Travelers
プレイヤー4人まで同時プレイ可能となっており、各プレイヤーは数々の罠やモンスタ
ーの攻撃を避けつつゴールを見つけだし、クリアタイムを競うダンジョン脱出ゲーム
。
©MONOBIT Inc.
34. ■ VR VoiceChat with MUN の特徴
VoiceChat with MUN の機能を実装するには、
Unityのオブジェクトに 『MonobitVoice』のコンポーネントを追加します
●コンポーネントを追加するだけで簡単に実装が可能
上記コンポーネントを追加した状態で、MUNによる通信同期を行なう
シーンファイル上で動かすだけで、ボイスチャットが簡単に実現できます。
簡単な手順でボイスチャットを実装可能
35. ■ VR VoiceChat with MUN の特徴
- キーボードのタイピング音や、周囲の環境騒音の同時伝送を防ぎます
- 『一定量以下のdb値の音声を送信しないようにする』 という
シンプルなソフトウェアノイズキャンセリングを実装しています
- 無音検知機能によりデータ転送量を減らします
無音検知閾値を調整することで無音検知機能を無効化することも可能です
●無音検知機能(ノイズキャンセラ)を搭載
会話時の雑音などのノイズを除去し、クリーンな音声だけを送信
ハウリングを防止
- 特にスマートフォン端末など、スピーカー出力部とマイク入力部が近い位置にあるデバイスで有効です
36. ■ VR VoiceChat with MUN の特徴
- 例えば 『FPSのチーム戦』 などにおいて、
『戦闘前のブリーフィング中にはチーム関係なく全員と会話させたい』
『戦闘中は自分のチームだけで会話させ、相手に音声を伝えたくない』
という、条件付きのボイスチャット配信設定を行なう機能です
●マルチキャスト配信機能を搭載
ルーム内の特定プレイヤーに対して、自身の音声の送信可否を設定可能
マルチキャスト配信機能のメリット
- ゲームデザインに応じたボイスチャットの拡張性を高めます
- 『特定プレイヤーとの会話』 によって、音声ストリーム情報によるトラフィックの総量を抑えることができます
※マルチキャスト配信機能の設定にはAPIを使用する必要があります。
全員に声が届く
仲間にだけ
声が届く
聞こえない
37. ■ VR VoiceChat with MUN の特徴
- 『相手の音声が数ミリ秒~数秒遅れて再生』 されるような
再生遅延の状態が著しく悪い状態のときに 『再生待ちレコード』 を削除し、
よりリアルタイムな音声を受信側で再生させる機能です
●遅延音声のカット機能を搭載
受信側の再生遅延が著しい場合に、再生の早回しを行なう機能
『ぶつ切り感』 をほとんど感じない音声遅延カット
- 『音声のぶつ切り』 がイメージとして浮かぶかもしれませんが、音声として聞き取れる
僅かな時間をカットするだけなので、ぶつ切り感をほとんど感じることはありません
- 数ミリ秒単位で音声再生を補完することにより、送信側の音声をより瞬時に受信側で
再生できる 『リアルタイムさ』 を実感できます
- コンポーネントの設定から 『遅延音声のカット機能』 を無効にすることもできます
生の音声データを取り出して、ボイスチェンジャーも実装可能です
38. ■ VR VoiceChat with MUN の展望
- 38 -
ボイスチャット
専用サーバ
P2P対応
未定2018年秋 2018年冬
ノンサーバによる
ボイスチャットの実装
サーバミキシング機能の
実装
Plastation VR
対応
●MRSの今後の開発ロードマップとリリース予定
Editor's Notes 元々は株式会社モノビットというゲームやVRコンテンツの開発を行う会社でミドルウェア事業としてモノビットエンジンを開発販売していたのですが、
今回事業分割という形で、設立しました。 二万同時接続の際の例を下に記載させていただいているのですが、2万クライアントがそれぞれ秒間20回100バイトのパケットを送信したとしても、各サーバプロセスは80%程のCPU使用率に落ち着いています。送信頻度をもう少し落とす事でより大量の同時接続を捌ける事になります。 7月スケジュール抜く C++を熟知していなくても、わかりやすいように、シンプル化しました 7月スケジュール抜く