This document is about: PUN 1
SWITCH TO

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地區

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

在PUN中設置區域

ConnectToBestCloudServer(string gameVersion) 將您的客戶端連接到ping值最低的主伺服器。ping所有Photon Cloud主伺服器的結果都保存在PlayerPrefs中。

使用OverrideBestCloudServer(CloudRegionCode region)來明確設置另一個區域為”最佳”區域。

您可以作為編輯PhotonServerSettings資產的一部分來設置該區域。 然後連接到一個區域就變得非常簡單,只需呼叫PhotonNetwork.ConnectUsingSettings()

關於使用PUN的其他設置訊息,請參考Initial Setup doc.

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

最佳區域考慮因素

"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 its 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 whitelist to select the ones you want and drop the others or connect to an explicit region.

可用地區

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

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

為了在客戶端的”連接”方法中傳遞區域令牌,請呼叫PhotonNetwork.ConnectToRegionMaster(regionCode, gameVersion)

可用區域和令牌的列表:

區域標記(或代碼)的字符串是不區分大小寫的。例子:"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的介面可以讓您監控您的遊戲在各個地區的使用情況,並輕鬆升級或降級您的訂閱計劃。 進入您的介面。

使用中國大陸地區

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

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

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

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

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

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

PUN經典

  1. 將AppId設置為已解鎖中國地區的應用程式。 如果您想使用同一個專案項目並有不同的構建,您可以這樣做:

    C#

    void Awake()
    {
    // TODO:用您自己的編譯條件代替
    #if CHINA
        PhotonNetwork.PhotonServerSettings.AppID ="ChinaPUNAppId"; // TODO:替換成您自己的AppId
    #else
        PhotonNetwork.PhotonServerSettings.AppID ="nonChinaPUNAppId"; // TODO:替換成您自己的AppId
    #endif
    }
    
  2. 打開”NetworkingPeer.cs”文件,將NameServerHost設置為”ns.photonengine.cn":

    C#

        // TODO:用您自己的編譯條件來代替
        #if CHINA
            public const string NameServerHost = "ns.photonengine.cn";
        #else
            public const string NameServerHost = "ns.exitgames.com";
        #endif
    
  3. 更新CloudRegionCodeCloudRegionFlag,增加新的”CN"(或”cn")區域標誌,如下所示:

    C#

        public enum CloudRegionCode
        {
            // ...
        // TODO:用您自己的編譯條件來代替
        #if CHINA
            ///<summary>中國大陸,廣東地區</summary>
            cn = 13,
        #endif
        };
        [Flags]
        public enum CloudRegionFlag
        {
            // ...
        // TODO:用您自己的編譯條件來代替
        #if CHINA
            cn = 1 << 12,
        #endif
        };
    
  4. 使用PhotonNetwork.ConnectToRegion(CloudRegionCode.cn, gameVersion)連接到中國大陸地區。

    C#

            // TODO:用您自己的編譯條件代替
            #if CHINA
                PhotonNetwork.ConnectToRegion(CloudRegionCode.cn, gameVersion);
            #else
                // TODO:連接到任何其他地區
            #endif
    
Back to top