PUN Classic (v1)、PUN 2 和 Bolt 處於維護模式。 PUN 2 將支援 Unity 2019 至 2022,但不會添加新功能。 當然,您所有的 PUN & Bolt 專案可以用已知性能繼續運行使用。 對於任何即將開始或新的專案:請切換到 Photon Fusion 或 Quantum。

Regions

Photon Cloud為您提供全球連接,讓您在世界各地進行低延遲遊戲。

客戶端的初始連接會進入Photon名稱伺服器,該伺服器提供可用區域的列表。

每個地區都是完全獨立的,由一個主伺服器(用於匹配)和遊戲伺服器(主持房間)組成。

photon cloud regions' connect flows
連接到Photon Cloud地區

下面是可用區域的完整列表。 在介面上,您可以定義哪些區域對客戶可用。

可用地區

Photon Cloud在多個地區都有伺服器,分布在世界各地的多個主持中心。

每個Photon Cloud區域都由一個”區域令牌”來標識。

可用區域和令牌的列表:

區域標記(或代碼)的字符串是不區分大小寫的。例子:"EU”或”eu”都可以接受,並且指的是同一個歐洲地區。

地區託管在令牌
亞洲新加玻asia
澳大利亞墨爾本au
中國大陸1 (查看說明)上海cn
歐洲阿姆斯特丹eu
印度欽奈in
香港香港hk
日本東京jp
South AfricaJohannesburgza
南美洲聖保羅sa
韓國首爾kr
TurkeyIstanbultr
United Arab EmiratesDubaiuae
美國東部華盛頓特區us
美國西部聖何塞usw
USA, South CentralDallasussc
1: 中國大陸需要單獨的 AppId 和訂閱。

介面區域過濾

您可以直接從介面上過濾每個應用程式的可用Photon Cloud區域列表。

photon cloud: regions whitelist
過濾Photon Cloud區域

進入介面,然後點擊所選應用程式的”管理",再點擊”編輯"。 您會發現一個輸入字段,您可以在那裡輸入白名單區域的列表,如下所示:

  • 允許的列表應該是一個由分號分隔的地區標記的字符串,例如”eu;us"。
  • 地區標記不區分大小寫,並被定義為這裡
  • 未定義或未識別的區域標記將從列表中被忽略。
  • 空("")或畸形的字符串(如";;;")表示空列表。
  • 空列表意味著所有可用的區域都被允許。

一旦您確認並保存,NameServer將只返回過濾後的區域列表。 因此,客戶應該從該列表中選擇。 考慮到介面的更新可能需要10分鐘。

如何選擇一個地區

美國的用戶如果連接到Photon Cloud美國地區,則延遲最低。簡單。

但是,如果您的用戶來自世界各地,怎麼辦?

您可以

  • **a)**讓遊戲客戶端在不同的Photon Cloud地區進行ping,並預先選擇一個有最佳ping的地區,請閱讀我們的how-to
  • **b)**將客戶端的構建與地區挂鉤,因此來自不同地區的用戶連接到不同的Photon Cloud地區,或者
  • **c)**讓用戶在您的遊戲界面中選擇一個匹配的區域。

另外,您也可以**d)**讓所有用戶連接到同一個區域,如果較高的延遲對您的遊戲來說是可以接受的,例如任何”非實時”遊戲。

所有的Photon Cloud應用程式都可以在所有可用的地區工作,不需要任何額外的費用。 見定價。

Photon Cloud的介面可以讓您監控您的遊戲在各個地區的使用情況,並輕鬆升級或降級您的訂閱計劃。 進入您的介面。

如何在執行時選擇一個區域

如果您不使用”最佳區域”選項,您可能想讓您的玩家選擇連接哪個區域。 這可以幫助降低玩家之間的ping,如果他們連接到一個共同的附近區域,或者只是想加入一個在特定區域遊戲朋友的會議。

區域選擇只能在Photon Bolt執行時進行,而且必須在初始化PhotonPlatform之前執行。 我們在UdpKit.Platform.Photon.PhotonRegion類別中預定義了一個可用區域的列表,您可以用它來列出區域。 在下面的片段中,我們展示了如何在執行時改變目標區域:

C#

public class Menu : Bolt.GlobalEventListener
{
    // 目標區域
    private static int currRegion = 0;

    // 可用區域的列表
    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)
        {
            // 根據索引獲取當前的區域
            var targetRegion = PhotonRegion.GetRegion(availableRegions[currRegion]);

            // 更新目標區域
            BoltRuntimeSettings.instance.UpdateBestRegion(targetRegion);

            // 記錄更新內容
            Debug.LogFormat("Update region to {0}", targetRegion.Name);

            // 下次我們使用下一個區域
            currRegion++;

            // 返回到0
            if (currRegion == availableRegions.Length)
            {
                currRegion = 0;
            }

            // 重要
            // 再次初始化Photon平台
            // 這將更新內部緩存區域
            BoltLauncher.SetUdpPlatform(new PhotonPlatform());
        }
        else
        {
            BoltLog.Error("Bolt is running, you can't change region while runnning");
        }
    }
}

正如您所看到的,每次我們呼叫UpdateRegion(),它將在列表availableRegions中挑選下一個區域,並使用BoltRuntimeSettings.instance.UpdateBestRegion方法來更新要使用的區域。 請記住,您需要重新初始化平台,因為區域被緩存了,如果您不重新創建它,就不會改變。

使用中國大陸地區

您需要為您的Photon應用申請進入中國大陸地區的權限。向我們發送電子郵件,以便我們為您的應用ID解鎖。
您不能通過我們的網站訂閱在中國大陸地區使用的付費計劃。 請通過電子郵件與我們聯繫,以獲得任何訂閱的報價。

Photon名稱伺服器必須是中國本地的,否則防火牆可能會阻止流量。 中國的Photon名稱伺服器是”ns.photonengine.cn"。

與中國大陸以外的客戶連接,很可能不會產生好的結果。 另外,從Photon伺服器連接到中國大陸以外的伺服器(如自定義認証、WebHooks、WebRPCs)可能不可靠。

重要:在當前階段,您通過介面對您的應用程式所做的更改不會自動反映在中國的應用程式緩存中。 如果您在那裡有更新請求,請通過電子郵件告訴我們。

另外,出於法律原因,您需要為中國單獨構建一個應用程式,我們建議使用一個單獨的AppId。 例如,使用一個編譯條件(由您選擇)來改變AppId和Photon名稱伺服器,取決於構建。

請按照您的客戶端SDK的說明,為中國市場制作一個特殊的版本。

Back to top