This document is about: FUSION 1
SWITCH TO

Regions

The Photon Cloud provides low latency gaming globally by hosting servers in various regions.

Clients get the list of regions from our Photon Name Servers. Over the lifetime of a project, new regions may be added or old ones may be deprecated and removed.

Each region is completely separate from the others and consists of a Master Server (for matchmaking) and Game Servers (hosting rooms).

Below is an outline of the client workflow:

(1) Clients retrieve a list of available regions from the Photon Name Servers.

(2) The client selects one of the available regions — either automatically based on the lowest ping or via manual player choice — and connects to the region's Master Server. The Master Server is responsible for matchmaking and creating or joining a room on a Game Server within that region.

(3) Finally, the client connects to the designated Game Server in order to join the room. This Game Server is located in the same region as the Master Server the client connected to in step (2).

Photon Cloud Regions' Connect Flows
Connect to Photon Cloud regions

With the Region Allowlist, you can define which regions should be available per AppId (see below).

Available Regions

The Photon Cloud consists of servers in several regions, distributed across multiple hosting centers worldwide.

Each Photon Cloud region is identified by a "region code", which is a case insensitive, short string.
For example, "EU" or "eu" are both accepted and refer to the same Europe region.

The lists below indicate the location of the hosting center and the region code for each region.

Photon Cloud for Gaming

The Photon Products Quantum, Fusion, Voice, Realtime and PUN are available to the Photon Cloud for Gaming in the following regions.

RegionHosted inCode
AsiaSingaporeasia
AustraliaSydneyau
Canada, EastMontrealcae
Chinese Mainland (See Instructions)Shanghaicn
EuropeAmsterdameu
Hong KongHong Konghk
IndiaChennaiin
JapanTokyojp
South AfricaJohannesburgza
South AmericaSao Paulosa
South KoreaSeoulkr
TurkeyIstanbultr
United Arab EmiratesDubaiuae
USA, EastWashington D.C.us
USA, WestSan Joséusw
USA, South CentralDallasussc

Photon Chat is available in the following regions:

RegionHosted inCode
AsiaSingaporeasia
EuropeAmsterdameu
USA, EastWashington D.C.us
Chinese Mainland (See Instructions)Shanghaicn

Photon Industries Premium Cloud

The Photon Products Quantum, Fusion, Voice, Realtime and PUN are available to the Photon Industries Premium Cloud in the following regions.

RegionHosted inCode
AsiaSingaporeasia
EuropeAmsterdameu
IndiaChennaiin
JapanTokyojp
South KoreaSeoulkr
USA, EastWashington D.C.us

Further regions for the Photon Industries Premium Cloud are planned: Australia (AU), South America (SA), US West (USW), South Africa (ZA).

Photon Chat is available in the following regions:

RegionHosted inCode
USA, EastWashington D.C.us

Regions for China for Gaming/Industries

There are special conditions for using the Photon Cloud Region Chinese Mainland:

  • Access must be unlocked (see below)
  • Photon Voice is not available in China
  • 20CCU for development is free (non commercial use)
  • Only a 500CCU subscription available on Photon Cloud
  • Large setups need custom agreements

The Photon Products Quantum, Fusion, Realtime, PUN and Chat are available to the Photon Cloud in the following regions:

RegionHosted inCode
China MainlandShanghaicn

Region Allowlist

The Region Allowlist enables you to customize the available regions per application directly from the dashboard. Clients using the Best Region feature, will adapt automatically.

By using using more or less regions, you balance the quality of service (roundtrip times are better, when there is a region close to players) versus the matchmaking experience (less regions mean more players per region).

To define the regions per app, open the dashboard, click "Manage" for a chosen application and then click "Edit Allowlist".
You will find an input field to enter the list of allowed regions as follows:

  • the available regions are listed above per SDK and sometimes separately for the Industries Circle.
  • the allowlist must be a string of region codes separated by semicolons. e.g. "eu;us".
  • region codes are case insensitive.
  • undefined or unrecognized region codes will be ignored from the list.
  • empty ("") or malformed string (e.g. ";;;") means all available regions are allowed.

