リージョン
Photon Cloudは、世界中で低レイテンシのゲームを実行するための、グローバルな通信基盤を提供します。 これは、様々なリージョンでサーバーをホスティングすることで実現されています。
利用可能なリージョンは、プロジェクトの運用期間を通じて変わる可能性があります。クライアントは、Photonのネームサーバーから最新のリージョンのリストを取得できます。
各リージョンは、他のリージョンと完全に分離されています。リージョンは、マスターサーバー(マッチメイキング用)とゲームサーバー(ルームのホスト)で構成されます。
利用可能なリージョンのリストは、製品ごと(Fusion、Quantum、Chatなど)に異なります。 リージョン許可リストによって、AppIdごとにどのリージョンを利用可能にするかを定義することができます(後述)。
利用可能なリージョン
Photon Cloudのサーバーは、世界中の複数のホスティングセンターに分散しています。
Photon Cloudの各リージョンは「リージョントークン」で識別されます。
リージョン | ホスティング場所 | トークン |
---|---|---|
アジア | シンガポール | asia |
中国本土 (こちらをご覧ください) | 上海 | cn |
日本 | 東京 | jp |
ヨーロッパ | アムステルダム | eu |
南米 | サンパウロ | sa |
韓国 | ソウル | kr |
アラブ首長国連邦 | ドバイ | uae |
アメリカ(東) | ワシントンD.C. | us |
アメリカ(西) | サンノゼ | usw |
リージョン許可リスト
Photon Cloudの利用可能なリージョンのリストは、アプリケーションごとに、ダッシュボードから直接オンザフライでフィルタリングできます。
ダッシュボードの該当アプリケーションの管理画面を開き、リージョン許可リストの「編集」をクリックしてください。すると、許可するリージョンのリストを入力できる入力欄が表示されます。
- 許可リストは、セミコロンで区切られたリージョントークンの文字列(例:"eu;us")です
- リージョントークンは、こちらで定義されていて、大文字と小文字を区別しません
- 定義されていない/認識できないリージョントークンは、リストから無視されます
- 空("")または不正な文字列(例:";;;")は、空リストになります
- 空リストは、全ての利用可能なリージョンが許可されます
許可リストを入力して保存すると、ネームサーバーはフィルタリングされたリージョンのリストのみを返すようになり、クライアントはそのリストからリージョンを選択することになります。 ダッシュボードの更新が反映されるまで、最大10分かかることを考慮してください。
リージョンの選択方法
アメリカにいるユーザーは、Photon Cloud USリージョンに接続すれば、レイテンシは最小になります。それだけなら簡単です。
では、世界中にユーザーがいる場合はどうすれば良いでしょう?
その場合は、以下のいずれかを選択できます。
- a) 様々なPhoton Cloudリージョンにpingを送信し、最適なリージョンをあらかじめクライアントに選択させる(こちらをご覧ください)
- b) リージョンごとのビルドを配布して、異なる地域のユーザーを異なるPhoton Cloudリージョンに接続させる
- c) ゲームのUI内で、リージョンをユーザーに選択させる
- d) 高レイテンシが許容されるゲーム(それほどリアルタイムではないゲーム)なら、全てのユーザーを同一のリージョンに接続させる
Photon Cloudを使用するアプリケーションは、全ての利用可能なリージョンで動作し、追加料金はかかりません。価格プランをご覧ください。
Photon Cloudのダッシュボードでは、各リージョンでのゲームの利用状況をモニタリングでき、簡単にプランをアップグレード/ダウングレードすることができます。
実行時にリージョンを選択する方法
PhotonAppSettings
またはコードでリージョンが設定されていない場合、デフォルトでFusionはベストリージョンへの接続を試みます。
これは起動時に処理されて、全ての利用可能なリージョンにpingを送信し、最小pingのリージョンへ接続します。
ベストリージョンは、必ず同じリージョンが選択されるとは限りません。pingが近かったり全く同じpingを返すリージョンが、ランダムに選択されることがあります。
ベストリージョン機能を使用せずに、ランタイムでプレイヤーにリージョンを選択させることも可能です。 プレイヤー同士で共通のリージョンに接続したり、特定のリージョンで遊んでいるフレンドのセッションに参加したりすることができるため、プレイヤー間のpingを下げるのに役立ちます。
リージョンは、NetworkRunner
を実行する前のみ選択できます。既に特定のリージョンに接続した後に、リージョンを変えることはできません。
以下のスニペットは、ランタイムでNetworkRunner
から特定のリージョンに接続する方法を示しています。
C#
public class FusionInit : MonoBehaviour {
// ...
// Start a NetworkRunner with a Game Mode and connect to the specified Region
public Task<StartGameResult> StartSimulation(NetworkRunner runner, GameMode gameMode, string region) {
var appSettings = BuildCustomAppSetting(region);
return runner.StartGame(new StartGameArgs() {
// ...
GameMode = gameMode,
CustomPhotonAppSettings = appSettings
});
}
private AppSettings BuildCustomAppSetting(string region, string customAppID = null, string appVersion = "1.0.0") {
var appSettings = PhotonAppSettings.Instance.AppSettings.GetCopy();
appSettings.UseNameServer = true;
appSettings.AppVersion = appVersion;
if (string.IsNullOrEmpty(customAppID) == false) {
appSettings.AppIdFusion = customAppID;
}
if (string.IsNullOrEmpty(region) == false) {
appSettings.FixedRegion = region.ToLower();
}
// If the Region is set to China (CN),
// the Name Server will be automatically changed to the right one
// appSettings.Server = "ns.photonengine.cn";
return appSettings;
}
}
中国本土のリージョンを使用
ファイアウォールによってトラフィックがブロックされる可能性があるため、中国ローカルのPhotonネームサーバーを使用する必要があります。 中国のPhotonネームサーバーは「ns.photonengine.cn」です。
中国本土外からクライアントに接続しても、良い結果は得られません。 また、Photonサーバーから中国本土外のサーバーへの接続(例:カスタム認証、WebHook、WebRPCなど)の信頼性は高くありません。
また、法的な理由から、中国向けには個別のビルドが必要となり、個別のAppIdの使用を推奨します。 例えば、ビルドごとにAppIdやPhotonネームサーバーを変更するために、(任意の)条件コンパイルを使用してください。
中国マーケット用に特別なビルドを作成するには、お使いのクライアントSDKのマニュアルをご覧ください。
Fusion
PhotonAppSettingsの使用
コードの使用
C#
public class FusionInit : MonoBehaviour {
// ...
async void ConnectToChina()
{
var runner = BuildNetworkRunnerInstance();
// Start new Runner with the Host Migration Token
var result = await StartSimulation(
runner,
GameMode.AutoHostOrClient, // Or any other GameMode
"cn" // Select China Region
);
// Check results as usual
if (result.Ok == false) {
Debug.LogWarning(result.ShutdownReason);
} else {
Debug.Log("Done");
}
}
}
Back to top