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

PUN 2を使おう! / The pros of PUN 2

Avatar for Sokuhatiku Sokuhatiku
January 23, 2019

PUN 2を使おう! / The pros of PUN 2

2019年1月23日に開催されたGotanda.unity #10で、上記のタイトルでLTを行った際に使用したスライドです。

Gotanda.unity #10
https://meetup.unity3d.jp/jp/events/1032

Avatar for Sokuhatiku

Sokuhatiku

January 23, 2019

Other Decks in Programming

Transcript

  1. 0 1 2 3 4 5 6 7 8 9

    僕 • ソクハと申します(@Sokuhatiku) • UnityでVRやってます • Photonの記事を書くと言いながら スライドを書きました ごめんなさい • 初登壇です 実家の犬→ 10 ←自己紹介残り時間 4
  2. Photon Unity Networking 2(PUN 2) • PUN Classicの後継 • 去年の夏の終わりにリリースされた

    • PUN Classicのイケてなかった部分が多数改善されており、代償として互換性を 失っている。 https://assetstore.unity.com/packages/tools/network/pun-2-free-119922 8
  3. ちなみに:PUNのつくり • PUNの上にPhoton Realtimeがある • Photon RealtimeはUnity以外のプラットフォーム にも対応している • PUNはPhoton

    Realtimeを Unity上で扱いやすくしたもの (PUN Voice等は割愛) https://www.photonengine.com/ja-JP/Realtime 9
  4. PUN 2は様子見? • PUN ClassicからAPIの変更 ◦ 資源の再利用が手間 • 新しい物に付き物の信頼性の問題 ◦

    バグがあるかもしれないのでこわい • なんか100MB超えのファイルが入っててGitHubに怒られる ◦ ようこそGit LFSの世界へ──────!! 10
  5. 1. 動作がちょっと軽くていい • コールバックの方式が変わったので軽い ◦ ClassicではGameObject1個1個に対して丁寧に SendMessageしていたので重い ◦ 2ではListに格納したInterfaceを叩くので早い •

    でもそんなに頻繁に叩かれないので効果は薄い ◦ どちらかというとAPIが変わったことの恩恵の方がでかい(後述) 手法 SendMessage 直接呼出し 平均(秒) 0.175 0.006 10万回呼び出しの平均処理時間 (計測は適当なので参考程度) 13 30倍 くらい早 い
  6. • コールバックの形式が変更 ◦ 今まではGameObject.SendMessage()だったものが、Interface経由の呼び出しになった ◦ 名前の偶然の一致で呼ばれたり、引数違いでランタイムエラーを吐かれることが無くなった ◦ PUN 2では… 2.

    新しいAPIがいい   コールバックの登録が必須   (OnDestroy等で登録解除もね!) Interfaceに定義されてないので呼ばれない Interfaceに定義されているので呼ばれる 16
  7. 2. 新しいAPIがいい • PUN 2で定義されたコールバックInterfaceの種類 ◦ IConnectionCallbacks ▪ サーバーとの接続/切断時など ◦

    ILobbyCallbacks ▪ ロビー入退場、部屋一覧の更新など ◦ IMatchmakingCallbacks ▪ ルームの作成、入室など ◦ IInRoomCallbacks ▪ 他プレイヤーの入退室、 CustomPropertyの更新など ◦ IOnEventCallback ▪ Photon.Realtimeを直接触る時用 ◦ IWebRpcCallback ▪ WebRPCのレスポンス用 17
  8. 3.1. フォルダが整理されていていい • 全てのPhotonのアセットがAssets/Photon以下に収まった ◦ Pluginsフォルダも汚さない!!! • コンポーネント別にフォルダ分けされた ◦ PUN

    ClassicではVoiceが依存しているdllがPluginsに 入ったりしていた ◦ 不要なコンポーネントはフォルダごと削除でOK! 19
  9. 4. 割と移行出来るのでいい ※プロジェクトの規模によります • ロジックや使い方自体に変更はほぼない ◦ 名前空間を付ける ◦ アセンブリを参照する ◦

    クラス名を変更する ◦ コールバックだけ大きめの変更なので注意 ▪ 某eamInput2.0よりだいぶ有情だとおもう • AppIDはそのまま引き継げる ◦ 変わったのはクライアント側のみ • ドキュメントが充実している(大事) ◦ 公式の移行ドキュメントもあるぞ! https://doc.photonengine.com/ja-jp/pun/v2/getting-started/migration-notes 22