Within 10 minutes of a change (confirm and save), the Name Servers will send the filtered list to connecting clients.
To avoid conflicts on the client side, connect to the "Best Region" by ping or make sure to pick a region received with the regions list.

Note: Changing the available regions for a popular app will affect the Peak CCUs in multiple regions, which is the basis for subscription fees. Adjust the subscription plan as needed to avoid the more expensive overage fees. Reducing the subscription is perfectly fine when the switch settled down.

How To Choose A Region

Users in the US have the lowest latency if connected to the Photon Cloud US region. Easy.


But what if you have users from all over the world?

Options are..

  • a) let the game client ping the different Photon Cloud regions and pre-select the one with the best ping, read our how to.
  • b) distribute client builds tied to a region, so users from different regions connect to different Photon Cloud regions or
  • c) let the user choose a matching region from within your game`s UI.
  • d) let all users connect to the same region if the higher latency is acceptable for your gameplay.

All Photon Cloud apps are working in all available regions without any extra charge.

See pricing.

Photon Cloud's dashboard lets you monitor the usage of your game in each region and easily upgrade or downgrade your subscription plan.

Go to your dashboard.

Best Region Considerations

"Best Region" option is not deterministic.
Sometimes it may be "random" due to little variations or exact same ping calculations.

Theoretically, you could:

  • have the same exact ping to multiple regions from the same device. So it is random, if you end up with different regions on clients connected to the same network.
  • different ping values for the same region on different devices (or different retries on the same device) connected to the same network.

For instance, in the case of "us" and "usw" (or "ru" and "rue"), you could either make use of the online regions allowlist to select the ones you want and drop the others or connect to an explicit region.

To debug, set the logging level to "Info" and clear the "current best region" (in PUN: PhotonNetwork.BestRegionSummaryInPreferences = null). Have a look at the details or send us the log via mail.

How To Select A Region At Runtime

By default, if no Region is set either on the PhotonAppSettings or via code, Fusion will try to connect to the Best Region.
Meaning that at the start-up process, it will ping all available Regions and connect to the one with the lowest ping.
Keep in mind that Best Region is not deterministic and sometimes it may be "random" due to little variations or exact same ping calculations.

If the Best Region feature is not desired, it is possible to let the player choose which Region to connect to at runtime.
This can help to lower the ping between players if they are connecting to a common Region or just want to join a Session with friends that are playing on a specific Region.

To get a list of available regions, Fusion provides the NetworkRunner.GetAvailableRegions() method.
It returns a list of Fusion.RegionInfo objects, which contain the region's name and ping value. This can be used to sort the list by the lowest ping or let the player choose the desired region.

The Region selection can only be done when the NetworkRunner is not running, as this can't be changed while it is already connected to a particular Region.
In the following snippet, it is shown how a NetworkRunner can use a custom Region in runtime:

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;
    }
}

Using The Chinese Mainland Region

You need to request access to the Chinese Mainland region for your Photon application. Send us an email so we could unlock it for your AppID.
On our Dashboard, you can not subscribe to paid plans to be used in the Chinese Mainland region. Reach out to us by email to receive a quote for any subscription: hello@photonengine.com.

The Photon Name Server has to be local to China, as the firewall might block the traffic otherwise.
The Chinese Photon Name Server is "ns.photonengine.cn".

Connecting with clients from outside of China mainland will most likely not produce good results.
Also, connecting from the Photon servers to servers outside of China mainland (e.g. for Custom Authentication, WebHooks, WebRPCs) might not be reliable.

Important: in the current phase, changes you make to your app via your dashboard are not automatically reflected in the app caches for China. Let us know by email if you have an update request there.

For legal reasons, you need a separate build for China and we recommend using a separate AppId with it.
For example, use a compile condition (of your choice) to change the AppId and the Photon Name Server depending on the build.

Follow the instructions corresponding to your client SDK to make a special build for the Chinese market.

Fusion

Using PhotonAppSettings

Fusion: PhotonAppSettings for China
Fusion: PhotonAppSettings for China

Using Code

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