Regions
Photon Cloud為您提供全球連接,讓您在世界各地進行低延遲遊戲。
客戶端的初始連接會進入Photon名稱伺服器,該伺服器提供可用區域的列表。
每個地區都是完全獨立的,由一個主伺服器(用於匹配)和遊戲伺服器(主持房間)組成。
下面是可用區域的完整列表。
在介面上,您可以定義哪些區域對客戶可用。
可用地區
Photon Cloud在多個地區都有伺服器,分布在世界各地的多個主持中心。
每個Photon Cloud區域都由一個”區域令牌”來標識。
區域標記(或代碼)的字符串是不區分大小寫的。例子:"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的介面可以讓您監控您的遊戲在各個地區的使用情況,並輕鬆升級或降級您的訂閱計劃。
進入您的介面。
如何在執行時選擇一個區域
如果您不使用”最佳區域”選項,您可能想讓您的玩家選擇連接哪個區域。
這可以幫助降低玩家之間的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名稱伺服器必須是中國本地的,否則防火牆可能會阻止流量。
中國的Photon名稱伺服器是”ns.photonengine.cn"。
與中國大陸以外的客戶連接,很可能不會產生好的結果。
另外,從Photon伺服器連接到中國大陸以外的伺服器(如自定義認証、WebHooks、WebRPCs)可能不可靠。
另外,出於法律原因,您需要為中國單獨構建一個應用程式,我們建議使用一個單獨的AppId。
例如,使用一個編譯條件(由您選擇)來改變AppId和Photon名稱伺服器,取決於構建。
請按照您的客戶端SDK的說明,為中國市場制作一個特殊的版本。