Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2018年現在におけるUnity向け リアルタイムネットワークエンジン 選定について 2018/12/10 Unity Network完全に理解した勉強会 @izm
Slide 2
Slide 2 text
自己紹介 @izm インターネット民主化オムライス SHOWROOM xR Labで働いています この発表は個人の見解であり所属する組織の意見を 代表するものではありません。
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
ご静聴ありがとうございました
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
本日のお品書き ・ゲームエンジンにおけるリアルタイムネットワークライブラリとは ・Unityにおけるリアルタイムネットワークライブラリの歴史 ・ユースケース毎の2018年現在の技術選定
Slide 7
Slide 7 text
注意事項 この発表はターンベースや非同期のネットワークゲームを想定しません。 この発表はマスターサーバを用意するゲームを想定しません。(ゲーム中の 1クライアントがHOSTとして振る舞 うゲームを想定します。つまり大規模な開発を想定しません)
Slide 8
Slide 8 text
そもそもゲーム向けのリアルタイムネットワークライブラリっ て何 →普通のネットワークライブラリ (TCPやUDP,Send, Recv,Connect,Disconnect)+ ゲームで使う機能を追加した もの
Slide 9
Slide 9 text
リアルタイムネットゲームで使う便利機能 (上にいくほど重要) ・Lobby(MatchMaking) ・RPC(Remote Procedure Call) ・SyncVar ・Network Transform ・Network Instanciate ・Network Destroy
Slide 10
Slide 10 text
Lobby Matchmaking ルームを立てて、メンバーを集める部分 …オンライン上でロビーサーバを提供してくれます。 Unityの場合、大体ネットワークライブラリに付属のサービスを使うか、自前でマッチングサーバを立てるかで す。
Slide 11
Slide 11 text
RPC ・一番大事 ・ぶっちゃけRPC以外の機能はRPCの糖衣構文と言っても過言では無い ・RPCを制すものは世界を制す(これは大げさですが) ・Unityネットワーク通信の基盤である「 RPC」について、意外と知られていないボトルネックと、その対策法 (モノ ビット 安田さん) https://www.slideshare.net/yhonjo/unityrpc
Slide 12
Slide 12 text
たとえば プレイヤーAさんが銃を発射した時 プレイヤーBさんの端末上のAさんも銃を発射してほしい →RPCの出番!! https://docs.unity3d.com/ja/current/Manual/UNetPlayers.html
Slide 13
Slide 13 text
SyncVar,NetworkTransform,NetworkInstanciat e,NetworkDestroy これらは全てRPCで書き下すことが出来ます。 なので「信用できないネットワークライブラリ」を使う時は、困ったら RPCに逃がしましょう。
Slide 14
Slide 14 text
Unityにおけるネットワークライブラリの歴史 1. NetworkView(Unity4以前から) 2. Photon Unity Networking(v1) 3. UNET(Unity5.1~) 4. Monobit Engine 5. Photon(v2) みたいな順番で登場してたはず …
Slide 15
Slide 15 text
PUN1.0を触る とりすーぷさんがこの後解説されるのでサラっといきます。 ・Resources以下にprefabを置く ・RPCの指定が関数名の「文字列」を渡す など、作りが古い。 リリースが古いからです…
Slide 16
Slide 16 text
UNET Unity5.1から実装された新しいネットワークライブラリ UDPベースのLLAPI+近代的なHLAPIを備えている。 リアルタイムネットゲームを作りやすくなりそうな雰囲気!
Slide 17
Slide 17 text
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おすすめ
Slide 18
Slide 18 text
UNET(闇) 展示会場でなんか30台くらいのスマホVRHMDに対して動画再生開始のキューだけ送りたいんだよね~ →無線LAN+UNETの合わせ技を食らい、数%の確率で再生されない端末が出てくる (自前で再送処理を書きがち)
Slide 19
Slide 19 text
UNETは何がいけなかったのか ・(比較的)良い設計 ・貧弱なドキュメント ・サンプルプロジェクトの無さ ・フィードバックが無視される ・バグが永遠に直らない
Slide 20
Slide 20 text
2018年現在における(おすすめ)技術選定 (izm独断) 困ったらPhoton Unity Networking v1を使いましょう。 ・Forumが機能している ・サンプルコードが提供されている ・Battle-Proofed ・作りが古いのは我慢しよう。動く保証があるのは神。
Slide 21
Slide 21 text
Photon Unity Networkingが適さないパターン ・中東,アフリカ向け(サーバが遠い) ・超多人数バトルロワイアル(助けて …) ・サーバ維持費を0円にしたい(そんな無茶な …) ・オフラインのLAN内で完結するシステムを作りたい(なのに Photon Server代は払いたくない???まじ で!?!?!?)
Slide 22
Slide 22 text
オフラインのLANだけで完結するシステム??? BtoB案件とか 展示コンテンツとか 教育向けとか 製造業向けとか 関わってる人いますか?(挙手)
Slide 23
Slide 23 text
LAN内 = PUN,MUN不可 PhotonさんやMonobitさんはビジネスモデル的にリレーサーバを提供して通信量に対して課金をさせるので、リ レーサーバを通らないLAN内をサポートしない。 正確にはPhotonServerやMonobit Serverライセンスがあるけど、大体の場合プロジェクト規模に対して予算 オーバー PUNで作ってて、土壇場でLAN内向けって言われた事があります。泣いた。
Slide 24
Slide 24 text
LAN内で使う=UNET????? 触りたくないよね…
Slide 25
Slide 25 text
今日はこれだけ覚えて帰って欲しい Mirror 旧UNET HLAPI Pro→HLAPI Community Edition の後継ネットワークライブラリ https://forum.unity.com/threads/mirror-networking-for-unity-aka-hlapi-community-edition.425437/
Slide 26
Slide 26 text
Mirror UNETに対して Bugfixと安定化とパフォーマンスチューニングと TCP を加えて マッチメイキングとリレーサーバとバグと信用ならない UDPベースのLLAPIを抜いたライブラリ using Mirror; //using UnityEngine.Networking; とネームスペース入れ替えだけで結構動く!!
Slide 27
Slide 27 text
Mirror激推し 数年間メンテされ続けたUnity向けMMORPGフレームワークアセットである uMMORPGの作者のライブラリです。 人類の中でトップクラスに UNETに苦しんできた作者を信じような!!! HLAPI Community Editionも継続してダウンロード可能 (2017.4向け)
Slide 28
Slide 28 text
Mirror LAN内利用 NetworkDiscoveryは?→自前で書けばOKです。 MirrorのNetworkManagerとUnetのNetworkDiscovery が合わさり最強に見える( ipaddressがffffを含まないのに注意)
Slide 29
Slide 29 text
本日のまとめ オフラインLAN環境で使 う? PUN1.0 Mirror
Slide 30
Slide 30 text
本日のまとめ リアルタイムネットワークゲームを Unityで作るならPhoton v1を最初に検討してみて下さい。 LAN内限定の場合はPhotonやMonobitが(Serverライセンス買わないと)使えないので、Mirrorという代替ライ ブラリがお勧めです。 PUBGみたいな多人数バトルロワイヤルは大変だと思う。
Slide 31
Slide 31 text
新しいUnity Networking System めちゃくちゃ凝ってる(UDPベースで自前で再送処理を持ってる ) 潜在的なパフォーマンスがかなり高い FPSサンプルが実用的な速度で動く 今後に注目…