Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity Networking Libraries Overview2018

2dea59f12b07aa47a8604dc21ba27036?s=47 izm
December 11, 2018
4.2k

Unity Networking Libraries Overview2018

2dea59f12b07aa47a8604dc21ba27036?s=128

izm

December 11, 2018
Tweet

Transcript

  1. 2018年現在におけるUnity向け リアルタイムネットワークエンジン 選定について 2018/12/10 Unity Network完全に理解した勉強会 @izm

  2. 自己紹介 @izm インターネット民主化オムライス SHOWROOM xR Labで働いています この発表は個人の見解であり所属する組織の意見を 代表するものではありません。

  3. None
  4. ご静聴ありがとうございました

  5. None
  6. 本日のお品書き ・ゲームエンジンにおけるリアルタイムネットワークライブラリとは ・Unityにおけるリアルタイムネットワークライブラリの歴史 ・ユースケース毎の2018年現在の技術選定

  7. 注意事項 この発表はターンベースや非同期のネットワークゲームを想定しません。 この発表はマスターサーバを用意するゲームを想定しません。(ゲーム中の 1クライアントがHOSTとして振る舞 うゲームを想定します。つまり大規模な開発を想定しません)

  8. そもそもゲーム向けのリアルタイムネットワークライブラリっ て何 →普通のネットワークライブラリ (TCPやUDP,Send, Recv,Connect,Disconnect)+ ゲームで使う機能を追加した もの

  9. リアルタイムネットゲームで使う便利機能 (上にいくほど重要) ・Lobby(MatchMaking) ・RPC(Remote Procedure Call) ・SyncVar ・Network Transform ・Network

    Instanciate ・Network Destroy
  10. Lobby Matchmaking ルームを立てて、メンバーを集める部分 …オンライン上でロビーサーバを提供してくれます。 Unityの場合、大体ネットワークライブラリに付属のサービスを使うか、自前でマッチングサーバを立てるかで す。

  11. RPC ・一番大事 ・ぶっちゃけRPC以外の機能はRPCの糖衣構文と言っても過言では無い ・RPCを制すものは世界を制す(これは大げさですが) ・Unityネットワーク通信の基盤である「 RPC」について、意外と知られていないボトルネックと、その対策法 (モノ ビット 安田さん) https://www.slideshare.net/yhonjo/unityrpc

  12. たとえば プレイヤーAさんが銃を発射した時 プレイヤーBさんの端末上のAさんも銃を発射してほしい →RPCの出番!! https://docs.unity3d.com/ja/current/Manual/UNetPlayers.html

  13. SyncVar,NetworkTransform,NetworkInstanciat e,NetworkDestroy これらは全てRPCで書き下すことが出来ます。 なので「信用できないネットワークライブラリ」を使う時は、困ったら RPCに逃がしましょう。

  14. Unityにおけるネットワークライブラリの歴史 1. NetworkView(Unity4以前から) 2. Photon Unity Networking(v1) 3. UNET(Unity5.1~) 4.

    Monobit Engine 5. Photon(v2) みたいな順番で登場してたはず …
  15. PUN1.0を触る とりすーぷさんがこの後解説されるのでサラっといきます。 ・Resources以下にprefabを置く ・RPCの指定が関数名の「文字列」を渡す など、作りが古い。 リリースが古いからです…

  16. UNET Unity5.1から実装された新しいネットワークライブラリ UDPベースのLLAPI+近代的なHLAPIを備えている。 リアルタイムネットゲームを作りやすくなりそうな雰囲気!

  17. 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おすすめ
  18. UNET(闇) 展示会場でなんか30台くらいのスマホVRHMDに対して動画再生開始のキューだけ送りたいんだよね~ →無線LAN+UNETの合わせ技を食らい、数%の確率で再生されない端末が出てくる (自前で再送処理を書きがち)

  19. UNETは何がいけなかったのか ・(比較的)良い設計 ・貧弱なドキュメント ・サンプルプロジェクトの無さ ・フィードバックが無視される ・バグが永遠に直らない

  20. 2018年現在における(おすすめ)技術選定 (izm独断) 困ったらPhoton Unity Networking v1を使いましょう。 ・Forumが機能している ・サンプルコードが提供されている ・Battle-Proofed ・作りが古いのは我慢しよう。動く保証があるのは神。

  21. Photon Unity Networkingが適さないパターン ・中東,アフリカ向け(サーバが遠い) ・超多人数バトルロワイアル(助けて …) ・サーバ維持費を0円にしたい(そんな無茶な …) ・オフラインのLAN内で完結するシステムを作りたい(なのに Photon

    Server代は払いたくない???まじ で!?!?!?)
  22. オフラインのLANだけで完結するシステム??? BtoB案件とか 展示コンテンツとか 教育向けとか 製造業向けとか 関わってる人いますか?(挙手)

  23. LAN内 = PUN,MUN不可 PhotonさんやMonobitさんはビジネスモデル的にリレーサーバを提供して通信量に対して課金をさせるので、リ レーサーバを通らないLAN内をサポートしない。 正確にはPhotonServerやMonobit Serverライセンスがあるけど、大体の場合プロジェクト規模に対して予算 オーバー PUNで作ってて、土壇場でLAN内向けって言われた事があります。泣いた。

  24. LAN内で使う=UNET????? 触りたくないよね…

  25. 今日はこれだけ覚えて帰って欲しい Mirror 旧UNET HLAPI Pro→HLAPI Community Edition の後継ネットワークライブラリ https://forum.unity.com/threads/mirror-networking-for-unity-aka-hlapi-community-edition.425437/

  26. Mirror UNETに対して Bugfixと安定化とパフォーマンスチューニングと TCP を加えて マッチメイキングとリレーサーバとバグと信用ならない UDPベースのLLAPIを抜いたライブラリ using Mirror; //using

    UnityEngine.Networking; とネームスペース入れ替えだけで結構動く!!
  27. Mirror激推し 数年間メンテされ続けたUnity向けMMORPGフレームワークアセットである uMMORPGの作者のライブラリです。 人類の中でトップクラスに UNETに苦しんできた作者を信じような!!! HLAPI Community Editionも継続してダウンロード可能 (2017.4向け)

  28. Mirror LAN内利用 NetworkDiscoveryは?→自前で書けばOKです。 MirrorのNetworkManagerとUnetのNetworkDiscovery が合わさり最強に見える( ipaddressがffffを含まないのに注意)

  29. 本日のまとめ オフラインLAN環境で使 う? PUN1.0 Mirror

  30. 本日のまとめ リアルタイムネットワークゲームを Unityで作るならPhoton v1を最初に検討してみて下さい。 LAN内限定の場合はPhotonやMonobitが(Serverライセンス買わないと)使えないので、Mirrorという代替ライ ブラリがお勧めです。 PUBGみたいな多人数バトルロワイヤルは大変だと思う。

  31. 新しいUnity Networking System めちゃくちゃ凝ってる(UDPベースで自前で再送処理を持ってる ) 潜在的なパフォーマンスがかなり高い FPSサンプルが実用的な速度で動く 今後に注目…