Regions
Photon Cloud為您提供全球連接,讓您在世界各地進行低延遲遊戲。
客戶端的初始連接會進入Photon名稱伺服器,該伺服器提供可用區域的列表。
每個地區都是完全獨立的,由一個主伺服器(用於匹配)和遊戲伺服器(主持房間)組成。
下面是可用區域的完整列表。
在介面上,您可以定義哪些區域對客戶可用。
在PUN中設置區域
ConnectToBestCloudServer(string gameVersion)
將您的客戶端連接到ping值最低的主伺服器。ping所有Photon Cloud主伺服器的結果都保存在PlayerPrefs中。
使用OverrideBestCloudServer(CloudRegionCode region)
來明確設置另一個區域為”最佳”區域。
您可以作為編輯PhotonServerSettings資產的一部分來設置該區域。
然後連接到一個區域就變得非常簡單,只需呼叫PhotonNetwork.ConnectUsingSettings()
。
關於使用PUN的其他設置訊息,請參考Initial Setup doc.
最佳區域考慮因素
"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 Africa | Johannesburg | za |
南美洲 | 聖保羅 | sa |
韓國 | 首爾 | kr |
Turkey | Istanbul | tr |
United Arab Emirates | Dubai | uae |
美國東部 | 華盛頓特區 | us |
美國西部 | 聖何塞 | usw |
USA, South Central | Dallas | ussc |
介面區域過濾
您可以直接從介面上過濾每個應用程式的可用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名稱伺服器必須是中國本地的,否則防火牆可能會阻止流量。
中國的Photon名稱伺服器是”ns.photonengine.cn"。
與中國大陸以外的客戶連接,很可能不會產生好的結果。
另外,從Photon伺服器連接到中國大陸以外的伺服器(如自定義認証、WebHooks、WebRPCs)可能不可靠。
另外,出於法律原因,您需要為中國單獨構建一個應用程式,我們建議使用一個單獨的AppId。
例如,使用一個編譯條件(由您選擇)來改變AppId和Photon名稱伺服器,取決於構建。
請按照您的客戶端SDK的說明,為中國市場制作一個特殊的版本。
PUN經典
將AppId設置為已解鎖中國地區的應用程式。
如果您想使用同一個專案項目並有不同的構建,您可以這樣做:C#
void Awake() { // TODO:用您自己的編譯條件代替 #if CHINA PhotonNetwork.PhotonServerSettings.AppID ="ChinaPUNAppId"; // TODO:替換成您自己的AppId #else PhotonNetwork.PhotonServerSettings.AppID ="nonChinaPUNAppId"; // TODO:替換成您自己的AppId #endif }
打開”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
更新
CloudRegionCode
和CloudRegionFlag
,增加新的”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 };
使用
PhotonNetwork.ConnectToRegion(CloudRegionCode.cn, gameVersion)
連接到中國大陸地區。C#
// TODO:用您自己的編譯條件代替 #if CHINA PhotonNetwork.ConnectToRegion(CloudRegionCode.cn, gameVersion); #else // TODO:連接到任何其他地區 #endif