This document is about: FUSION 1
SWITCH TO

リージョン

Photon Cloudは、様々なリージョンでサーバーをホストすることで、世界中で低遅延のゲームを実現します。

クライアントは、Photonネームサーバーからリージョンのリストを取得できます。プロジェクトの運用期間を通じて、新しいリージョンが追加されたり、古いリージョンが廃止・削除されたりする可能性があります。

各リージョンは完全に独立していて、マスターサーバー(マッチメイキング用)とゲームサーバー(ルームのホスト)で構成されます。

クライアントのワークフローの概略は以下の通りです。

(1) クライアントは、Photonネームサーバーから利用可能なリージョンのリストを取得する。

(2) 利用可能なリージョンの中から一つを選択(pingに基づいて自動で選択/プレイヤーが手動で選択)して、そのリージョンのマスターサーバーに接続します。マスターサーバーはマッチメイキングを担当し、同じリージョンのゲームサーバー上のルームの作成/参加を行います。

(3) 最後に、クライアントはルームに参加するために特定のゲームサーバーへ接続します。このゲームサーバーは、(2)でクライアントが接続したマスターサーバーと同じリージョンにあります。

Photon Cloud Regions' Connect Flows
Photon Cloudリージョンへの接続

リージョン許可リストによって、AppIdごとに利用可能なリージョンを定義できます(後述)。

利用可能なリージョン

Photon Cloudは、複数のリージョンのサーバーで構成されており、世界中のホスティングセンターに分散しています。

Photon Cloudの各リージョンは「リージョンコード」で識別され、大文字小文字を区別しない短い文字列です。
例えば、「EU」「eu」はどちらも有効で、同じヨーロッパリージョンを指します。

ホスティングセンターの場所と、各リージョンのリージョンコードを、以下のリストに示します。

Photon Cloud for Gaming

Photon製品のQuantum・Fusion・Voice・Realtime・PUNは、Gaming向けのPhoton Cloudの以下のリージョンを利用可能です。

リージョン場所コード
アジアシンガポールasia
オーストラリアシドニーau
東カナダモントリオールcae
中国本土 (こちらをご覧ください)上海cn
ヨーロッパアムステルダムeu
香港香港hk
インドチェンナイin
日本東京jp
南アフリカヨハネスブルグza
南アメリカサンパウロsa
韓国ソウルkr
トルコイスタンブールtr
アラブ首長国連邦ドバイuae
東アメリカワシントンD.C.us
西アメリカサンノゼusw
中南米ダラスussc

Photon Chatは、以下のリージョンを利用可能です。

リージョン場所コード
アジアシンガポールasia
ヨーロッパアムステルダムeu
東アメリカワシントンD.C.us
中国本土(こちらをご覧ください)上海cn

Photon Industries Premium Cloud

Photon製品のQuantum・Fusion・Voice・Realtime・PUNは、Industries向けのPremium Cloudの以下のリージョンを利用可能です。

リージョン場所コード
アジアシンガポールasia
ヨーロッパアムステルダムeu
インドチェンナイin
日本東京jp
韓国ソウルkr
東アメリカワシントンD.C.us

Industries向けのPremium Cloudに追加予定のリージョン:オーストラリア(AU)、南アメリカ(SA)、西アメリカ(USW)、南アフリカ(ZA)

Photon Chatは、以下のリージョンを利用可能です。

リージョン場所コード
東アメリカワシントンD.C.us

中国リージョンのGaming/Industries

中国本土リージョンのPhoton Cloudを使用するには特別な条件があります。

  • アクセス解除が必要(後述
  • 中国でPhoton Voiceは利用不可
  • 開発用20CCUは無料(非商用)
  • Photon Cloudは500CCUのサブスクリプションのみが利用可能
  • それ以上のセットアップには特別な同意が必要

Photon製品のQuantum・Fusion・Voice・Realtime・PUN・Chatは、以下のリージョンのPhoton Cloudを利用可能です。

リージョン場所コード
中国本土上海cn

リージョン許可リスト

リージョン許可リストによって、アプリケーションごとにダッシュボードから有効なリージョンを編集できます。ベストリージョン機能を使用するクライアントは、自動的にそれに適応します。

リージョンの増減によって、サービス品質(プレイヤーに近いリージョンがある場合は、応答時間が改善する)と、マッチメイキング体験(リージョンを減らせば、リージョンごとのプレイヤー数が増える)のバランスを調整できます。

アプリごとに利用可能なリージョンを定義するには、ダッシュボードを開き、アプリケーションの「詳細へ」をクリックし、リージョン許可リストの「編集」をクリックしてください。
すると、許可するリージョンのリストを入力できる入力欄が表示されます。

  • 有効なリージョンはSDKごとに定義されていて、Industries Circleでは異なることがあります
  • 許可リストは、セミコロンで区切られたリージョントークンの文字列(例:"eu;us")です
  • リージョンコードは、大文字と小文字を区別しません
  • 定義されていない/認識できないリージョンコードは、リストから無視されます
  • 空("")または不正な文字列(例:";;;")は、全ての利用可能なリージョンが許可されます

変更(入力後に保存)してから10分以内に、ネームサーバーはフィルタリングされたリストを接続中のクライアントに送信するようになります。
クライアント側とのコンフリクトを避けるため、最小Pingの「ベストリージョン」に接続するか、受信したリージョンリストからリージョンを選択するようにしてください。

備考:人気のあるアプリで利用可能なリージョンを変更すると、複数のリージョンのピークCCUに影響し、利用料金にも影響します。必要に応じてプランを調整して、高額な追加料金を避けてください。プランのダウングレードは、切り替えが落ち着いた時に行うと良いでしょう。

リージョンの選択方法

アメリカにいるユーザーは、Photon Cloud USリージョンに接続すれば、レイテンシは最小になります。それだけなら簡単です。


では、世界中にユーザーがいる場合はどうすれば良いでしょう?

その場合は、以下のいずれかを選択できます。

  • a) 様々なPhoton Cloudリージョンにpingを送信し、最適なリージョンをあらかじめクライアントに選択させる(こちらをご覧ください)
  • b) リージョンごとのビルドを配布して、異なる地域のユーザーを異なるPhoton Cloudリージョンに接続させる
  • c) ゲームのUI内で、リージョンをユーザーに選択させる
  • d) 高レイテンシが許容されるゲーム(それほどリアルタイムではないゲーム)なら、全てのユーザーを同一のリージョンに接続させる

