リージョン
Photon Cloudを利用すれば、世界中で低レイテンシーのゲームを実行するためのグローバルな接続が可能になります。 これは、様々なリージョンのサーバーをホスティングすることで実現されています。
利用可能なリージョンは、プロジェクトのライフタイムを通じて変更される可能性があるため、クライアントはPhoton ネームサーバーから最新のリージョンリストを取得します。
各リージョンは他のリージョンから完全に分離しており、リージョンはマスターサーバー(マッチメイキング用)とゲームサーバー(ルームのホスティング)から成ります。

利用可能なリージョンは製品ごとに異なります(Fusion、Quantum、Chat等)。 リージョン許可リストを使用すれば、クライアントがどのリージョンを利用可能かさらに定義することができます。
この製品のリージョンリストを以下に示します。
目次
利用可能なリージョン
Photon Cloudは、複数の地域にサーバーがあり、世界中の複数のホスティングセンターに分散しています。
Photon Cloudの各リージョンは、「リージョントークン」で認識されます。
特定のリージョンに接続するには、AppSettings下のPhotonServerSettingsでリージョンコードを「Fixed Region」と設定します。
PhotonNetwork.ConnectToRegion
を使用するには、手動でネットワーキングクライアントを設定する(主にAppIdとAppVersion)必要があります。これは、この場合にはPhotonServerSettingsが使用されないためです。
リージョン | ホスティングされている場所 | トークン |
---|---|---|
Asia | シンガポール | asia |
Australia | メルボルン | au |
Canada, East | モントリオール | cae |
中国本土1 (手順を参照してください) | 上海 | cn |
ヨーロッパ | アムステルダム | eu |
インド | チェンナイ | in |
日本 | 東京 | jp |
南アフリカ | ヨハネスブルグ | za |
南米 | サンパウロ | sa |
韓国 | ソウル | kr |
トルコ | イスタンブール | tr |
アメリカ(東) | ワシントンD.C. | us |
アメリカ(西) | サンノゼ | usw |
ダッシュボードでのリージョンのフィルタリング
アプリケーションごとに利用可能なPhoton Cloudのリージョンのリストを、ダッシュボードからすぐにフィルタリングできます。

