既知の問題点
このページでは、Photonが様々なプラットフォーム上で使用される際の既知の問題点について記載します。 ここで焦点をあてるのは解決が不可能な問題、または回避策のない問題です。 一部の項目ではプラットフォームごとに問題のあるバージョンをリスト化し、他のバージョンを紹介します。
目次
バックグラウンドで実行
モバイルプラットフォームでアプリケーションがバックグラウンドに移行すると、クライアントの接続を保持するためのメインメッセージループが一時停止されます。
以下が、この現象のおもな原因です:
- プレイヤーが「ホームボタン」を押した。
- 電話の呼び出しを受信した。
- 動画広告。
- アプリケーションでオーバーレイ表示を発生させる、サードパーティーのプラグイン(たとえばFacebookやGoogleなど)。
iOSでは、アプリケーションはバックグラウンドで接続を維持できません(詳細は、AppleのディベロッパーページでBackground Executionを参照してください)。アプリがバックグラウンドに切り替わったら、クライアントを切断するのが賢明といえるでしょう。
WebGLでは、PlayerTTLを設定し、タブにフォーカスが戻った際にセッションに再接続するのが賢明といえるでしょう。 多くの場合、ブラウザはバックラウンドでJSやWebAssemblyを実行しません。場合によっては、バックグラウンドで音声を再生することによって(たとえ聞き取れないものでも)、これを回避できます。
アプリケーションが、クライアントの切断タイムアウト(デフォルトでは10秒です)よりも長い間停止した場合には、クライアントは切断され、アプリケーションの「一時停止解除」後すぐに再接続する必要があります。 「タイムアウト切断」コールバックは、アプリケーションがバックグラウンドから復帰した後にのみトリガーされます。
ゲーム設計上、プレイヤーが数秒または数分後に戻ることが許容されている場合には、ゲームへの再接続や再参加が可能です。 アプリケーションの一時停止が解除された状態で、同じルームに同じアクター番号で再参加したい場合には、以下の点を考慮する必要があります:
- PlayerTTL: しばらく経過した後にプレイヤーが戻ってこられるよう、PlayerTTLの値を十分に高く設定してルームを作成する必要があります。
- EmptyRoomTTL: 最後に参加したプレイヤーのアプリケーションがバックグラウンドで実行されている場合、しばらくの間ルームをアクティブな状態に保つよう、EmptyRoomTTLの値を十分に高く設定してルームを作成する必要があります。