Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

PUNのコード例 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

PUN2のコード例 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

まだPUN2には未対応 16

Slide 17

Slide 17 text

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を読みながら対応

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

まとめ 19

Slide 20

Slide 20 text

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