を
支える技術
株式会社インフィニットループ
    仮想室 山口直樹
株式会社インフィニットループとは
・ゲーム開発
・モバイルアプリ開発
・Webアプリ開発
・Linuxサーバ構築運用
サーバのことなら任せとけって会社です
そんなサーバな会社がなぜVR?
2年前のエイプリールフールのネタが軽くバズったからです
自己紹介(1)
 札幌のソフト会社で20年ほど
低レイヤーのネットワーク管理に従事
その後、インフィニットループに転職
山口 直樹
好きなSW  Summit48si
好きなLB  Alteon AD3
自己紹介(2)
 会社でVRのコンテンツをはじめて見て「こ
れ出来ればあんなことやこんなこともで
きるじゃん!!」と
思って覚え始めた2年前の12月
あいえるたんさわさわ Vive
あいえるたん
お姫様だっこ
せかいぬりえ
どんなことやってるのか?
どんなことやってるのか?
どんなことやってるのか?
どんなことやってるのか?
バーチャルキャストを使って 
毎週水曜日 ニコニコチャンネルで
絶賛配信中!
バーチャルキャストは、バーチャルキャラクターになって
VR空間のスタジオをリアルタイムでコミュニケーションできる
VRライブ・コミュニケーションサービスです。
ニコニコ生放送などの生配信サービスを介してスタジオを作ることで、
誰でも気軽に、好きなキャラクターでコミュニケーションできます。
他のバーチャルキャストユーザーの配信に乱入できる「凸機能」や、
生放送の視聴者を楽しませる様々な「アイテム」など、
バーチャルキャラクターの番組に欠かせない機能も盛りだくさんです。
とは?
とは?
リスナーとのリアルタイムコミニュケーション
相手の放送に突入(凸機能)
その他色々
バーチャルキャストを
支える技術
その1
ドワンゴさんが開発したアバターに特化した、プラットフォーム非依存のファイル形式。
(オープンソースとして公開中)
3Dモデルとしてのテクスチャやボーンといった情報に加えて、視線設定など一人称で操作するアバターに必要な情
報を扱えるようにし、環境により異なるスケールや座標系などを統一することで、アバターを作りやすく使いやすく、
お気に入りのアバターを配信でもゲームでもプラットフォームを跨いで使えるようにすることを目指します。
正規化(座標系統一)
正規化前
モデルによって座標系がバラバラで非常にめんどくさい
正規化(座標系統一)
VRM変換後(正規化後)
モデルの座標系が統一される
ファイルの動的ロード
インポータにバイト列を渡すと
humanoidのゲームオブジェクトが生
成されます。
「アバターの人格に関する許諾」
モデルデータに「人格」という概念が存在
人格を与える範囲が設定でき、モデルデータの使
用は可能だが、モデルデータに異なる人格を与え
るのは不可という、今の時代を反映した許諾設計
がされています
バーチャルキャストでは人格権を確認して
モデルの使用制限を行い、製作者の意図してる
使われ方になるようにめざしてます
VRM対応のソフト
hitogata
3tene
VRM対応のソフト
その2
Monobit Unity Networking 2.0(MUN)
VR Voice Chat with MUN
この2つのリアルタイム通信エンジンを使ってます
モノビットエンジン採用の理由
Linuxサーバを
使って自前で構築
できるから
(・・・他にもコストパフォーマンスが高いとか理由あります・・・)
株式会社インフィニットループとは
・ゲーム開発
・モバイルアプリ開発
・Webアプリ開発
・Linuxサーバ構築運用
サーバのことなら任せとけって会社です
株式会社インフィニットループとは
・ゲーム開発
・モバイルアプリ開発
・Webアプリ開発
・Linuxサーバ構築運用
サーバのことなら任せとけって会社です
サーバ、かなり頑張ってます!!
クライアントが
話題になってますが
だって本職だもん・・・・
システム概略図
AWSで構築してます
自前でMUNサーバの
負荷分散及び
オートスケーリングを
行っています
負荷分散およびスケーリング
MUNサーバ全体の負荷が閾
値が超えればインスタンスの
追加
MUNサーバ全体の負荷が
閾値より低い状態が続いた
ら、流入を停止して
クライアント接続がなくなれば
インスタンスを削除
自前だからできる色んな事
ユーザB
MUNサーバB
ROOM_B
ユーザC
MUNサーバC
ROOM_C
ユーザA
MUNサーバA
ROOM_A
APIサーバ
サーバA,ROOM_A,ユーザA
サーバB,ROOM_B,ユーザB
サーバC,ROOM_C,ユーザC
・
・
APIサーバにMUNサーバ
ルーム情報、ユーザ情報やアトリ
ビュート情報を持っており、裏で
はサーバ分割をしているが表か
らは1つの巨大なMUNサーバと
して見える
アトリビュートも自前で実装してい
るのでルームやユーザごとに特
別な設定が可能
サーバやルーム、
ユーザ情報を取得
条件にあったサーバを選択
他にも・・・
クライアントが例外をキャッチしたら
サーバにログを飛ばして絶えず修正を行っています
AWSでMUNを使ってわかったこと
Linux の拡張ネットワーキングは必ず使うこと
追加料金なしでかなり効果が高い!
ショートパケットが飛び交うので帯域(トラフィック幅)よりPPSが大事!
AWSでMUNを使ってわかったこと
M5 インスタンス 強い!
2018/4/10から東京リージョンでも使えるようになりました。
変更したらパケットが詰まる感じがなくなりユーザ満足度も向上しました
モノビットエンジン
は万能か?
モノビットエンジンの
ダメなところ その1
ナレッジが圧倒的に少ない
みんな使ってナレッジ増やそう!
モノビットエンジンの
ダメなところ その2
PS4に(現在)対応してない!
対応デバイスにPSVRを
増やしたい・・・
モノビットエンジンの
いいところ その1
サポートが早い!
日本語で質問投げて日本語で返ってくる安心感
なにより
サービス開始から今まで
サーバ系のトラブル無し!!
予想以上に堅牢なサーバプログラム
バーチャルキャスト
実はこんなことやってます
配信を意識した作り
あくまでも配信ツールなのでリスナーが
見ていることを意識してます
・コメントの落下位置
・UIの見せ方
・リスナーとユーザのコミニュケーション
  (レスポンス/ツイッター連携等)
・カメラの画角、配信映像を確認できる工夫
通信量削減
大量のコメントをすべて同期処理を
行うと破綻する
初回、出現位置等の同期を行い
その後は非同期
キャラクターに触れることで
同期処理を開始する
同期通信を行わなくても演出に問題なけ
れば同期通信を行わない
(揺れものの物理処理等)
その他、表情や指の動き等、ユーザが感じない部分での通
信量削減を行っています
モデルデータの扱い
モデルデータの扱いは細心の注意を
払っております。
(万が一流出したら大問題!!)
・内部でファイルキャッシュを行わない
・通信経路はすべてHTTPSによる経路暗号化
・万が一キャプチャリングされても
 サーバ-クライアント間で
 バイナリーデータの暗号化、復号化
荒らし対策
イメージ画像を自由に落とせるので卑猥画像等を落とす荒らしが出現
・荒らしの大半は捨て垢で荒らしを
行うので、捨て垢での投稿を抑制
・ログを取り、問題があれば特定を
行い通報ができるシーケンスを作成
みなさん、遊んでみてください!

VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報 - モノビットエンジン(株式会社インフィニットループ) - GTMF 2018 OSAKA / TOKYO