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

PUN2触ってみた

shioiyan
September 26, 2018

 PUN2触ってみた

Gotanda.unity#8に登壇した時の発表資料です。

PUN2のリファレンス
https://doc-api.photonengine.com/en/pun/v2/index.html

PUN2のMigration Notes
https://doc.photonengine.com/en-us/pun/v2/getting-started/migration-notes

PhotonRx(by @toRisouPさん)
https://github.com/TORISOUP/PhotonRx

shioiyan

September 26, 2018
Tweet

More Decks by shioiyan

Other Decks in Technology

Transcript

  1. PUN2触ってみた
    Gotanda.unity #8
    in ワンダープラネット株式会社 @渋谷
    2018/09/26

    View Slide

  2. 自己紹介
    santa(@otyugen59)
    ● モバイルファクトリー エンジニア2年目
    ● 学生時代に趣味でUnityを使ってゲーム作りをし
    てた
    ● 去年業務でもUnityを3ヶ月くらい触ってた
    2

    View Slide

  3. ❏ Photon Unity Networkingとは?
    ❏ PUN2とは?
    ❏ PUN2にPhotonRxを適用する
    3
    話す内容

    View Slide

  4. 4
    とは
    ❏ リアルタイムのマルチプレイヤーゲーム開発フレームワーク
    ❏ 世界No1の独立系ネットワーキングエンジン
    ❏ ネットワークエンジンであるPhoton Realtimeやチャットシス
    テムのPhoton Chatなどリアルタイムマルチプレイヤーゲー
    ムの実装を助けるサービスを提供している

    View Slide

  5. 5
    とは
    ❏ Photon Unity Network(以下PUN)は、Photon SDKをラッピン
    グしてUnity Networkingと互換性を持たせたもの
    ❏ Unity Networkingの使いやすさと、Photon Realtimeの高いパ
    フォーマンスや信頼性を両立

    View Slide

  6. PUNのコード例
    6

    View Slide

  7. 7
    PUNに接続(Lobbyに参加)
    Player
    Lobby
    Master
    Server
    Auto Join

    View Slide

  8. 8
    Roomに参加
    Player
    Lobby
    RoomA
    RoomB
    RoomC
    Master
    Server
    JoinRoom(“RoomA”)
    JoinRandomRoom()
    JoinLobby()

    View Slide

  9. 9
    PUN2とは?
    ❏ 2018年8月25日にリリースされた
    ❏ 初代PUNよりも洗練されたAPIとストラクチャーを持つ
    ❏ 初代PUNのことを区別のためにPUN Classicやv1と言う
    ❏ リファレンスやdemoはv1と比べるとほとんど整っていない(特
    に日本語)
    ❏ v1との変更点はMigration Notesを参照する

    View Slide

  10. とりあえず触ってみよう!
    10

    View Slide

  11. PUN2のコード例
    11

    View Slide

  12. 1
    2
    PUNに接続
    Player
    Lobby
    Master
    Server
    Auto Join

    View Slide

  13. 1
    3
    Roomに参加(同じ)
    Player
    Lobby
    RoomA
    RoomB
    RoomC
    Master
    Server
    JoinRoom(“RoomA”)
    JoinRandomRoom()
    JoinLobby()

    View Slide

  14. PhotonのコールバックをUniRx
    のObservableで扱いたい
    14

    View Slide

  15. 1
    5
    PhotonRx
    ❏ toRisouPさんの開発された、PUNをUniRxのObservable
    として扱えるようにしたライブラリ
    ❏ サーバへの接続成功/失敗といったコールバックを
    this.xxxAsObservableでストリームを取得できる

    View Slide

  16. まだPUN2には未対応
    16

    View Slide

  17. 1
    7
    PUN2への対応
    ❏ PUNとPhoton Realtimeを分離するためか、Photon.Punと
    Photon.Realtimeという名前空間ができていた
    ❏ PhotonNetwork.autoJoinLobbyがなくなった
    ❏ GameVersionをPhotonNetwork.GameVersionで設定する
    ようになった
    ❏ CamelCaseからPascalCaseへプロパティ名が変更された(例:
    PhotonNetwork.inRoom => PhotonNetwork.InRoom)
    ❏ クラス名の変更された
    (例: PhotonPlayer => Photon.Realtime.Player)
    PUN2とPhotonRxを入れてエラーを吐いているところを
    Migration Notesを読みながら対応

    View Slide

  18. 1
    8
    コールバックが変更された
    ❏ PUN2でコールバックがInterface.Callbackになった
    ❏ おそらくこれがPUN2になって一番大きな変更
    ❏ コールバックを使いたい時はMonoBehaviourPunCallbacksを継
    承して実装する必要がある
    PUN v1 PUN2

    View Slide

  19. まとめ
    19

    View Slide

  20. 2
    0
    ❏ PUN2になることでAPI, 名前空間, コールバックが変更された
    ❏ camelCaseからPascalCaseになるなどプロパティ名やクラス名が
    変更された
    ❏ まだリファレンスやdemoはPUN v1と比較して不十分
    ❏ マルッと変わったわけではないので、PUN v1のリファレンスや記
    事も全然使える
    ❏ PUN v1を使っていた人ならすぐにPUN2に移行できそう
    ❏ (個人的な知見) 前のバージョンで作られたライブラリを新しいバー
    ジョンで動かしてエラーを追うと、変更点に気が付きやすくてよ
    かった
    まとめ

    View Slide