Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
メタバースにおけるリアルタイム通信入門
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
gree_tech
PRO
October 25, 2022
Technology
2.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
メタバースにおけるリアルタイム通信入門
GREE Tech Conference 2022で発表された資料です。
https://techcon.gree.jp/2022/session/TrackC-2
gree_tech
PRO
October 25, 2022
More Decks by gree_tech
See All by gree_tech
我々はどう生きるか
gree_tech
PRO
1
200
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
5.1k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
78
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.8k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
490
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
480
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
2.5k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
600
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
630
Other Decks in Technology
See All in Technology
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
130
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
570
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
470
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
1.5k
JavaScript 研修 (2026)
recruitengineers
PRO
0
330
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
170
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
190
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.7k
モダンフロントエンド 開発研修
recruitengineers
PRO
1
390
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
200
サイバー捜査員研修(前半)
nomizone
1
1.8k
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
1
180
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
The Curious Case for Waylosing
cassininazir
1
450
Being A Developer After 40
akosma
91
590k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
560
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
330
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
260
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
480
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
350
Transcript
REALITY株式会社 エンジニアマネージャー 髙橋 悠 メタバースにおける リアルタイム通信入門 REALITY株式会社 ソフトウェアエンジニア 古屋 研太
• 所属 • REALITY株式会社 • 担当 • エンジニアマネージャー • 経歴
• 2006年 モバイルゲーム会社、新卒入社 • 2018年 グリー株式会社、中途入社 • 2018年 株式会社Wright Flyer Live Entertainment (現REALITY株式会社)出向 自己紹介 2 髙橋 悠(たかはし ゆたか)
• 所属 • REALITY株式会社 • 担当 • ソフトウェアエンジニア • 経歴
• ゲーム会社に新卒入社 VRチームに所属 • フリーランス (VRアプリやVtuber向けシステム開発など) • 2022年5月にREALITYに入社 自己紹介 3 古屋 研太(ふるや けんた)
XR cloud 事業部について https://reality.inc/products/realityxrcloud/ 4 • REALITY XR cloudとは •
あらゆる仮想空間内で行われる バーチャルイベントを実現するためのクラウドソリューションです 有識者によるコンサルティング、累計1,000万DLのプラットフォーム活用、複雑にカスタ マイズが可能な開発エンジン利用、各社とのパートナーシップ等を活かして、法人様向け のメタバースを実現可能にします REALITY World REALITY Spaces
昨年公開したメタバースのトレーラー動画 https://youtu.be/ktMNqFuW6uQ 5
最初に採用したソリューション 6 • Photon(PUN2) ◦ https://www.photonengine.com/ja-JP/PUN ◦ ドイツのExit Games GmbHが開発・運営している世界中で利用されて
いるネットワークエンジン • 採用理由 ◦ メジャーなマルチプレイヤーエンジンで採用実績も開発情報も豊富にある
最初に採用したソリューション 7 • Vivox ◦ https://unity.com/ja/products/vivox ◦ Unityから提供されているチャットSDK ▪ テキストチャット、ボイスチャットが行える
• 採用理由 ◦ 数多くの大型タイトルで採用されている ◦ 2019年にUnityが買収し、公式が提供するソリューションとなった
Photon(PUN2)で直面した課題 8 • メッセージ数の制約 ◦ 1秒当たり500メッセージまでが推奨されており、やり取りできる情報量が 比較的少ない ◦ ただし、補間をすることはできるのである程度カバーできる •
世代交代 ◦ 2022年3月にPhoton Fusionという新しいソリューションがリリースされ、 PUN2自身はメンテナンスモード(新機能が追加されない)となった Photon Fusionへの切り替えが推奨されている 同時接続数を増やすことが難しい
Vivox で直面した課題 9 • ネットワーク環境 ◦ オフィスなどの堅実なネットワーク環境では使用できないケースがある ◦ バーチャルオフィスを開発する際、個人宅で問題なく動作するがオフィスや VPNに接続した状態では動かなくなるということがあった
◦ ※Photonでも同様の現象は発生するが、使用するプロトコルやポートを 変更することが出来たので比較的容易に対応することが出来る
10 何とかしたい!
11 • 同時接続数 ◦ もっと沢山の人がルームに入れるようにしたい ◦ でもボイスチャットも必要 • VPN等の特殊な接続環境の問題 ◦
Vivoxは別サーバーで設定できることが少ない 最初に採用したソリューションの課題
12 Tickレートを15, 100人同時接続, 座標と回転を※20byte程度として試算 受信 座標 : 15 x 100人
= 0.24Mbps 送信 座標 : 15 x 100人 x 99人 = 24Mbps サーバー側でパケットを理想的に結合したら送信は1/50のパケットにできるが… 移動だけでこれだけ使ってしまっては他になにもできないのでは? 大規模の接続時のデータ試算 アバター座標の同期 100人 24 M bps 200人 (x2) 96 M bps 400人 (x4) 384 M bps ※座標をfloat x 3, 回転を6bitにQuaternionを圧縮
13 従量課金のAWSやGCPの場合 平均100Mbps を24時間 動かす => 約1TB AWSであれば 1日1.5万以上…? 200人程度を捌くコストとして高すぎる…? 転送量制限のあるVPSの場合
低コストでルームサーバーを動かすのであれば検討したい 多くのVPSでは 月の転送量上限が数TB の料金プランが多い 数日動いたら転送量上限に引っかかってしまう… 大規模の接続時のデータ試算 転送量制限や従量課金への影響 単純なデータ送信の仕組みではコスト的にも厳しい
14 PUN2 での限界 • 座標の同期ですらTickレート15でも6人程度で5x6x15=450になってしまう Broadcast処理では結合してくれるかもしれないがそれでも少なすぎる • 更新頻度を落とせば人数を増やせるものの、アクション要素をワールドに入れたくても できなかったり、VRだと低いTickレートでは体験の質がかなり落ちる 秒間パケット数上限
(1ルームあたり約500packet/秒を推奨 ) サーバー側の制御を実装できない • 前述の見積から考えても、サーバー側で送るデータを工夫する必要がある • サーバー側でアバター間の距離に応じてデータを節約するような処理を実装したいが、単純な リレーサーバーやP2P接続では困難 • チート対策とかもやりにくい
15 PUN2 での限界 • ホストに様々な処理が集中してしまう 物理演算、 整合性を取らないといけない判定処理 etc… ホストへの負荷の集中 •
上記のようにホストが正として管理しないといけない実装がある場合、切断時の引継ぎなどは工夫 しないといけない • たとえ引継ぎができたとしても、全員が退出してしまうとルーム内の情報を保持することができない ホストの切断時の対応 / ルーム情報の保持の難しさ
16 単純なリレーサーバーでは限界 独自実装のサーバーが必要そうだがハードルが… • サーバー側の実装が難しそう • 送信データを減らす仕組みが難しそう
17 手軽に使えるネットワークライブラリ FishNet そこで
18 FishNetのメリット • [ServerRpc]などの属性をつけるだけでリモートのメソッドを実行できる • Mono.cecilでC#の中間言語を操作するのでGCやboxingを避けつつパケットを作成できる • uNETと比べて設定できる引数が豊富 コード生成で簡単かつ高速なリモートプロシージャルコールができる •
Linux向けにHeadlessビルドをすればGCPやAWS上でも動かすことができる • C#でサーバー側の実装をそのまま記述したり、sceneのオブジェクト情報をそのまま持てるので物 理演算や当たり判定をサーバー側で簡単に処理できる HeadlessサーバービルドでUnity C#でサーバー実装できる
19 FishNetのメリット • 通信をUDPだけではなくWebsocketなど他のプロトコルに差し替えることができる Transport レイヤーを自由に変更できる • オブジェクトの変数を自動で同期する仕組み • 値の変更時だけでなく、途中接続のクライアントにも自動で同期してくれる
再接続 / 途中接続時の同期が比較的容易 • オブジェクトの距離やsceneを元に送信するデータを制限できる AOI(関心領域システムがある) 詳しくは後述
20 おまけ 手軽なサーバーホスティングサービス • 無料で30分だけ動かせるサーバーをお試しで使える • StoreでダウンロードしEditorWindowからビルドして サーバーにHeadlessビルドをデプロイ可能 • VPSをレンタルするのとそこまで変わらない月額費用で 30分制限なしにサーバーを1台利用できる
GCPやAWSはちょっと分からない人でも サーバークライアント型の通信ゲームを作成できる! PlayFlowCloud https://playflowcloud.com/
21 新しい手法で解決できたこと • AOI機能で離れているプレイヤーやオブジェクトの データ量を大幅に削減できる • 近くの人のアバターは問題なく同期するので コミュニケーションに支障がない 大規模接続時の通信量削減 ワールド全体
パケットを受け 取る範囲 • 設定はNetworkObjectに対して NetworkObserverコンポーネントを設定するのみ (DistanceConditionクラスを参考にカスタマイズするのがお勧め ) [注意点] • 範囲外にいる際にはRPCが呼ばれないので、範囲内に入ったときに状態 を同期できるようにSyncVarなどを活用すること
22 新しい手法で解決できたこと • 音声はDissonance Voice Chatを使用 • FishNet対応するサンプルもあるので対応可能 (一部不具合があるので修正依頼中) •
独自の修正を加えて一定距離離れたクライアントには送信しないことでパケットを節約 • サーバー側で音声の合成はしていない (コミュニケーション目的とする場合、近くの人が同時に喋る というシチュエーションがあまりないためあまり恩恵がない) • FishNetの通信経路をそのまま使用するので、セキュリティの 設定を行いやすい ボイスチャットも可能な大規模接続可能なワールド
23 新しい手法で解決できたこと 全員が切断してもデータを残すことができる仮想空間 • サーバーが情報を保持しているので、適切に実装すれば 全員が退出した後でも空間の情報を同期することができる。 例) 家具の配置, 作成したアイテム etc…
FishNetが ◦ スポーンしたNetworkObject ◦ SyncVar属性をつけた変数 ◦ BufferLast=trueにしたRPCメソッド を接続時に自動で同期してくれるので、容易にワールドの情報を復元することができる
24 デモ • Tickレート 30 • 80クライアント接続 アバター+両手の座標を同期 • 16クライアントが常時発話
25 FishNetのデメリット よくも悪くもサーバーの準備が必要 • メリットがそこまでないならサーバーの準備や管理が必要ないPUN2とかの方が圧倒的に楽 ソースコードの変更があればサーバービルドをデプロイしなおす必要がある • コード生成でRPCを実現しているので、クライアントのRPCで使うメソッドの引数などに変更した場合 はサーバー側のビルドしなおさないと正常に動かない •
そこまでサーバー側の処理が必要ではないクライアント同士の通信部分の変更でもサーバービル ドの作り直しが必要になる • sceneに配置したNetworkObjectがサーバーとクライアントで違うとエラーになる Addressableなどでsceneを更新できるようにするなどの工夫が必要
26 それぞれの通信方式のまとめ リレーサーバー (PUN2 etc…) • 開発段階は無料で手軽に始められる • 基本的にはサーバー実装できない (通信量の削減の工夫に限界がある)
低TickRateで 多くて10~20人 Headless ビルドサーバー (FishNet etc…) • サーバー実装を工夫して より大人数の接続に耐えることができる • 物理演算や当たり判定をサーバーで行える • サーバーの運用が難しい 大規模なワールド向け (ワールド毎に様々な 仕組みを作るのは大変)
27 今後の展望 • 送る/送らないの2段階のAOIではなく、距離に応じて 高TickRate / 低TickRate / 送らない の3段階の送信制御を実装する
• サーバービルドを頻繁にしなくてもいいワークフローの構築 ◦ ワールドの背景はAddressableなどで後で変更可能にする ◦ 簡単な制御はC#コードを書かないで実装可能にする
28