Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

4

Share

Download to read offline

PUN 2を使おう!

Download to read offline

2019年1月23日に開催された、Gotanda.unity #10でLTを行った時の資料です。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

PUN 2を使おう!

  1. 1. PUN 2を使おう! PUN Classicとの違いと個人的に感じたメリット 2019年1月23日 Gotanda.Unity #10 LT @Sokuhatiku 1
  2. 2. 話すこと 2 ● 紹介 ● PUNの説明 ● PUN 2はいいぞ
  3. 3. 紹介 3
  4. 4. 0123456789 僕 ● ソクハと申します(@Sokuhatiku) ● UnityでVRやってます ● Photonの記事を書くと言いながら スライドを書きました ごめんなさい ● 初登壇です 実家の犬→ 10 ←自己紹介残り時間 4
  5. 5. 弊社 ● 株式会社Synamon ● VRの『ケ』を担うべく、 2016年8月頃から活動。 ● VR会議システム 『NEUTRANS BIZ』 ベータ版提供中! 5
  6. 6. PUN ClassicとPUN 2 6
  7. 7. Photon Unity Networking Classic(PUN Classic) ● ドイツのExitGames社が提供する、リアルタイムネットワークを実現する為 のUnity用クライアントライブラリ ● (かつてあった)UNetからの移行を促すため、似たAPIになっている https://assetstore.unity.com/packages/tools/network/photon-unity-networking-classic-free-1786 7
  8. 8. Photon Unity Networking 2(PUN 2) ● PUN Classicの後継 ● 去年の夏の終わりにリリースされた ● PUN Classicのイケてなかった部分が多数改善されており、代償として互換 性を失っている。 https://assetstore.unity.com/packages/tools/network/pun-2-free-119922 8
  9. 9. ちなみに:PUNのつくり ● PUNの上にPhoton Realtimeがある ● Photon RealtimeはUnity以外のプラットフォーム にも対応している ● PUNはPhoton Realtimeを Unity上で扱いやすくしたもの (PUN Voice等は割愛) https://www.photonengine.com/ja-JP/Realtime 9
  10. 10. PUN 2は様子見? ● PUN ClassicからAPIの変更 ○ 資源の再利用が手間 ● 新しい物に付き物の信頼性の問題 ○ バグがあるかもしれないのでこわい ● なんか100MB超えのファイルが入っててGitHubに怒られる ○ ようこそGit LFSの世界へ──────!! 10
  11. 11. PUN 2はいいぞ 11
  12. 12. PUN 2がいい理由 1. 動作がちょっと軽くていい 2. 新しいAPIがいい 3. 色々整理されていていい 4. 割と移行出来るのでいい ※ 12
  13. 13. 1. 動作がちょっと軽くていい ● コールバックの方式が変わったので軽い ○ ClassicではGameObject1個1個に対して丁寧にSendMessageしていたので重い ○ 2ではListに格納したInterfaceを叩くので早い ● でもそんなに頻繁に叩かれないので効果は薄い ○ どちらかというとAPIが変わったことの恩恵の方がでかい(後述) 手法 SendMessage 直接呼出し 平均(秒) 0.175 0.006 10万回呼び出しの平均処理時間 (計測は適当なので参考程度) 13
  14. 14. 1. 動作がちょっと軽くていい ● RPCはClassicから引き続きReflectionを使っており重い ○ こっちの方がだいたい頻繁に呼ばれるはず ○ PhotonView経由で文字列でメソッドを呼び出す仕様上大幅な高速化は難しそう ○ RPC呼び出し部分のソースコードは触れるので、 ユースケースによっては自分で頑張って最適化も出来なくはない 14
  15. 15. 2. 新しいAPIがいい ● コールバックの形式が変更 ○ 今まではGameObject.SendMessage()だったものが、Interface経由の呼び出しになった ○ 名前の偶然の一致で呼ばれたり、引数違いでランタイムエラーを吐かれることが無くなった ○ PUN Classicでは… 15
  16. 16. ● コールバックの形式が変更 ○ 今まではGameObject.SendMessage()だったものが、Interface経由の呼び出しになった ○ 名前の偶然の一致で呼ばれたり、引数違いでランタイムエラーを吐かれることが無くなった ○ PUN 2では… 2. 新しいAPIがいい コールバックの登録が必須 (OnDestroy等で登録解除もね!) Interfaceに定義されてないので呼ばれない Interfaceに定義されているので呼ばれる 16
  17. 17. 2. 新しいAPIがいい ● PUN 2で定義されたコールバックInterfaceの種類 ○ IConnectionCallbacks ■ サーバーとの接続/切断時など ○ ILobbyCallbacks ■ ロビー入退場、部屋一覧の更新など ○ IMatchmakingCallbacks ■ ルームの作成、入室など ○ IInRoomCallbacks ■ 他プレイヤーの入退室、CustomPropertyの更新など ○ IOnEventCallback ■ Photon.Realtimeを直接触る時用 ○ IWebRpcCallback ■ WebRPCのレスポンス用 17
  18. 18. 3. 色々整理されていていい 18
  19. 19. 3.1. フォルダが整理されていていい ● 全てのPhotonのアセットがAssets/Photon以下に収まった ○ Pluginsフォルダも汚さない!!! ● コンポーネント別にフォルダ分けされた ○ PUN ClassicではVoiceが依存しているdllがPluginsに 入ったりしていた ○ 不要なコンポーネントはフォルダごと削除でOK! 19
  20. 20. 3.2. 名前空間が整理されていていい ● (フォルダも併せて)どこまでがPhotonRealtimeか、 どこからがPhotonUnityNetworkingなのかハッキリした ● PhotonViewや、Photonが定義した拡張メソッドも ちゃんとPhoton名前空間以下に引っ込んだ ここがPUN Classicではあいまいだった ToStringFull()とか、知らずに使っちゃった 人もいるのでは? 20
  21. 21. 3.3. アセンブリが整理されていていい ● テストが書けるぞ!うおおおおお!!!!! ● 参照範囲が限定される安心感 ● Photonの挙動の検証にも コンポーネント毎に分けられていて さらに安心 21
  22. 22. 4. 割と移行出来るのでいい ※プロジェクトの規模によります ● ロジックや使い方自体に変更はほぼない ○ 名前空間を付ける ○ アセンブリを参照する ○ クラス名を変更する ○ コールバックだけ大きめの変更なので注意 ■ 某eamInput2.0よりだいぶ有情だとおもう ● AppIDはそのまま引き継げる ○ 変わったのはクライアント側のみ ● ドキュメントが充実している(大事) ○ 公式の移行ドキュメントもあるぞ! https://doc.photonengine.com/ja-jp/pun/v2/getting-started/migration-notes 22
  23. 23. 最後に・・・ ● 弊社のプロダクトでは直接触っていないので、信頼性の話はし辛い… ● 既存プロダクトや重要なプロダクトに無理して適用する必要は無い ● でも恩恵がでかく、使うとプロジェクトが奇麗になって 精神が安定するので個人的にはオススメしたい ○ Photon側も新規で始めるならPUN 2を推奨しているみたい 23
  24. 24. 新規で使うならPUN 2使おうぜ!! 24
  25. 25. ご静聴ありがとうございました。 25
  • YuikoSuyama

    Nov. 17, 2020
  • tetsuyaimagawa

    May. 21, 2020
  • ryudaikimura

    Sep. 23, 2019
  • mizukiizuna

    May. 10, 2019

2019年1月23日に開催された、Gotanda.unity #10でLTを行った時の資料です。

Views

Total views

1,788

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

0

Shares

0

Comments

0

Likes

4

×