Photon Cloudを使用するアプリは、すべての利用可能なリージョンで動作し、追加料金はかかりません。

価格プランはこちらです。

Photon Cloudのダッシュボードでは、各リージョンでのゲームの利用状況をモニタリングでき、簡単にプランをアップグレード/ダウングレードすることができます。

ダッシュボードはこちらです。

ベストリージョンの検討

「ベストリージョン」オプションは、決定的なものではありません。
リージョンにあまり差がない場合や、まったく同じping計算がされた場合には、「ランダム」になる可能性があります。

理論上は以下の設定が可能です:

  • 同一デバイスから、複数リージョンに対してまったく同じpingを設定します。同じネットワークに接続したクライアント上で異なるリージョンに接続する場合には、ランダムになります。
  • 同じネットワークに接続した異なるデバイス上(または同じデバイス上で異なる試行を実行する)で、同じリージョンに対して異なるping値を設定します。

たとえば、「us」と「usw」(または「ru」と「rue」)の場合、オンラインリージョンの許可リストを使用してリージョンを選択するか、または明示的にリージョンに接続します。

デバッグをおこなうには、ロギングレベルを「情報」に設定し、「現在のベストリージョン」をクリアしてください(PUNの場合:PhotonNetwork.BestRegionSummaryInPreferences = null)。詳細を参照するか、またはメールでログを送信してください。

実行時にリージョンを選択する方法

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 FusionAppSettings BuildCustomAppSetting(string region, string customAppID = null, string appVersion = "1.0.0") {

        var appSettings = PhotonAppSettings.Global.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;
    }
}

Get Available Regions At Runtime

It is possible to get a list of available regions at runtime using and awaiting the static method NetworkRunner.GetAvailableRegions(),
An example of use is shown below.

C#

public Dropdown Dropdown;
  
private async void RefreshRegionDropdown() {
    _tokenSource = new CancellationTokenSource();
    
    var regions = await NetworkRunner.GetAvailableRegions(cancellationToken: _tokenSource.Token);
    Dropdown.options.Clear();
    Dropdown.AddOptions(regions.Select(reg => $"{reg.RegionCode} = {reg.RegionPing}").ToList());
}

NOTE: A NetworkRunner must exist in the scene.

中国本土のリージョンを使用

まず、Photonアプリケーション用に、中国本土リージョンへのアクセスをリクエストする必要があります。弊社宛にメールでご連絡ください。お客様のAppID用に解除します。
弊社のウェブサイトから、中国本土リージョンで使用される有償プランに申し込むことはできません。 有償プランの見積りについては、メールでご連絡ください。

ファイアウォールによってトラフィックがブロックされる可能性があるため、中国ローカルのPhotonネームサーバーを使用する必要があります。
中国のPhotonネームサーバーは「ns.photonengine.cn」です。

中国本土外からクライアントに接続しても、良い結果は得られません。
また、Photonサーバーから中国本土外のサーバーへの接続(例:カスタム認証、WebHook、WebRPCなど)の信頼性は高くありません。

重要:現段階では、ダッシュボードでアプリケーションに変更を加えても、中国のアプリケーションのキャッシュに自動的に反映されません。 アップデートをご希望の場合には、弊社宛にメールでご連絡ください。

また、法的な理由から、中国向けには個別のビルドが必要となり、個別のAppIdの使用を推奨します。
例えば、ビルドごとにAppIdやPhotonネームサーバーを変更するために、(任意の)条件コンパイルを使用してください。

中国マーケット用に特別なビルドを作成するには、お使いのクライアントSDKのマニュアルをご覧ください。

Fusion

PhotonAppSettingsの使用

Fusion: PhotonAppSettings for China
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