既知の問題点

このページでは、Photonが様々なプラットフォーム上で使用される際の既知の問題点について記載します。 ここで焦点をあてる内容は、解決できない問題もしくは回避策のない問題です。 場合によっては、プラットフォームごとに問題のあるバージョンをリスト化し、他のバージョンを紹介します。

モバイル・バックグラウンドアプリケーション

モバイルプラットフォームでアプリケーションがバックグラウンドに移行すると、クライアントの接続を保持するためのメインメッセージループが一時停止されます。

以下が、この現象のおもな原因です:

  • プレイヤーが「ホームボタン」を押した。
  • 電話の呼び出しを受信した。
  • 動画広告。
  • アプリケーションでオーバーレイ表示を発生させる、サードパーティーのプラグイン(たとえばFacebookやGoogleなど)。

アプリケーションが、クライアントの切断タイムアウト(デフォルトでは10秒です)よりも長い間停止した場合には、クライアントは切断され、アプリケーションの「一時停止解除」後すぐに再接続する必要があります。 アプリケーションがすでにバックグラウンドでない場合のみ、「タイムアウト切断」コールバックが呼ばれます。

ゲーム設計上、プレイヤーが数秒または数分後に戻ることが許容されている場合には、ゲームへの再接続や再参加が可能です。 アプリケーションの一時停止が解除された状態で、同じルームに同じアクター番号で再参加したい場合には、以下の点を考慮する必要があります:

  • PlayerTTL: しばらく経過した後にプレイヤーが戻ってこられるよう、PlayerTTLの値を十分に高く設定してルームを作成する必要があります。
  • EmptyRoomTTL: 最後に参加したプレイヤーのアプリケーションがバックグラウンドで実行されている場合、しばらくの間ルームをアクティブな状態に保つよう、EmptyRoomTTLの値を十分に高く設定してルームを作成する必要があります。

Windows 8

Windows 8(おそらく8.1)には、すでにネットワークに接続済みでも、新たなWifiネットワークを検索するという既知の問題点があります。 これによってリアルタイムネットワーキングに影響をおよぼす可能性があり、受信メッセージが頻繁にとぎれたり、pingを実行した際に急激に上昇するなどの現象がみられる場合があります。 この問題点を解決するにはシステムレジスタ[HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0002]内の ScanWhenAssociatedフィールドで、0x000000010x00000000に修正してください。

Unity

RunInBackground

UnityのApplication.runInBackgroundはモバイルプラットフォーム上ではサポートされていません。 その代わりに、アプリケーションがバックグラウンドやフォアグラウンドに移動した場合には、OnApplicationPauseメソッドが呼ばれます。

void OnApplicationPause( bool pauseStatus )
{
    if (pauseStatus)
    {
        // app moved to background
    } else
    {
        // app is foreground again
    }
}

Windows Storeの機能

Widows Storeが対象で、接続を試行する場合に例外が生じている際や、または以下のエラーが発生する場合について説明します:

このネットワークリソースにアクセスするには、ネットワーク機能が必要です

必要な機能を有効化するには、Unityの「プレイヤー設定」-> 「パブリッシャー設定」-> 「機能」-> 「InternetClient」から設定をおこないます。

Photon PUN: Required Capability for Windows Store Apps
Photon PUN: Windows Storeアプリケーションに必要な機能。Photon Voiceを使用していない場合、「Microphone」は必要ありません。

UWP

UnityアプリケーションをUWPにエクスポートする場合、スクリプトのバックエンドとして.NETまたはIL2CPPを使用できます。アプリケーションをUnityから正常にエクスポートするため、Photon PUNは正しいライブラリを選択するようすでに設定されています。もしエクスポート中に何らかのエラーが生じる場合には、該当のスクリプトバックエンドに対して正しいライブラリを使用しているか、確認してください。

スクリプトバックエンドとして .NETを使用している場合には、Photon3Unity3D.dllが/Assets/Plugins/Metro/ディレクトリから使用されている点を確認してください。 スクリプトバックエンドとして IL2CPPを使用している場合には、Photon3Unity3D.dllが/Assets/Plugins/ディレクトリから使用されている点を確認してください。

iOS

Unity 4.3.3 または 4.3.4のエクスポートでルームとプレイヤーのプロパティが正常に読み込めない場合があります。 out-of-memory例外でクラッシュする場合もあります。

この場合、AOT(事前)コンパイレーションが正常に機能しておらず、Hashtableで動作する一部のメソッドが壊れます。 この現象の原因は特定できていませんが、次回のUnity 4.xのリリースで修正できるようテストをおこなっています。

留意点:すべてのエクスポートが自動的に壊れるわけではありません。一部のプロジェクトは必ず壊れますが、その他のプロジェクトは壊れません。

IPv6

Unityのバージョンによって、IPv6をサポートしている場合と、以前は利用可能だった機能が壊れている場合があります(たとえば5.4など)。 サポート対象のバージョンの一部は以下です:4.7.2、5.1.5、5.2.5、5.3.4p4、5.4.0p1およびそれ以降 (Unityのブログ記事を参照してください)。

 ドキュメントのトップへ戻る