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

PUN2をasync/awaitで使えるライブラリつくってみた「Pun2Task」

torisoup
December 09, 2020

 PUN2をasync/awaitで使えるライブラリつくってみた「Pun2Task」

PUN2をasync/awaitで使えるライブラリ、Pun2Taskの紹介スライドです

動画
- https://www.youtube.com/watch?v=YEGQcWynuIM

【年末だよ】Unity お・と・なのLT大会 2020
https://meetup.unity3d.jp/jp/events/1266/

torisoup

December 09, 2020
Tweet

More Decks by torisoup

Other Decks in Technology

Transcript

  1. PUN2をasync/awaitで使える ライブラリつくってみた 「Pun2Task」 2020/12/06 とりすーぷ

  2. 自己紹介 •とりすーぷ • VR系の開発してる • Microsoft MVP • (Developer Technologies)

    • 最近はVRChatしてます illustrations by kota(@kt_kkz)さん
  3. 「Pun2Task」 •Photon Unity Networking2の拡張ライブラリ • https://github.com/TORISOUP/Pun2Task • めんどくさいログイン周りの処理をasync/awaitで 扱えるようにしたライブラリ

  4. PUNとは •Photon Cloud • リアルタイムなネットワーク通信機能を実装するときに よく用いられるサービス • ゲームジャムで利用されることも多い • これのUnity向け公式ライブラリが

    「Photon Unity Networking (PUN)」
  5. PUN と PUN2の違い •現行バージョンはPUN2 •PUNとの違いは • 基本的に使い方は同じ • 微妙にAPIが変わった •

    イベント呼び出しのインタフェースが定義された
  6. Pun2Task •PUN2向けのライブラリ • PUN1と互換性はないです

  7. PUNで同等のことがしたいなら •「PhotonRx」というライブラリを昔作った • https://github.com/TORISOUP/PhotonRx • Rxベースなので使い勝手は悪い • 今から触るなら「PUN2 + Pun2Task」でいいと思う

  8. PUN,PUN2の弱点

  9. PUN,PUN2の弱点 •「コールバックイベント」が使いにくい

  10. 例:ログイン

  11. 例:ログイン このAPIの結果がこれ このAPIの結果がこれ

  12. 使いにくい理由 •APIとイベントの対応がわからん • どのAPIとイベントが対応するのか覚えないとだめ • 別のAPIなのに同じイベントが飛んでくる • 異常系は別のイベントが飛ぶ •「どのAPIを呼んだのか」という文脈が 失われてしまう

  13. Pun2Taskなら •UniTaskとして使えるから簡単! • 同等の処理をasync/awaitで書ける!

  14. Pun2Taskの使い方

  15. Pun2Taskの使い方 •2つのstatic classがある • Pun2TaskNetwork • Pun2TaskCallback

  16. Pun2TaskNetwork •「PhotonNetwork」のラッパー • PhotonNetwork.~ で呼び出せるAPIをasync/await化 して提供してる

  17. Pun2TaskCallback •「MonoBehaviourPunCallbacks」のラッパー • 各種PUN2のイベントを UniTask / UniTaskAsyncEnumerable として提供

  18. Pun2Taskでできること

  19. Pun2Taskでできること 1 •ログイン処理のasync/await化 • PhotonNetwork.ConnectUsingSettings() をasync/awaitで待機できる

  20. 成功時はUniTaskが完了する 失敗時は例外が飛ぶ

  21. Pun2Taskでできること 2 •ルーム参加処理周りのasync/await化 • JoinOrCreateRoom • JoinRoom • CreateRoom •

    LeaveRoom • など…
  22. None
  23. Pun2Taskでできること 3 •各種イベントを待機する • OnConnected • OnCreatedRoom • OnPlayerEnteredRoom •

    など…
  24. None
  25. Pun2Taskでできること4 •所有権(IsMine)の扱いをラクにする • 所有権取得のawait • 所有権が移ったことを監視

  26. 所有権取得のawait

  27. 所有権遷移の監視

  28. まとめ •Pun2Task、ぜひ使ってみてください • PUN2の「使いにくい部分」を補うライブラリ • 使ってみてのフィードバックが欲しいです