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
Unity Networking Libraries Overview2018
Search
izm
December 11, 2018
4
5.3k
Unity Networking Libraries Overview2018
izm
December 11, 2018
Tweet
Share
More Decks by izm
See All by izm
Haritoraのような安価なIMUモーキャプの特性と考慮点について
izm
1
11k
Face recognition for Luppet, for xR Tech Nagoya #4
izm
3
7.4k
Unity MovieTexture (VR panorama) tips
izm
6
8.6k
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
How GitHub (no longer) Works
holman
311
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Making Projects Easy
brettharned
116
6k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Navigating Team Friction
lara
183
15k
Making the Leap to Tech Lead
cromwellryan
133
9k
Faster Mobile Websites
deanohume
305
30k
A designer walks into a library…
pauljervisheath
205
24k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Transcript
2018年現在におけるUnity向け リアルタイムネットワークエンジン 選定について 2018/12/10 Unity Network完全に理解した勉強会 @izm
自己紹介 @izm インターネット民主化オムライス SHOWROOM xR Labで働いています この発表は個人の見解であり所属する組織の意見を 代表するものではありません。
None
ご静聴ありがとうございました
None
本日のお品書き ・ゲームエンジンにおけるリアルタイムネットワークライブラリとは ・Unityにおけるリアルタイムネットワークライブラリの歴史 ・ユースケース毎の2018年現在の技術選定
注意事項 この発表はターンベースや非同期のネットワークゲームを想定しません。 この発表はマスターサーバを用意するゲームを想定しません。(ゲーム中の 1クライアントがHOSTとして振る舞 うゲームを想定します。つまり大規模な開発を想定しません)
そもそもゲーム向けのリアルタイムネットワークライブラリっ て何 →普通のネットワークライブラリ (TCPやUDP,Send, Recv,Connect,Disconnect)+ ゲームで使う機能を追加した もの
リアルタイムネットゲームで使う便利機能 (上にいくほど重要) ・Lobby(MatchMaking) ・RPC(Remote Procedure Call) ・SyncVar ・Network Transform ・Network
Instanciate ・Network Destroy
Lobby Matchmaking ルームを立てて、メンバーを集める部分 …オンライン上でロビーサーバを提供してくれます。 Unityの場合、大体ネットワークライブラリに付属のサービスを使うか、自前でマッチングサーバを立てるかで す。
RPC ・一番大事 ・ぶっちゃけRPC以外の機能はRPCの糖衣構文と言っても過言では無い ・RPCを制すものは世界を制す(これは大げさですが) ・Unityネットワーク通信の基盤である「 RPC」について、意外と知られていないボトルネックと、その対策法 (モノ ビット 安田さん) https://www.slideshare.net/yhonjo/unityrpc
たとえば プレイヤーAさんが銃を発射した時 プレイヤーBさんの端末上のAさんも銃を発射してほしい →RPCの出番!! https://docs.unity3d.com/ja/current/Manual/UNetPlayers.html
SyncVar,NetworkTransform,NetworkInstanciat e,NetworkDestroy これらは全てRPCで書き下すことが出来ます。 なので「信用できないネットワークライブラリ」を使う時は、困ったら RPCに逃がしましょう。
Unityにおけるネットワークライブラリの歴史 1. NetworkView(Unity4以前から) 2. Photon Unity Networking(v1) 3. UNET(Unity5.1~) 4.
Monobit Engine 5. Photon(v2) みたいな順番で登場してたはず …
PUN1.0を触る とりすーぷさんがこの後解説されるのでサラっといきます。 ・Resources以下にprefabを置く ・RPCの指定が関数名の「文字列」を渡す など、作りが古い。 リリースが古いからです…
UNET Unity5.1から実装された新しいネットワークライブラリ UDPベースのLLAPI+近代的なHLAPIを備えている。 リアルタイムネットゲームを作りやすくなりそうな雰囲気!
UNET(闇) ホストマイグレーション… NetworkMigrationManager(5.3系から実装)マッチメイクは対応してないので、LAN内対戦なら使える。マッチメイクするスマホとかで マイグレーション出来なくて死ぬ。 Reliable Sequencedにしても全然信頼できない 同期オブジェクトが300超えた位で謎のエラー吐く SyncVarやSyncListがSyncしない(ランダムにパケットロスする) NetworkAnimatorが同期失敗するので自前実装しがち NetworkTransformの初期実装がガタガタ
っていうかNetworkTransformが位置動かないと同期しないので回転させた時にPositionを0.0000001fくらい動かして人力SetDirty()みたいなことをするハメに なって泣く https://wobesdev.wordpress.com/2016/09/09/networking-on-unity5/ のNetworkTransformおすすめ
UNET(闇) 展示会場でなんか30台くらいのスマホVRHMDに対して動画再生開始のキューだけ送りたいんだよね~ →無線LAN+UNETの合わせ技を食らい、数%の確率で再生されない端末が出てくる (自前で再送処理を書きがち)
UNETは何がいけなかったのか ・(比較的)良い設計 ・貧弱なドキュメント ・サンプルプロジェクトの無さ ・フィードバックが無視される ・バグが永遠に直らない
2018年現在における(おすすめ)技術選定 (izm独断) 困ったらPhoton Unity Networking v1を使いましょう。 ・Forumが機能している ・サンプルコードが提供されている ・Battle-Proofed ・作りが古いのは我慢しよう。動く保証があるのは神。
Photon Unity Networkingが適さないパターン ・中東,アフリカ向け(サーバが遠い) ・超多人数バトルロワイアル(助けて …) ・サーバ維持費を0円にしたい(そんな無茶な …) ・オフラインのLAN内で完結するシステムを作りたい(なのに Photon
Server代は払いたくない???まじ で!?!?!?)
オフラインのLANだけで完結するシステム??? BtoB案件とか 展示コンテンツとか 教育向けとか 製造業向けとか 関わってる人いますか?(挙手)
LAN内 = PUN,MUN不可 PhotonさんやMonobitさんはビジネスモデル的にリレーサーバを提供して通信量に対して課金をさせるので、リ レーサーバを通らないLAN内をサポートしない。 正確にはPhotonServerやMonobit Serverライセンスがあるけど、大体の場合プロジェクト規模に対して予算 オーバー PUNで作ってて、土壇場でLAN内向けって言われた事があります。泣いた。
LAN内で使う=UNET????? 触りたくないよね…
今日はこれだけ覚えて帰って欲しい Mirror 旧UNET HLAPI Pro→HLAPI Community Edition の後継ネットワークライブラリ https://forum.unity.com/threads/mirror-networking-for-unity-aka-hlapi-community-edition.425437/
Mirror UNETに対して Bugfixと安定化とパフォーマンスチューニングと TCP を加えて マッチメイキングとリレーサーバとバグと信用ならない UDPベースのLLAPIを抜いたライブラリ using Mirror; //using
UnityEngine.Networking; とネームスペース入れ替えだけで結構動く!!
Mirror激推し 数年間メンテされ続けたUnity向けMMORPGフレームワークアセットである uMMORPGの作者のライブラリです。 人類の中でトップクラスに UNETに苦しんできた作者を信じような!!! HLAPI Community Editionも継続してダウンロード可能 (2017.4向け)
Mirror LAN内利用 NetworkDiscoveryは?→自前で書けばOKです。 MirrorのNetworkManagerとUnetのNetworkDiscovery が合わさり最強に見える( ipaddressがffffを含まないのに注意)
本日のまとめ オフラインLAN環境で使 う? PUN1.0 Mirror
本日のまとめ リアルタイムネットワークゲームを Unityで作るならPhoton v1を最初に検討してみて下さい。 LAN内限定の場合はPhotonやMonobitが(Serverライセンス買わないと)使えないので、Mirrorという代替ライ ブラリがお勧めです。 PUBGみたいな多人数バトルロワイヤルは大変だと思う。
新しいUnity Networking System めちゃくちゃ凝ってる(UDPベースで自前で再送処理を持ってる ) 潜在的なパフォーマンスがかなり高い FPSサンプルが実用的な速度で動く 今後に注目…