ダッシュボードを開き、該当のアプリケーションの「管理」をクリックしてから、「編集」をクリックします。 許可されたリージョンのリストを入力できる、入力フィールドが以下のように表示されます:
- セミコロンで区切られたリージョントークン(例:「eu;us」)の文字列のみが、許可リストとして許可されます。
- リージョントークンは大文字・小文字が区別され、こちらで定義されます。
- 定義されていない、または認識されていないリージョントークンはリストから無視されます。
- 空 (「」) または不正な形式の文字列(例 「;;;」)は空のリストを意味します。
- 空のリストとは、利用可能なすべてのリージョンが許可されていることを意味します。
確認して保存すると、それ以降はネームサーバーはフィルタリングされたリージョンのリストのみを返します。 このため、クライアントはそのリストから選択する必要があります。 ダッシュボードの更新が反映されるには、最大で10分間かかる点を考慮してください。
リージョンの選択方法
アメリカにいるユーザーはPhoton Cloud USリージョンに接続すると、最低レイテンシーとなります。非常に明快です。
では、世界中 にユーザーがいる場合はどうでしょうか?
以下のいずれかを選択できます。
- a) ゲームクライアントに様々なPhoton Cloudリージョンへpingを送信させ、最適なpingをあらかじめ選択する。 手順を参照してください。
- b) リージョンにひもづくクライアントビルドを配信し、様々なリージョンのユーザーが他のPhoton Cloudリージョンに接続できるようにする。 または
- c) ゲームのUI内で、マッチングするリージョンをユーザーに選択させる。
もしくは、 d) ゲームプレイで高レイテンシーが許容可能な場合には、すべてのユーザーに同一リージョンに接続させる(例:それほどリアルタイムでないゲームの場合)。
Photon Cloudアプリケーションは、追加料金なしですべての利用可能なリージョンで稼動します。 価格設定を参照してください。
Photon Cloudのダッシュボードでは、各リージョンでのゲームの利用状況をモニタリングでき、また簡単に購入プランのアップグレードまたはダウングレードを実行できます。 ダッシュボードに進む場合はこちらをクリックしてください。
ベストリージョンの選択
PUNとPhoton Voiceは、ベストリージョンを選択する際にRealtime APIレイヤーに依存しています。
C# Realtime API
Photon Realtimeは接続すべきベストリージョンを検知でき、プレイヤーがそのリージョンへの接続を保持できるようにします。
これを実現するため、クライアントは接続時に接続可能なリージョンのリストをネームサーバーから常に取得します。
サーバーからの応答はLoadBalancingClient.RegionHandler
の設定に使用されます。LoadBalancingClient.RegionHandlerは、
IConnectionCallbacksで定義されるとおり、
OnRegionListReceived(RegionHandler regionHandler)`もコールバックによって提供されます。
通常、次のステップはregionHandler.PingMinimumOfRegions()
を呼び、各リージョンへの最新のpingを検出することです。完了時には、呼び出すメソッドを渡す必要があり、最良のケースでは、以前の実行から「ベストリージョン・サマリー」を渡すこともできます(以下で説明します)。
サーバーへのping送信後、結果は後で使用できるようregionHandler.SummaryToCache
に要約され、デバイス上に保存されます。
以前のセッションのSummaryToCache
がなければ、すべてのリージョンがpingされますが、所要時間が長くなります。
以前の結果が利用可能な場合、クライアントは以下を確認します:
a. リージョンリストが変更された場合(「以前のベストリージョン」がまだ利用可能な場合に対応)
b. pingが受け入れられなくなった場合(以前に保存された参照値よりも1.5倍以上遅い)
どちらかが該当する場合、すべてのリージョンがpingされ、新しい結果が選択されます。
ベストリージョンを使用すると、ダッシュボード内のサーバー側のリージョンフィルタと連携します。この機能によって、プレイヤーが利用可能なリージョンがオンデマンドで更新されます。
リージョンのリストにアクセスする場合、または前回の結果を上書きする場合には、リージョンのAPIリファレンスを参照してください。
PUN
PhotonNetwork.ConnectUsingSettings()
を使用すると、デフォルトでベストリージョンの選択が行われます。
プレイヤーの設定に結果を自動的に保存することを除けば、ワークフローはRealtime APIと同じです。
ベストリージョンは「継続的」です。 クライアントは通常、1つのリージョンをより長い時間使用します。 その後の起動時に、再びこのリージョンにpingを実行します。 PUNは、UnityのPlayerPrefsを使用して、 ベストリージョンの概要を自動的に保存します。
利便性とデバッグの目的で、現在のベストリージョンとそのpingはUnityエディターのPhotonServerSettingsで公開されます。 ただし、Unity Editorのプレイモードでのみ有効です。 Unity Editorと同じマシンで実行されるビルドには、異なるベストリージョンが含まれる場合があります。
ベストリージョンの検討
「ベストリージョン」オプションは、決定的なものではありません。 リージョンにあまり差がない場合や、まったく同じping計算がされた場合には、「ランダム」になる可能性があります。
理論上は以下の設定が可能です:
- 同一デバイスから、複数リージョンに対してまったく同じpingを設定します。同じネットワークに接続したクライアント上で異なるリージョンに接続する場合には、ランダムになります。
- 同じネットワークに接続した異なるデバイス上(または同じデバイス上で異なる試行を実行する)で、同じリージョンに対して異なるping値を設定します。
たとえば、「us」と「usw」(または「ru」と「rue」)の場合、オンラインリージョンの許可リストを使用してリージョンを選択するか、または明示的にリージョンに接続します。
デバッグをおこなうには、ロギングレベルを「情報」に設定し、「現在のベストリージョン」をクリアしてください(PUNの場合:PhotonNetwork.BestRegionSummaryInPreferences = null)。詳細を参照するか、またはメールでログを送信してください。
開発リージョン
PUN v2.17から、「開発リージョン」という新機能を追加しました。 これは、PhotonServerSettingsで利用できる新しい設定です。 この設定では、すべての開発ビルドが同じリージョンを使用し、「ベストリージョン」を選択する際の初期のマッチメイキングの問題が回避されます。 「開発ビルド」はPhotonServerSettingsが作成されると自動的に有効化され、「開発リージョン」はUnityエディターでの初回実行時(PlayMode)に設定されます。
「開発リージョン」は、PhotonNetwork.ConnectUsingSettings()
を使用して接続した際にUnityエディターおよび「開発」ビルドでのみ使用されます。
単純に値を削除すれば、Unityエディター内の「開発リージョン」や「開発ビルド」を無効化できます。
このため、開発段階でベストリージョン選択の問題を回避するには、最新のPUN 2バージョンにアップデート済みであるか確認してください。 Unityエディターでは1回実行してください(PlayModeと入力し、接続)。 任意のデモシーンから実行可能です。 このUnityエディターからの初回接続によって、PhotonServerSettingsインスペクターから参照できる「開発リージョン」が設定されます。 1回実行すればデバイスからビルドおよびテストが可能になります。また、すでに実行済みならば、新しいビルドを実行できます。 ビルド設定から「開発ビルド」が有効化されたことがわかるでしょう。開発期間の間、この設定のままとなります。 こうして、すべてのクライアント(Unityエディターおよびビルド)が同じ「開発リージョン」に接続します。
本番への移行前に、開発ビルドを無効化するのを忘れないでください。
注: 1つのクライアントが開発ビルドまたはUnityエディターから接続し、その他のクライアントが非開発ビルドから接続している場合、それらのクライアントは2つの異なるリージョンに接続する可能性があります。
中国本土のリージョンを使用
ファイアウォールによってトラフィックがブロックされる可能性があるため、中国ローカルのPhotonネームサーバーを使用する必要があります。 中国のPhotonネームサーバーは「ns.photonengine.cn」 です。
中国本土外からクライアントに接続しても、良い結果は得られません。 また、Photonサーバーから中国本土外のサーバーへの接続(たとえば、カスタム認証、Webhook、WebRPCなどで)は信頼性が高くありません。
また、法的な理由から中国向けには個別のビルドが必要となります。弊社は各ビルドに個別のAppIDを使用することを推奨しています。 たとえば、ビルドごとに(任意の)コンパイル条件を使用してAppIDやPhotonネームサーバーを変更します。
中国マーケット用に特別なビルドを作成するには、お使いのクライアントSDKの手順を参照してください。
PUN 2
PhotonServerSettingsを使用

コードを使用
void ConnectToChina()
{
AppSettings chinaSettings = new AppSettings();
chinaSettings.UseNameServer = true;
chinaSettings.ServerAddress = "ns.photonengine.cn";
chinaSettings.AppIdRealtime = "ChinaPUNAppId"; // TODO: replace with your own PUN AppId unlocked for China region
chinaSettings.AppVersion = "ChinaAppVersion"; // optional
PhotonNetwork.ConnectUsingSettings(chinaSettings);
}