4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Photonを利用したプロジェクトでビルドした時のみルームから一定時間後に切断されてしまう問題

Last updated at Posted at 2020-06-01

概要

Photon を使った Unity プロジェクトで、なぜかビルドした時だけルーム入室から数秒後に切断されるバグが発生していたが、原因が分かったので記事を残しておく。

環境

  • Unity 2018.4.22f1
  • Photon Unity Network PUN 1.91

事象

下記のコードを仕込んでおいて、DevelopmentBuildでエラーを特定。
DisconnectByClientTimeout エラーが発生していた。

void OnConnectionFail(DisconnectCause cause)
{
    Debug.LogError("通信切断発生 connectionFail");
    Debug.LogError(cause);            
}

回線が細すぎたのかと思ったが、環境を変えても再現していた。
通信切断後に下記のエラーも必ずセットで発生しており、もしかしたら RaiseEvent が大量に送られている事が原因なのでは無いかとあたりを付けてみた。

RaiseEvent() failed. Your event is not being sent! Check if your are in a Room and the eventCode must be less than 200 (0..199).

原因

コードをよく見てみると、毎フレーム RaiseEvent を送っている箇所があった。
早速該当コードをコメントアウトしてみると、ルーム切断がされなくなったので正解だった模様。

30秒ちょっとで約3,000回のRaiseEventが...😰
image.png

コードをちょこっと書き換えて30秒で2回のRaiseEventにまで抑えた😊
image.png

まとめ

Editor では正常に動作していたのでなかなかハマりやすいのかもしれないと思った。
毎フレーム RaiseEvent を送っても処理が間に合うわけが無いので、状態を他クライアントと共有する場合はカスタムプロパティを使ったほうが合理的だろう。

参考

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?