リージョン
Photon Cloudは、世界中で低レイテンシのゲームを実行するための、グローバルな通信基盤を提供します。
これは、様々なリージョンでサーバーをホスティングすることで実現されています。
利用可能なリージョンは、プロジェクトの運用期間を通じて変わる可能性があります。クライアントは、Photonのネームサーバーから最新のリージョンのリストを取得できます。
各リージョンは、他のリージョンと完全に分離されています。リージョンは、マスターサーバー(マッチメイキング用)とゲームサーバー(ルームのホスト)で構成されます。
利用可能なリージョンのリストは、製品ごと(Fusion、Quantum、Chatなど)に異なります。
リージョン許可リストによって、AppIdごとにどのリージョンを利用可能にするかを定義することができます(後述)。
利用可能なリージョン
Photon Cloudは、いくつかのリージョンのサーバーで構成されており、世界中の複数のホスティングセンターに分散しています。
一部のリージョンのサーバーは、特定の製品やクライアントSDKにのみ対応しています。例えば、Fusionは日本リージョンを使用できますが、Chatは使用できません。
Photon Cloudの各リージョンは「リージョントークン」で識別され、大文字小文字を区別しない短い文字列です。例えば、「EU」と「eu」はどちらも有効で、同じヨーロッパリージョンを指します。
リージョン | ホスティング場所 | トークン |
---|---|---|
アジア | シンガポール | asia |
オーストラリア | シドニー | au |
カナダ(東) | モントリオール | cae |
中国本土 (こちらをご覧ください) | 上海 | cn |
ヨーロッパ | アムステルダム | eu |
香港 | 香港 | hk |
インド | チェンナイ | in |
日本 | 東京 | jp |
南アフリカ | ヨハネスブルグ | za |
南米 | サンパウロ | sa |
韓国 | ソウル | kr |
トルコ | イスタンブール | tr |
アラブ首長国連邦 | ドバイ | uae |
アメリカ(東) | ワシントンD.C. | us |
アメリカ(西) | サンノゼ | usw |
アメリカ(南中部) | ダラス | ussc |
リージョン許可リスト
いくつかの理由から、プレイヤーやユーザーが利用可能なリージョンを制限したいことがあります(後述)。
リージョン許可リストによって、アプリケーションごとに、ダッシュボードから有効なリージョンを編集できます。クライアント側の変更は不要です。
ダッシュボードを開き、アプリケーションの「詳細へ」をクリックした後、リージョン許可リストの「編集」をクリックしてください。
すると、許可するリージョンのリストを入力できる入力欄が表示されます。
- 有効なリージョンはSDKごとに定義されていて、Industries Circleでは異なることがあります
- 許可リストは、セミコロンで区切られたリージョントークンの文字列(例:"eu;us")です
- リージョントークンは、大文字と小文字を区別しません
- 定義されていない/認識できないリージョントークンは、リストから無視されます
- 空("")または不正な文字列(例:";;;")は、全ての利用可能なリージョンが許可されます
変更(入力後に保存)してから10分以内に、フィルタリングされたリストが、ネームサーバーに接続中のクライアントに送信されるようになります。
クライアント側とのコンフリクトを避けるため、Ping最小値の「ベストリージョン」に接続する、または受信したリージョンリストからリージョンを選択するようにしてください。
リージョンの選択方法
アメリカにいるユーザーは、Photon Cloud USリージョンに接続すれば、レイテンシは最小になります。それだけなら簡単です。
では、世界中にユーザーがいる場合はどうすれば良いでしょう?
その場合は、以下のいずれかを選択できます。
- a) 様々なPhoton Cloudリージョンにpingを送信し、最適なリージョンをあらかじめクライアントに選択させる(こちらをご覧ください)
- b) リージョンごとのビルドを配布して、異なる地域のユーザーを異なるPhoton Cloudリージョンに接続させる
- c) ゲームのUI内で、リージョンをユーザーに選択させる
- d) 高レイテンシが許容されるゲーム(それほどリアルタイムではないゲーム)なら、全てのユーザーを同一のリージョンに接続させる
Photon Cloudを使用するアプリケーションは、全ての利用可能なリージョンで動作し、追加料金はかかりません。価格プランをご覧ください。
Photon Cloudのダッシュボードでは、各リージョンでのゲームの利用状況をモニタリングでき、簡単にプランをアップグレード/ダウングレードすることができます。
実行時にリージョンを選択する方法
ベストリージョン
オプションを使用していない際に、接続するリージョンをプレイヤーに選択させたい場合があるかもしれません。
プレイヤーが共通の近くのリージョンに接続している場合には、これによってプレイヤー間のpingが低下したり、特定のリージョンでプレイしているフレンドのセッションに参加するのに役立つことがあります。
リージョン選択はPhoton Boltが実行して いない 場合にのみおこなわれ、またPhotonPlatform
が初期化される前に実行する必要があります。
弊社はUdpKit.Platform.Photon.PhotonRegion
クラス内の利用可能なリージョンのあらかじめ定義されたリストを破棄します。このクラスはリージョンをリスト化する際に使用できます。
以下のスニペットでは、実行時に対象リージョンを変更する方法を示します:
C#
public class Menu : Bolt.GlobalEventListener
{
// Target Region
private static int currRegion = 0;
// List of available Regions
private PhotonRegion.Regions[] availableRegions = new PhotonRegion.Regions[]
{
PhotonRegion.Regions.US,
PhotonRegion.Regions.USW,
PhotonRegion.Regions.JP,
PhotonRegion.Regions.EU,
PhotonRegion.Regions.SA
};
private void UpdateRegion()
{
if (BoltNetwork.IsRunning == false)
{
// Get the current Region based on the index
var targetRegion = PhotonRegion.GetRegion(availableRegions[currRegion]);
// Update the target region
BoltRuntimeSettings.instance.UpdateBestRegion(targetRegion);
// Log the update
Debug.LogFormat("Update region to {0}", targetRegion.Name);
// Next time we use the next region
currRegion++;
// Go back to 0
if (currRegion == availableRegions.Length)
{
currRegion = 0;
}
// IMPORTANT
// Initialize the Photon Platform again
// this will update the internal cached region
BoltLauncher.SetUdpPlatform(new PhotonPlatform());
}
else
{
BoltLog.Error("Bolt is running, you can't change region while runnning");
}
}
}
お分かりのとおり UpdateRegion()
を呼ぶと常に、リストavailableRegions
の次のリージョンが選択され、使用するリージョンがメソッドBoltRuntimeSettings.instance.UpdateBestRegion
を使ってアップデートされます。
リージョンはキャッシュされ、再作成しない限り変更されないため、プラットフォームを再初期化する必要がある点に留意してください。
中国本土のリージョンを使用
ファイアウォールによってトラフィックがブロックされる可能性があるため、中国ローカルのPhotonネームサーバーを使用する必要があります。
中国のPhotonネームサーバーは「ns.photonengine.cn」です。
中国本土外からクライアントに接続しても、良い結果は得られません。
また、Photonサーバーから中国本土外のサーバーへの接続(例:カスタム認証、WebHook、WebRPCなど)の信頼性は高くありません。
また、法的な理由から、中国向けには個別のビルドが必要となり、個別のAppIdの使用を推奨します。
例えば、ビルドごとにAppIdやPhotonネームサーバーを変更するために、(任意の)条件コンパイルを使用してください。
中国マーケット用に特別なビルドを作成するには、お使いのクライアントSDKのマニュアルをご覧ください。
Back to top