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.3k
Unity MovieTexture (VR panorama) tips
izm
6
8.6k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1365
200k
Adopting Sorbet at Scale
ufuk
73
9k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Scaling GitHub
holman
458
140k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Happy Clients
brianwarren
97
6.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
The Art of Programming - Codeland 2020
erikaheidi
51
13k
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サンプルが実用的な速度で動く 今後に注目…