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
PUN2をasync/awaitで使える ライブラリつくってみた 「Pun2Task」 2020/12/06 とりすーぷ
Slide 2
Slide 2 text
自己紹介 •とりすーぷ • VR系の開発してる • Microsoft MVP • (Developer Technologies) • 最近はVRChatしてます illustrations by kota(@kt_kkz)さん
Slide 3
Slide 3 text
「Pun2Task」 •Photon Unity Networking2の拡張ライブラリ • https://github.com/TORISOUP/Pun2Task • めんどくさいログイン周りの処理をasync/awaitで 扱えるようにしたライブラリ
Slide 4
Slide 4 text
PUNとは •Photon Cloud • リアルタイムなネットワーク通信機能を実装するときに よく用いられるサービス • ゲームジャムで利用されることも多い • これのUnity向け公式ライブラリが 「Photon Unity Networking (PUN)」
Slide 5
Slide 5 text
PUN と PUN2の違い •現行バージョンはPUN2 •PUNとの違いは • 基本的に使い方は同じ • 微妙にAPIが変わった • イベント呼び出しのインタフェースが定義された
Slide 6
Slide 6 text
Pun2Task •PUN2向けのライブラリ • PUN1と互換性はないです
Slide 7
Slide 7 text
PUNで同等のことがしたいなら •「PhotonRx」というライブラリを昔作った • https://github.com/TORISOUP/PhotonRx • Rxベースなので使い勝手は悪い • 今から触るなら「PUN2 + Pun2Task」でいいと思う
Slide 8
Slide 8 text
PUN,PUN2の弱点
Slide 9
Slide 9 text
PUN,PUN2の弱点 •「コールバックイベント」が使いにくい
Slide 10
Slide 10 text
例:ログイン
Slide 11
Slide 11 text
例:ログイン このAPIの結果がこれ このAPIの結果がこれ
Slide 12
Slide 12 text
使いにくい理由 •APIとイベントの対応がわからん • どのAPIとイベントが対応するのか覚えないとだめ • 別のAPIなのに同じイベントが飛んでくる • 異常系は別のイベントが飛ぶ •「どのAPIを呼んだのか」という文脈が 失われてしまう
Slide 13
Slide 13 text
Pun2Taskなら •UniTaskとして使えるから簡単! • 同等の処理をasync/awaitで書ける!
Slide 14
Slide 14 text
Pun2Taskの使い方
Slide 15
Slide 15 text
Pun2Taskの使い方 •2つのstatic classがある • Pun2TaskNetwork • Pun2TaskCallback
Slide 16
Slide 16 text
Pun2TaskNetwork •「PhotonNetwork」のラッパー • PhotonNetwork.~ で呼び出せるAPIをasync/await化 して提供してる
Slide 17
Slide 17 text
Pun2TaskCallback •「MonoBehaviourPunCallbacks」のラッパー • 各種PUN2のイベントを UniTask / UniTaskAsyncEnumerable として提供
Slide 18
Slide 18 text
Pun2Taskでできること
Slide 19
Slide 19 text
Pun2Taskでできること 1 •ログイン処理のasync/await化 • PhotonNetwork.ConnectUsingSettings() をasync/awaitで待機できる
Slide 20
Slide 20 text
成功時はUniTaskが完了する 失敗時は例外が飛ぶ
Slide 21
Slide 21 text
Pun2Taskでできること 2 •ルーム参加処理周りのasync/await化 • JoinOrCreateRoom • JoinRoom • CreateRoom • LeaveRoom • など…
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
Pun2Taskでできること 3 •各種イベントを待機する • OnConnected • OnCreatedRoom • OnPlayerEnteredRoom • など…
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
Pun2Taskでできること4 •所有権(IsMine)の扱いをラクにする • 所有権取得のawait • 所有権が移ったことを監視
Slide 26
Slide 26 text
所有権取得のawait
Slide 27
Slide 27 text
所有権遷移の監視
Slide 28
Slide 28 text
まとめ •Pun2Task、ぜひ使ってみてください • PUN2の「使いにくい部分」を補うライブラリ • 使ってみてのフィードバックが欲しいです