リージョン
Photon Cloudを利用すれば、世界中で低レイテンシーのゲームを実行するためのグローバルな接続が可能になります。
クライアントはまずネームサーバーに接続し、ネームサーバーは利用可能なリージョンのリストを提供します。 通常は「ベストリージョン」の選択が有効化されており、最低pingのリージョンが検知されてクライアントはこのリージョンに接続します(下図を参照してください)。
各リージョンは他のリージョンから完全に分離しており、リージョンはマスターサーバー(マッチメイキング用)とゲームサーバー(ルームのホスティング)から成ります。
以下は、利用可能なリージョンの完全なリストです。 クライアントが利用できるリージョンはダッシュボードで定義できます。
ベストリージョンの選択
PUNは、ベストリージョンを選択する際にRealtime APIレイヤーに依存しています。 プレイヤーの選択結果を自動的に保存するのとは別に、下記のとおりワークフローはRealtime APIと同様です。
ベストリージョンの選択は、PhotonNetwork.ConnectUsingSettings()
を使用している場合にデフォルトで実行されます。
Photon Realtimeは接続すべきベストリージョンを検知でき、プレイヤーがそのリージョンへの接続を保持できるようにします。
これを実現するため、クライアントは接続時に接続可能なリージョンのリストをネームサーバーから常に取得します。 このリストは、選択したリージョンが利用可能であるか確認するために使用されます
サーバーへのping送信後、結果は後で使用できるよう文字列に要約され、デバイス上に保存されます。 要約された文字列には、最新のベストリージョン、ping、最新のリージョンリストが含まれます。
前回のセッションの結果がない場合にはすべてのリージョンがpingされるため、より多くの時間を要します。 前回の結果を利用できる場合、クライアントはそのリージョンがまだ利用可能であるか、pingがまだ受容可能であるか(1.5倍以上遅くなっていないか)、またリージョンリストに変更がないかを確認します。 もしいずれかに該当する場合には、すべてのリージョンがpingされ、新たな結果が取得されます。
ベストリージョンを使用すると、ダッシュボード内のサーバー側のリージョンフィルタと連携します。 この機能によって、プレイヤーが利用可能なリージョンがオンデマンドで更新されます。
リージョンのリストにアクセスする場合、または前回の結果を上書きする場合には、リージョンのAPIリファレンスを参照してください。
ベストリージョンの検討
「ベストリージョン」オプションは、決定的なものではありません。 リージョンにあまり差がない場合や、まったく同じping計算がされた場合には、「ランダム」になる可能性があります。
理論上は以下の設定が可能です: - 同一デバイスから、複数リージョンに対してまったく同じpingを設定します。同じネットワークに接続したクライアント上で異なるリージョンに接続する場合には、ランダムになります。 - 同じネットワークに接続した異なるデバイス上(または同じデバイス上で異なる試行を実行する)で、同じリージョンに対して異なるping値を設定します。
たとえば、「us」と「usw」(または「ru」と「rue」)の場合、オンラインリージョンのホワイトリストを使用してリージョンを選択するか、または明示的にリージョンに接続します。
利用可能なリージョン
Photon Cloudは、複数のリージョンにサーバを設置しています。これらは世界各地のホスティングセンターに設置されています。
各Photon Cloudリージョンは「リージョントークン」で識別されます。
特定のリージョンに接続するには、AppSettings内のPhotonServerSettingsでコードを「Fixed Region」に設定します。
PhotonNetwork.ConnectToRegion
を使用するには、この場合にはPhotonServerSettingsが使用されないようネットワーキングクライアントを手動で設定する(おもにAppIdとAppVersion)必要があります。
リージョン | ホスティングされている場所 | トークン |
---|---|---|
アジア | シンガポール | asia |
オーストラリア | メルボルン | au |
カナダ(東) | モントリオール | cae |
中国本土(手順を参照してください) | 上海 | cn |
ヨーロッパ | アムステルダム | eu |
インド | チェンナイ | in |
日本 | 東京 | jp |
ロシア | モスクワ | ru |
ロシア(東) | ハバロフスク | rue |
南米 | サンパウロ | sa |
韓国 | ソウル | kr |
アメリカ(東) | ワシントンD.C. | us |
アメリカ(西) | サンノゼ | usw |
ダッシュボードでのリージョンのフィルタリング
アプリケーションごとに利用可能なPhoton Cloudのリージョンのリストを、ダッシュボードからすぐにフィルタリングできます。
ダッシュボードを開き、該当のアプリケーションの「管理」をクリックしてから、「編集」をクリックします。 ホワイトリストに登録されたリージョンのリストを入力できる、入力フィールドが以下のように表示されます。
- セミコロンで区切られたリージョントークン(例:「eu;us」)の文字列のみが、リストとして許可されます。
- リージョントークンは大文字・小文字が区別され、こちらで定義されます。
- 定義されていない、または認識されていないリージョントークンはリストから無視されます。
- 空 (「」) または不正な形式の文字列(例 「;;;」)は空のリストを意味します。
- 空のリストとは、利用可能なすべてのリージョンが許可されていることを意味します。
確認して保存すると、それ以降はオペレーション GetRegions
はフィルタリングされたリージョンのリストのみを返します。
このため、クライアントはそのリストから選択する必要があります。ただし、クライアントは利用可能なリージョンに明示的に接続することも可能です。
ダッシュボードの更新が反映されるには、最大で10分間かかる点を考慮してください。
中国本土のリージョンの使用
ファイアウォールによってトラフィックがブロックされる可能性があるため、中国ローカルのPhotonネームサーバーを使用する必要があります。 中国のPhotonネームサーバーは「ns.photonengine.cn」 です。
中国本土外からクライアントに接続しても、良い結果は得られません。 また、Photonサーバーから中国本土外のサーバーへの接続(たとえば、カスタム認証、Webhook、WebRPCなどで)は信頼性が高くありません。
法的な理由から、中国向けには個別のビルドが必要となります。また、弊社は各ビルドに個別のAppIDを使用することを推奨しています。 たとえば、ビルドごとに(任意の)コンパイル条件を使用してAppIDやPhotonネームサーバーを変更できます。
中国マーケット用に特別なビルドを作成するには、お使いのクライアントSDKの手順を参照してください。
void ConnectToChina()
{
PhotonNetwork.PhotonServerSettings.AppSettings.FixedRegion = "cn";
PhotonNetwork.PhotonServerSettings.AppSettings.UseNameServer = true;
PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime = "ChinaPUNAppId"; // TODO: replace with your own AppId
PhotonNetwork.PhotonServerSettings.AppSettings.Server = "ns.photonengine.cn";
PhotonNetwork.ConnectUsingSettings();
}