Photon Unity Networkingアセットのバージョンをアップデートしたら動かなくなったときの覚え書き。
ライブラリのバージョンを揃える
PUNのバージョンを揃えたら、無事認識してくれました。逆にいうと、インポートしているPUNのバージョンが違うと認識してくれませんでした。
今開発しているそれではPhoton Voiceを使用しているのですが、こいつがPUNを同梱していて、インポートすると上書きしてくれるわけですね。
で、ここは勘違いしていたところなんですがPUNはPUNで別途インポートするようにしていて。つまりPUNとVoiceのインポートする順番によって、最終的にPUNのバージョンが違う可能性が出てくる。
現在のPUNは1.80、Voiceに同梱されているバージョンは1.79となっておりまして、PUN→Voiceの順でインポートすると最終的に1.79、Voice→PUNの順でインポートすると1.80になってしまったというわけ。
ここに気をつけて、同じバージョンになるようにしたら接続されました。よかった。
送信するゲームバージョンが違っても接続できなくなる
このあたりどこかドキュメントに書いてないかと思ったら、PUNの基本説明のところにありました。
バージョン管理
Photonの負荷分散ロジックは、アプリIDでプレイヤーを区別しています。ゲームバージョンも同じように、新しいクライアントと過去のクライアントを区別します。PUNのバージョンが異なると互換性を保証できないので、ゲームバージョンの後にPUNバージョンも送信しています。(PUN v1.7から)
Oh…
つまり送信しているバージョンが違うと接続できない、PUNは自身のバージョンも接続時のバージョンに含めて送信している、つまりPUNのバージョンが違うと接続できない。
なるほどですねー
ネットワークゲーム向けマルチプレイヤーライブラリとして大丈夫なんです? って思うところもあるのですが、想定する使い方としてMO的な、一時的なセッションみたいな感じであれば問題が無い(むしろこっちのほうが、互換性による問題が発生しなくてよい)ということなのでしょう。
ともあれ、PUNはバージョン互換がない。ということに気をつけていかないといけないということです。